Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11656
Последний выпуск: 19.06.2015

Как поместить Progress Bar на Status Bar

Для формы:

object Form1: TForm1
  Left = 191
  Top = 108
  Width = 226
  Height = 140
  Caption = 'Form1'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object StatusBar1: TStatusBar
    Left = 0
    Top = 94
    Width = 218
    Height = 19
    Panels = <
      item
        Width = 50
      end>
    SimplePanel = False
    OnResize = StatusBar1Resize
  end
  object Button1: TButton
    Left = 18
    Top = 30
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
end

Это unit1.cpp

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//--------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ProgressBar = new TProgressBar ( StatusBar1 );
    ProgressBar->Parent = StatusBar1;

    ProgressBar->Position = 0;
    ProgressBar->Visible = false;
}
//--------------------------------------------------------------------

void __fastcall TForm1::StatusBar1Resize(TObject *Sender)
{
    int Size = StatusBar1->Width;
    for ( int i = 1; i < StatusBar1->Panels->Count; i++ )
      Size -= StatusBar1->Panels->Items[i]->Width;

    //resize the first panel based on the form width
    StatusBar1->Panels->Items[ 0 ]->Width = Size;
    RECT Rect;
    StatusBar1->Perform ( SB_GETRECT,  0,  (LPARAM)&Rect );

    ProgressBar->Top = Rect.top;
    ProgressBar->Left = Rect.left;
    ProgressBar->Width = StatusBar1->Panels->Items [ 0 ]->Width;
    ProgressBar->Height = Rect.bottom - Rect.top;
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ProgressBar->Show();
  ProgressBar->Position = 50;  
}

Это Unit1.h

#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//--------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
  TStatusBar *StatusBar1;
  TButton *Button1;
  void __fastcall FormCreate(TObject *Sender);
  void __fastcall StatusBar1Resize(TObject *Sender);
  void __fastcall Button1Click(TObject *Sender);
private:	// User declarations
  TProgressBar *ProgressBar;
public:		// User declarations
  __fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//--------------------------------------------------------------------
#endif

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
23K
31 октября 2006 года
demon4
0 / / 31.10.2006
Мне нравитсяМне не нравится
31 октября 2006, 01:39:15
Огромное спасибо!!!! Очень помоголо :-)))
2.
Аноним
Мне нравитсяМне не нравится
29 мая 2006, 12:51:34
Ой как мне это напоминает C++ Builder:))) Гыы
3.
Аноним
Мне нравитсяМне не нравится
12 мая 2006, 23:07:35
не похоже что этот пример для Delphi )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог