![]() |
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 |
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Hat keiner eine Idee??
|
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Zitat:
|
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Wahrscheinlich eine nicht initialisierte Variable in der zufälligerweise der Fenstertitel steht.
|
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. |
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; |
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? |
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. |
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. |
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 |
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... |
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Moin Thomas,
da fehlt noch eine DLL (FBII_supp.dll) |
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Moin!
Sorry, vergessen - im oberen Beitrag ergänzt... MfG Muetze1 |
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 |
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.
|
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.
|
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. |
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.
|
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.
|
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: |
Re: In einem StatusPanel erscheint die Caption eines MenuIte
Ich schaffe es jedesmal so.
|
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.
|
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 |
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