Delphi-PRAXiS

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

Muetze1 2. Okt 2005 13:28

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin!

Bei mir haut es immernoch nicht hin - und ich habe nun schon seit fast einem halben Jahr alles mögliche probiert. Für mich ist es ein Bug in der VCL.

Demoprogramm ist angehängt. Unten in der Statusbar erkennt man dieses selbstgemalte Kästchen (gelb/rot). Dieses wird mit Menueinträgen, Menuitemicons und Shortcuts übermalt. Dieses geschieht vor allem, wenn man das Fenster maximiert/minimiert. Der Fehler ist nicht unter Windows XP aufgetreten, unter Windows 2000 schon.

Der Malcode ist 100%ig in Ordnung und es wurde nix verändert - alles Standardkomponenten. Die Fehlerliste von FastMM4 am Ende kommt von der defekten VCL von Delphi 6.

MfG
Muetze1

/EDIT: Sorry, DLL angehängt...

Christian Seehase 2. Okt 2005 13:40

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

da fehlt noch eine DLL (FBII_supp.dll)

Muetze1 2. Okt 2005 15:44

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Moin!

Sorry, vergessen - im oberen Beitrag ergänzt...

MfG
Muetze1

Muetze1 7. Okt 2005 17:08

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Moin!

Ja und? Ideen?

Grundlegend kommt noch hinzu, das die Menueinträge in dem Statuspanel die selbstgemalten Menueinträge des Hauptmenus sind.

MfG
Muetze1

luckystar85 9. Okt 2005 16:55

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Bei mir tritt der Fehler auch unter XP auf, mit dem Programm von Muetze1. Wenn ich debugge und denn zum Programm zurück wechsele sind bei mir in der Statusbar die mittleren Felder mit den Menüeintäge aus dem Hauptmenü übermalt.

luckystar85 10. Okt 2005 09:50

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Menüeinträge sind aber auch immer ganz aktuell. Sobald der Menüeintrag deaktiviert ist wird der Eintrag in der Statusbar auch deaktiviert gezeichnet.

Christian Seehase 10. Okt 2005 21:00

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

kannst Du mir mal eine Anleitung geben, wie ich den Fehler erzeugen kann?
Unter Windows 2000 SP4 und Windows XP Pro SP 2 kann ich das Problem nicht reproduzieren.

luckystar85 10. Okt 2005 21:11

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Wenn du das Fenster maximierst und wiederherstellst oder wenn du die Taskbar als Automatisch im Hintrgrund hast und die denn bei jedem MouseOver über die Statusbar kommt und wenn sie wieder verschwindet denn sind die Einträge vorhanden. So habe ich es auch auf dem Screenshot gemacht.

Muetze1 10. Okt 2005 21:16

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
...oder ein Fenster nehmen und über die Statusbar in dem Bereich hin und herbewegen um ein neuzeichnen auszulösen.

Christian Seehase 10. Okt 2005 21:24

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

ich kann das, unter beiden Systemen, auf die von Dir genannten Arten nicht reproduzieren. :gruebel:

luckystar85 10. Okt 2005 21:28

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Ich schaffe es jedesmal so.

Muetze1 14. Jul 2006 13:52

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Wir haben zwischenzeitlich hierzu eine Problemlösung: Wenn sich Daten geändert hatten, haben wir das Invalidate der Statusbar aufgerufen um eine neuzeichnen bei Zeit zu erzwingen. Dies mag die StatusBar aber anscheinend gar nicht. Bei der Benutzung von Refresh tritt der Fehler nicht mehr auf. Damit wird das Invalidate mit einem direkt dahinter erzwungenem direkten neuzeichnen (UpdateWindow()) erfolgreich ohne Probleme bewältigt.

rory 14. Jul 2006 16:37

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Vor rund einem Jahr hatte ich ein ähnliches Problem, es trat komischerweise nur auf meinem PC unter Win2K auf, unter WinXP und auf anderen Rechnern nicht.

Abhilfe unter Win2K brachte ein Update des *Graphikkartentreibers*, es war eine nVidia Karte, Typ weiß ich nicht mehr.

HTH

mfg
rory

divBy0 4. Feb 2010 12:00

Re: In einem StatusPanel erscheint die Caption eines MenuIte
 
Hallo,

ist zwar schon älter, trifft aber genau mein Problem. In ein Panel der Statusbar zeichne ich ein Bitmap, das hat auch funktioniert, aber jetzt bekomme ich in dem Panel immer die Caption von dem ersten Eintrag im Mainmenü angezeigt.
Das Ereignis "OnDrawPanel" der Statusbar wird auch nicht mehr aufgerufen.

Hat da vielleicht jemand eine Idee?


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