Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStatusbar, OnDrawPanel und TMainMenu (https://www.delphipraxis.net/4560-tstatusbar-ondrawpanel-und-tmainmenu.html)

sECuRE 4. Mai 2003 14:31


TStatusbar, OnDrawPanel und TMainMenu
 
hi!
hab in meiner TStatusBar icons angezeigt, mit dem "bekannten code" (canvas usw). jetz passiert es allerdings, dass manchmal einfach item sauf meinem TMainMenu auf die Panels 1,2 und 3 gezeichnet werden, wenn ich den task wechsle :( wieso passiert das und wie kann ich das verhindern?

der code für die icons ist:
Delphi-Quellcode:
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
if (Statusbar = StatusBar1) then begin
if (Panel.DisplayName = 'Network') then begin
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,0);
StatusBar.Canvas.Textout(Rect.Left+20, Rect.top, spanel[0]);
end else if (Panel.DisplayName = 'Nickname') then begin
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,1);
StatusBar.Canvas.Textout(Rect.Left+20, Rect.top, spanel[1]);
end else if (Panel.DisplayName = 'Lag') then begin
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,2);
StatusBar.Canvas.Textout(Rect.Left+20, Rect.top, spanel[2]);
end else if (Panel.DisplayName = 'Status') then begin
Imagelist1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,3);
StatusBar.Canvas.Textout(Rect.Left+20, Rect.top, spanel[3]);
end; end;
end;

Blechwolf 9. Sep 2003 14:17

Re: TStatusbar, OnDrawPanel und TMainMenu
 
Salut,

ich habe ein ganz ähnliches Problem.
Bei mir zeigt der am Anfang, wenn ich das Programm starte, irgendwelche wilden Icons auf den drei Panels in der Ecke an. Erst wenn ich das Programm mal in den Hintergrund verschiebe, oder die Größe des Fensters ändere kommen die drei Buttons, die ich haben will.
In der OnResize Funktion der Statusbar wird die Größe der Panels dynamisch angepaßt (siehe Topic weiß nich welches) und dann mit StatusBar.Refresh neu aktualisiert. Sonst behalte ich immer meine komischen symbole.
Ein StatusBar.Refresh in der Oncreate, OnShow, OnActivate des Forms hat keinen Effekt.


EDIT:
Um die Verwirrung perfekt zu machen:
Wenn ich den Panel[0], der bisher auf psText steht, auf psOwnerDraw setze, malt der mit ganz brav den Button dahin, den ich haben will...

EDV: Ende Der Vernunft

Grüße

Blechwolf


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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