Ich habe von 2009 auf Delphi XE aktualisiert und habe ein seltsames Problem.
Ich erstelle ein neues Projekt, setze ein TRibbon-Steuerelement, kompiliere und führe es aus. Wenn ich das Formular in seiner Standardgröße belasse, minimiere und stelle ich es ohne Probleme wieder her. Ich maximiere dann die Form, minimiere und restauriere und die Formfarbe wird in Schwarz geändert.
Ich habe keinen zufälligen Code, um es zu ändern, und verwende alle Standardeinstellungen, die Delphi XE mitbringt, und es tut es jedes Mal, ohne Fehler.
Ich habe die kompilierte exe auf einen Computer von Freunden verschoben, und das Problem bleibt bestehen, so dass ich weiß, dass es nicht mein Computer ist. Wenn ich Aero-Effekte abstelle, verschwindet das Problem, aber setze Aero wieder ein und das Problem kehrt zurück.
Irgendwelche Ideen? Ich habe Probleme, relevante Threads bezüglich dieses Problems in den Interwebs zu finden.
Danke, Seb
Bearbeiten Sie (wie gewünscht, den DFM für das Formular, das dieses Verhalten anzeigt. Hinweis: Dies passiert bei jedem Projekt, das ich starte):
%Vor%Nichts fantasievolles, es ist nur ein neues Projekt mit einer einzigen Form.
Ich kann den Fehler reproduzieren, hier sind einige der Probleme, die ich entdeckt habe. Vielleicht helfen sie jemandem, dieses Ding herauszufinden.
Invalidate
aus dem% code% -Ereignis der Schaltfläche anrufe, erhält das Formular seine Farben zurück. OnClick
auf WndProc
mit WM_SIZE
= wParam
, dann rufe SIZE_MAXIMIZED
vom Timer an, das Formular erhält seine Farben zurück. Dies entspricht im Wesentlichen der ersten Methode (Aufruf von Invalidate
von einer Schaltfläche aus), aber der Timer macht dies automatisch und stellt sicher, dass Invalidate
nur dann aufgerufen wird, wenn keine weiteren Nachrichten mehr verarbeitet werden. Ich habe das gleiche mit einem einfachen Invalidate
versucht, aber nicht funktioniert (dh ich war wahrscheinlich PostMessage
-ing zu früh, und das ist wahrscheinlich ein anderer Hinweis) Invalidate
in der Quelle des Projekts mache, sehe ich das schwarze Formular nicht mehr. Das Farbband nimmt den oberen Teil des Formulars auf. Platziere einen Application.MainFormOnTaskbar := False
auf dem Rest des Formulars, mach es TPanel
und lege alles auf das Panel. Das Schwarz hinter dem Panel ist nicht mehr sichtbar!
Sie sollten den Glasrahmen aktivieren, wenn Sie das Farbband verwenden, da das Farbband-Steuerelement speziell für die Arbeit mit Aero-Glasrahmen ausgelegt ist. Zweitens sollten Sie etwas mehr Arbeit leisten, um das Menüband zu konfigurieren, ein Anwendungsmenü hinzuzufügen und einige Fenster zu öffnen, damit es wie vorgesehen funktioniert. Ich glaube nicht, dass "Ribbon für sich" ohne Tab-Gruppen oder ein Systemmenü zur Laufzeit richtig dargestellt wird.
Wenn die Multifunktionsleiste auf Systemen mit aktiviertem Aero-Glas funktionieren soll, sollten Sie die Glasrahmeneigenschaft (Form.GlassFrame.Enabled) aktivieren und die Form.DoubleBuffered-Eigenschaft aktivieren, einige Registerkarten hinzufügen, einige Registerkartengruppen hinzufügen, und fügen Sie ein Systemmenü hinzu. Viele Schritte.
Bitte versuchen Sie das beigefügte Bandstarter Projekt . (ribbonStarter.zip 88k)
Update Wenn sogar mein RibbonStarter das gleiche Ergebnis auf Ihrem System erzeugt, sollte dies möglicherweise in Quality Central protokolliert werden. Möglicherweise handelt es sich um einen Fehler in Ihrem Grafiktreiber, für den eine Codeumgehung im Band- und Formularcode vorgenommen werden kann.
Tags und Links windows-7 delphi delphi-xe aero-glass