![]() |
Statusbar Draw-Procedure aufrufen?
Hallo Leute,
ich habe folgendenden Code im OnDraw-Ereignis meiner Statusbar stehen.
Delphi-Quellcode:
Nun möchte ich gern, das diese Procedure auch ausgeführt wird. Da es aber nicht von selbst zu klappen scheint, muss ich diese procedure wohl aufrufen. Wenn ich die 3 If-Schleifen weg lasse und einfach nur
procedure TMainForm.Status_ParserDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect); begin with Status_Parser.Canvas do begin if Status_Parser.Panels[1].Text = '' then Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, -1); if Status_Parser.Panels[1].Text = 'keine Fehler gefunden' then Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, 6); if Status_Parser.Panels[1].Text = 'Fehler gefunden' then Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, 7); end; end;
Delphi-Quellcode:
schreibe, dann wird beim Createn des Forms das Bild nummer 6 aus der ImageList gezeichnet. Ich möchte aber abhängig vom Parserergebnis, welches ich beim Parsen dann festlege ein Image zeichnen.
with Status_Parser.Canvas do
begin Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, 6 end; Was mache ich falsch, oder wie kann ich die Procedure von wo anders aurufen? Mir ist klar, dass diese Procedure Parameter erwartet, aber so hats nicht gefunzt:
Delphi-Quellcode:
Wer kann helfen???
Status_ParserDrawPanel(Status_Parser,Status_Parser.Panels[0],Status_Parser.Canvas.ClipRect);
|
Re: Statusbar Draw-Procedure aufrufen?
Moin!
Eine TStatusBar hat dazu das Ereignis OnDrawPanel. Dort eine Procedure zuweisen und in dieser malen. Auch den Text der Hilfe dazu lesen: Zitat:
Muetze1 |
Re: Statusbar Draw-Procedure aufrufen?
Hallo!
Danke für die Antwort, aber wie schon in meiner Anfrage zu sehen war, hatte ich den Code auch schon im OnDraw-Ereignis stehen. Ich habe den Code nun etwas vereinfacht und setze im Parser eine globale Variable (img_idx_parser), die dann dem InfoBild in der Imagelist entspricht.
Delphi-Quellcode:
Ich möchte im Panel null dass infobild anzeigen und im Panel 1 den Infotext dazu. Der Style von Panel 0 steht auf psOwnerDraw. Leider funktioniert es nicht. Folgendes mache ich in der Routine, wo ich den Infotext setze:
procedure TMainForm.Status_ParserDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect); begin Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, img_idx_parser); end;
Delphi-Quellcode:
Ist hier ein Fehler vorhanden??? Was mache ich denn nur Falsch??? Das komische ist, wenn ich im Panel 1 den Style auf psOwnerDraw setze, dann bekomme ich in diesem Panel nicht mehr meinen Infotext, dafür aber das korrekte Image angezeigt. Sehe ich den Wald vor lauter Bäumen nicht???
if not ParserError then
begin CompareElements; img_idx_parser:=6; Status_Parser.panels[1].Text:='Keine Fehler gefunden!'; end else begin img_idx_parser:=7; Status_Parser.Panels[1].Text:='Fehler gefunden!'; end; |
Re: Statusbar Draw-Procedure aufrufen?
Moin!
Du malst ja in der Draw Routine ständig - frage lieber noch Panel.Index ab, ob es das richtige Panel ist bevor du malst. Vielleicht klappt es dann besser... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz