Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi In einem StatusPanel erscheint die Caption eines MenuItem (https://www.delphipraxis.net/54108-einem-statuspanel-erscheint-die-caption-eines-menuitem.html)

pszopp 28. Sep 2005 10:02


In einem StatusPanel erscheint die Caption eines MenuItem
 
Hallo Zusammen,

ich benutze in meinem Programm die Komponente TStatusBar.
Dabei ist bei einem Panel die Eigenschaft "Style" auf "psOwnerDraw" gesetzt.
Über das StatusBar-Event "OnDrawPanel" zeichne ich auf den Canvas der StatusBar
einen Text. Das funktioniert soweit. Wenn nun aber ein anderes Formular angezeigt
wird, oder das Hauptformular vergößert/verkleinert wird, so wird eine Caption des Hauptmenüs
in das Panel gezeichnet.

Da ich dieses Problem bei mehreren Programm habe, wollte ich fragen, ob
jemand ähnliche Probleme hat oder sogar Lösungen anbieten kann.

Viele Grüße,
pszopp

pszopp 28. Sep 2005 14:57

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Hat keiner eine Idee??

shmia 28. Sep 2005 15:30

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Zitat:

Zitat von pszopp
Über das StatusBar-Event "OnDrawPanel" zeichne ich auf den Canvas der StatusBar
einen Text.

Zeig' den Code mal her.

Luckie 28. Sep 2005 15:34

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Wahrscheinlich eine nicht initialisierte Variable in der zufälligerweise der Fenstertitel steht.

pszopp 28. Sep 2005 19:27

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Leider nicht:

Delphi-Quellcode:
procedure TFormMain.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  if (Panel = StatusBar1.Panels[1]) then
    StatusBar1.Canvas.TextOut(Rect.Left, Rect.Top, Panel.Text);
end;

Panel.Text wird über einen Timer alle 500 ms mit FormatDateTime beschrieben.
Das wird auch meistens angezeigt, nur halt bei einem Form,
das über dem Hauptform liegt, kommt es zu Problemen.

Christian Seehase 28. Sep 2005 20:23

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Moin pszopp,

wird in der Timer-Routine zu Beginn der Timer aus-, und am Ende wieder angeschaltet?
Falls nicht könnest Du das mal ausprobieren.

Delphi-Quellcode:
Timer1.Enabled := false;
try
  // Zuweisung an Panel.Text und was hier noch so passieren soll
finally
  Timer1.Enabled := true;
end;

himitsu 28. Sep 2005 20:37

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Werden nicht von den MenuItems die Hints... als Statustext in der Statusbar eingetragen, wenn man über die Hints fährt?

Vielleicht ist es was in der Richtung?

Muetze1 28. Sep 2005 22:47

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Nein, das wird es auch nicht. Ich habe das gleiche Problem. Beide Panels der StatusBar die OwnerDraw sind, werden falsch gemalt. Dort erscheinen auch übereinander gemalte MainMenu Item Einträge samt Icon und ShortCut z.T. auch verstümmelt. Dieses Verhalten beobachte ich schon länger und kann es mir nicht erklären. Auch konnte ich bisher noch keinen Ansatz finden, woher dieses Verhalten stammt um einen Bug Report in der Borland Quality Central abzugeben.

Bei mir kann dieses Fehlverhalten explizit ausgelöst werden, wenn man ihr mit rüberschieben von anderen Fenstern über die betreffenden StatusBar Panels zum neuzeichnen zwingt.

Für Lösungen wäre auch ich dankbar.

Aso, nochwas: einzige Erkenntnis bisher: dieser Fehler tritt nicht unter Windows XP auf - egal ob mit Theme oder klassische Ansicht. Bei Windows 2000 vermehrt und Win9x/ME/NT konnte bisher noch nicht untersucht werden.

Christian Seehase 29. Sep 2005 00:02

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Moin Thomas,

wenn Du willst kannst Du mir mal ein kleines Demoprogramm schicken.
Dann kann ich es mal unter 95 testen.

pszopp 29. Sep 2005 08:25

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Mittlerweile funktioniert es bei mir. Leider habe ich an den betreffenden Code-Stellen nichts geändert.
Ich gehe deswegen davon aus, dass der Fehler irgendwann wieder auftritt.
Demo-Programme kann ich persönlich leider nicht verschicken, da für die Prorgamme
Runtime Bibliotheken benötigt werden.

Bis demnächst


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.
Seite 1 von 3  1 23      

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