Einzelnen Beitrag anzeigen

paresy

Registriert seit: 24. Aug 2004
Ort: Lübeck
105 Beiträge
 
Delphi 2007 Professional
 
#6

Re: transparente Progressbar oder Text in Progressbar

  Alt 28. Dez 2004, 18:46
pack mal deinen code ins OnDrawPanel Event

Delphi-Quellcode:
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
  const Rect: TRect);
var
  R, RBar : TRect;
  Position: Integer;
  Text: String;
begin

    Position := 33;
    Text := '333kb/1000kb @ 33,12kb/s';

  {  Statusbar1.Perform(SB_GETRECT, 0, Integer(@R)); } //braucht man nicht mehr da das event uns schon mit dem RECT versorgt

    //progress bar
    R := Rect;
    RBar := R;

    //fit into panel
    RBar.Left := RBar.Left + 1;
    RBar.Top := RBar.Top + 1;
    RBar.Right := RBar.Right - 2;
    RBar.Bottom := RBar.Bottom - 2;

    RBar.Right := RBar.Left + Ceil( (Position / 100) * (RBar.Right - RBar.Left) );

    Statusbar1.Canvas.Brush.Color := clSkyBlue;
    Statusbar1.Canvas.FillRect(RBar);

    //progress text
    SetBkMode(Statusbar1.Canvas.Handle, TRANSPARENT);
    DrawText(Statusbar1.Canvas.Handle,
             PCHAR(Text),
             Length(Text),
             R,
             DT_SINGLELINE or DT_END_ELLIPSIS or DT_CENTER);


end;
und dann beim Panel ( dort wo du z.b. den Text der angezeigt werden soll reinschreibst ) die property Style auf 'psOwnerDraw'
  Mit Zitat antworten Zitat