AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Statusbar Draw-Procedure aufrufen?

Ein Thema von torud · begonnen am 5. Jul 2004 · letzter Beitrag vom 6. Jul 2004
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Statusbar Draw-Procedure aufrufen?

  Alt 5. Jul 2004, 13:45
Hallo Leute,

ich habe folgendenden Code im OnDraw-Ereignis meiner Statusbar stehen.

Delphi-Quellcode:
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 gefundenthen 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;
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

Delphi-Quellcode:
    with Status_Parser.Canvas do
      begin
        Image_Parser.Draw(Status_Parser.Canvas,Rect.Left,Rect.Top, 6
      end;
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.

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:

Status_ParserDrawPanel(Status_Parser,Status_Parser.Panels[0],Status_Parser.Canvas.ClipRect); Wer kann helfen???
Danke
Tom
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Statusbar Draw-Procedure aufrufen?

  Alt 5. Jul 2004, 17:02
Moin!

Eine TStatusBar hat dazu das Ereignis OnDrawPanel. Dort eine Procedure zuweisen und in dieser malen. Auch den Text der Hilfe dazu lesen:

Zitat von Delphi 5 OH:
Das Ereignis OnDrawPanel wird ausgelöst, wenn eine Tafel innerhalb einer Statusleiste neu gezeichnet werden muß.

type TDrawPanelEvent = procedure(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect) of object;
property OnDrawPanel: TDrawPanelEvent;

Beschreibung

Das Ereignis OnDrawPanel wird ausgelöst, wenn eine Tafel in einer Statusleiste erneut angezeigt werden muß, beispielsweise weil der Benutzer die Größe verändert hat. Der Parameter Rect enthält die neuen Abmessungen der Tafel. OnDrawPanel wird nur dann ausgelöst, wenn die Eigenschaft Style der Tafel auf psOwnerDraw gesetzt ist.

TDrawPanelEvent ist der Typ der Eigenschaft OnDrawPanel.
MfG
Muetze1
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Statusbar Draw-Procedure aufrufen?

  Alt 6. Jul 2004, 06:54
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:
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;
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:

Delphi-Quellcode:
      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;
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???
Danke
Tom
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Statusbar Draw-Procedure aufrufen?

  Alt 6. Jul 2004, 10:54
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
  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 23:57 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