AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: VCL / WinForms / Controls Delphi ProgressBar, Shape ... in einer Statusbar einbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

ProgressBar, Shape ... in einer Statusbar einbinden?

Ein Thema von EDatabaseError · begonnen am 30. Jul 2006 · letzter Beitrag vom 30. Jul 2006
Antwort Antwort
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#1

ProgressBar, Shape ... in einer Statusbar einbinden?

  Alt 30. Jul 2006, 13:42
Ich habe hier von den Schweizern folgenden Code mit dem man eine Progressbar und andere VCL Komponenten in eine Statusbar einbinden kann:

Delphi-Quellcode:
uses
  CommCtrl;

type
  THackControl = class(TControl);

procedure TForm1.FormCreate(Sender: TObject);
var
  PanelRect: TRect;
begin
  // Place progressbar on the statusbar
  THackControl(ProgressBar1).SetParent(StatusBar1);
  // Retreive the rectancle of the statuspanel (in my case the second)
  SendMessage(StatusBar1.Handle, SB_GETRECT, 1, Integer(@PanelRect));
  // Position the progressbar over the panel on the statusbar
  with PanelRect do
    ProgressBar1.SetBounds(Left, Top, Right - Left, Bottom - Top);
end;
Statt Progressbar1 kann da auch Shape1 ... stehen.

Mfg
Tobi
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ProgressBar, Shape ... in einer Statusbar einbinden?

  Alt 30. Jul 2006, 15:43
Warum eine extra Komponente von TControl ableiten?
Desweiteren kann es sein, das jemand die Breite einzelner Panels der StatusBar an die Breite der Form anpassen will.
Deshalb im OnResize-Event die Größe z.B. der ProgressBar an Größe des Panels anpassen.

Mein Vorschlag:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Place progressbar on the statusbar
  ProgressBar1.Parent := StatusBar1;
end;

procedure TForm1.FormResize(Sender: TObject);
var PanelRect: TRect;
begin
  // Retreive the rectancle of the statuspanel (0 für das erste Panel, 1 für das zweite usw.)
  SendMessage(StatusBar1.Handle, SB_GETRECT, 0, Integer(@PanelRect));
  // Position the progressbar over the panel on the statusbar
  with PanelRect do
    ProgressBar1.SetBounds(Left, Top, Right-Left, Bottom-Top);
end;
Ansonsten ein super Code
Man kann sogar ein TImage oder jede andere Komponente so auf eine StatusBar setzen...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz