![]() |
TForm Komponente ist schwarz wenn XPManifest verwende wird
Hallo!
Ich bastel gerade an einer Eigenen Komponente, die quasi wie ein Hint funktionieren soll. Es geht um ein Image, wenn man mit der Maus darüber ist soll ein Hint-Fenster angezeigt werden. Der Hint soll recht viele Informationen strukturiert darstellen und nur für diese Komponente gelten. Daher verwende ich keinen echten Hint da sich die Informationen hier nur schlecht strukturieren lassen und für die gesamte Anwendung nur eine Hintklasse genutzt werden kann. Ich habe mir also eine Klasse TMyHint erstellt, die ein Fenster mit den Informationen erstellt und anzeigt solange der Der Cursor über dem Image ist: Der Hint:
Delphi-Quellcode:
type
TMyHintForm = class(TForm) // Alle möglichen Komponenten für die Anzeige der Informationen end; TMyHint = class(TObject) protected FHintForm: TMyHintForm; public constructor Create(Infos: TMyHintInfos); procedure Show; procedure UpdatePos; procedure Hide; end; implementation constructor TMyHint.Create(Infos: TMyHintInfos); var i: integer; begin FHintForm := TMyHintForm .Create(nil); FHintForm.DoubleBuffered := true; for i:=0 to FHintForm.ComponentCount-1 do begin if (FHintForm.Components[i] is TWinControl) then TWinControl(FHintForm.Components[i]).DoubleBuffered := true end; // Informationen darstellen InfosDarstellen(Infos); ... end; procedure TMyHint.Hide; begin FHintForm.Hide; end; procedure TMyHint.UpdatePos; begin FHintForm.Top := Mouse.CursorPos.Y; FHintForm.Left := Mouse.CursorPos.X; end; procedure TMyHint.Show; begin FHintForm.Top := Mouse.CursorPos.Y; FHintForm.Left := Mouse.CursorPos.X; FHintForm.Show; end; Das Image, dass den Hint anzeigen soll
Delphi-Quellcode:
type
TMyHintImage = class(TImage) protected FMyHint : TMyHint; FTimer : TTimer; procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; procedure TimerEvent(Sender: TObject); public constructor Create(AOwner: TComponent); override; end; implementation constructor TMyHintImage.Create(AOwner: TComponent); begin inherited; FTimer := TTimer.Create(self); FTimer.Enabled := false; FTimer.OnTimer := TimerEvent; end; procedure TMyHintImage.TimerEvent(Sender: TObject); begin FMyHint := TMyHint.Create(SomeInfos); FMyHint.Show; FTimer.Enabled := false; FTimer.Interval := 10000; FTimer.Enabled := true; end; procedure TMyHintImage.CMMouseEnter(var Message: TMessage); begin inherited; FTimer.Interval := 1000; FTimer.Enabled := true; end; procedure TMyHintImage.CMMouseLeave(var Message: TMessage); begin FTimer.Enabled := false; if (FMyHint<> nil) then begin FMyHint.Hide; FreeAndNil(FMyHint); end; inherited; end; procedure TMyHintImage.WMMouseMove(var Message: TWMMouseMove); begin inherited; if (FMyHint<> nil) then FMyHint.UpdatePos; end; Das funktioniert alles ganz wunderbar. Wenn ich ein TMyHintImage auf einem Form platziere, das Programm starte und die Maus 1 Sekunde über da Image halte wird das Hint Fenster mit den Informationen angezeigt. Bewege ich die Maus wird die Position des Hintfensters angepasst. Alles so wie es sein sollte. Wenn ich das Ganze aber auf einem Form verwende auf dem auch das XPManifest genutzt wird, erscheint das Hint Fenster nur noch als schwarzes Rechteck. Alles funktioniert wie zuvor, nur dass in dem Hintfenster keine Informationen mehr zu sehen sind, weil eben alles Schwarz ist. Was mache ich hier falsch? Wie lässt sich das umgehen? Besten Dank Ares |
Re: TForm Komponente ist schwarz wenn XPManifest verwende wi
Hatten wir nicht schon mal so ein Problem mit einer Toolbar? Eventuell hat es ja den gleichen Grund.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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