![]() |
TImage um Eigenschaften und Ereignissen erweitern
Hallo,
ich möchte gerne TImages als z.B. Buttons einsetzen. Es fehlen aber bei TImage die Ereignisse OnMouseOver oder auch die Möglichkeit über die Tabtaste ein TImage "einzufangen". Ich habe einige Beiträge dazu gelesen, aber bin noch nicht soweit, Ableitungen und Erweiterungen zu erstellen. Kann da jemand helfen ? |
Re: TImage um Eigenschaften und Ereignissen erweitern
über die Tabtaste wirst du TImage nie erreischen da es ein TControl ist und kein handle hat wie ein TWinControl.
Für OnMouseOver musst du die entsprechenden messages abfangen (CM_MOUSEENTER und CM_MOUSELEAVE) |
Re: TImage um Eigenschaften und Ereignissen erweitern
Zitat:
Also geht es gar nicht darum, das TImage neu zu definieren, um global die neuen Ereignisse zu haben? Bitte gib doch mal ein Beispiel für das Abfangen der Messages, wie man diese dann global verwenden kann. |
Re: TImage um Eigenschaften und Ereignissen erweitern
ein Beispiel für die Messages hatte ich erstmal weg gelassen da ich dachte das es sich vielleicht schon erledigt hat das problem weil das TImage nie den Focus bekommen kann (per Tab etc.)
Beispiel:
Delphi-Quellcode:
type
TImage = class(ExtCtrls.TImage) private procedure FCMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure FCMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; end; [...] procedure TImage.FCMMouseEnter(var Msg: TMessage); begin //Was soll passieren wenn die maus drüber kommt //Beispiel: Laden eines andere Bildes Picture.LoadFromFile('BildMausDrüber'); end; procedure TImage.FCMMouseLeave(var Msg: TMessage); begin //Was soll passieren wenn die maus weg geht //Beispiel: Laden eines andere Bildes Picture.LoadFromFile('BildMausAußerhalb'); end; |
Re: TImage um Eigenschaften und Ereignissen erweitern
Zitat:
Danke schön, das mit dem Focus ist nicht ganz so wichtig wäre aber schön gewesen; werde Einiges über Shortcuts festlegen, sozusagen als Alternative. Es ist eh eine Software,welche ich im Auto als CARPC einsetzen möchte (Navi,MP3 etc). Da muss ich eh noch schaun, wie man ausser Maus,Shortcuts noch eine Alternative zur Bedienung finde. Mir schwebt da so ein PowerMate vor, dazu muss ich eh noch so eine Art Focus erzeugen, da man ja nur einen Drehknopf und eine Druckmöglichkeit hat. |
Re: TImage um Eigenschaften und Ereignissen erweitern
Zitat:
|
Re: TImage um Eigenschaften und Ereignissen erweitern
Du musst eigene Events deklarieren und sie dann in der Botschaftsmethode auslösen. Beispiele dazu findest du im Forum und in den VCL-Sourcen.
|
Re: TImage um Eigenschaften und Ereignissen erweitern
Zitat:
|
Re: TImage um Eigenschaften und Ereignissen erweitern
Hallo bluescreen,
verstehst du das?
Delphi-Quellcode:
Grüße vom marabu
type
TBetterImage = class(TImage) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; public property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; implementation procedure TBetterImage.CMMouseEnter(var Msg: TMessage); begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TBetterImage.CMMouseLeave(var Msg: TMessage); begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; |
Re: TImage um Eigenschaften und Ereignissen erweitern
Zitat:
Mein Problem war, das ich eine Form mit diversen Images hatte und eine einfache Unit mit der Ableitung von Timage. Diese bekam ich aber nicht mit den Images der Form verbunden, oder wenn, dann wurde alles von TImage gleich verarbeitet, nur sollte ein selbst erstellter Button das machen und mein Hintergrund natürlich nicht.... Leider noch nicht so ganz verständlich...sorry |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 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 by Thomas Breitkreuz