ProgressBar üzerinde süre gösterme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

ProgressBar üzerinde süre gösterme

Mesaj gönderen brs »

Selam;

Forumda sadece Progressbar ve label var label Progressbar altında kalıyor geçen süreyi göstermek istiyorum, bu işlemi tersine nasıl yapabilirim? label üste Progressbar alta kalacak...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: ProgressBar üzerinde süre gösterme

Mesaj gönderen thelvaci »

Bahsettiğiniz TProgressBar ise; bu iş için biraz kulağınızı tersten göstermeniz gerekebilir. Custom draw işlemi yapabilirsiniz Progressbar üzerinde. Öncelikle, bir interposer sınıf tanımlayıp içinde WM_PAINT mesajına yanıt vermelisiniz. Yazmak yerine örnek bir kod ile açıklamak daha kolay olabilir.

Kod: Tümünü seç

  TProgressBar = class(Vcl.ComCtrls.TProgressBar)
  protected
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  end;

  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Label1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

{ TProgressBar }

procedure TProgressBar.WMPaint(var Message: TWMPaint);
var
  ACanvas : TControlCanvas;
begin
  inherited;

  ACanvas:= TControlCanvas.Create();
  ACanvas.Control := Self;
  ACanvas.TextOut(100, 20, 'Basit bir mesaj..');

  ACanvas.Free;
end;

Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: ProgressBar üzerinde süre gösterme

Mesaj gönderen brs »

Teşekkür ederim, ben biraz eklemeler yaptım...

Kod: Tümünü seç

procedure TProgressBar.WMPaint(var Message: TWMPaint);
var
  ACanvas: TControlCanvas;
begin
  inherited;
  ACanvas := TControlCanvas.Create();
  ACanvas.Control := Self;
  ACanvas.Brush.Style := bsClear;
  ACanvas.Font.Style := [fsBold];
  ACanvas.Font.Color := clRed;
  ACanvas.TextOut(100, 15, 'Lütfen Bekleyiniz...');
  ACanvas.Free;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla