![]() |
Images nutzen eine mouseover-proz.! Geht das?
Hallo!
Delphi-Quellcode:
for i := 0 to 20 do
begin Image[i] := TImage.Create(self); Image[i].Parent := parent; Image[i].onmousemove := menuskinmousenter(msg(?????)) end;
Delphi-Quellcode:
Also ich hab da einige Fehler im Quellcode. Vielleicht kann mir ja jemand helfen??
procedure Tmenuskin.menuskinonmousenter(var msg : tmessage;;sender:TObject); message cm_mouseenter;
var i:Integer; begin //Quellcode inherited; end; Danke |
Re: Images nutzen eine mouseover-proz.! Geht das?
Du musst eine neue Klasse von TImage ableiten:
Delphi-Quellcode:
interface
// ... type TMyImage = class(TImage) private procedure menuskinonmousenter(var msg : tmessage); message cm_mouseenter; end; // ... implementation // ... procedure TMyImage.menuskinonmousenter(var msg : tmessage); begin //Quellcode inherited; end; procedure TForm1.Button1Click(Sender: TObject); begin for i := 0 to 20 do begin Image[i] := TMyImage.Create(self); Image[i].Parent := parent; // Hier müsste eigentlich auch self stehen, // Aber ich weis ja nicht wie der Rest deines Codes aussieht end; end; |
Re: Images nutzen eine mouseover-proz.! Geht das?
Zitat:
Jedem Image weise ich eine imagemousemove ereignis zu, aber 1. weiß ich nicht welchen parameter ich bei msg und 2. siehe punkt 1. :-D Danke |
Re: Images nutzen eine mouseover-proz.! Geht das?
Keinen. Onmousemove ist ein event und gibt daher den parameter vor. Die Methode lässt sich nur auf andere Methoden umbiegen, die sowieso die gleichen Parameter haben.
|
Re: Images nutzen eine mouseover-proz.! Geht das?
Zitat:
1. Welches Eregnis willst du jetzt behandeln? OnMouseMove oder cm_mouseenter?? 2. Welchen Code möchtest du dann während der Behandlung des Eregnisses ausführen? |
Re: Images nutzen eine mouseover-proz.! Geht das?
Hi,
wo ist das Problem ? Warum wollt Ihr erst eine neue Klasse erstellen ? Ich würde das so machen :
Code:
und bei erzeugen der Images folgendes :
// innnerhalb der Mainform folgende Procedure Deklarieren(nicht in Private)
procedure MouseMoveOnImages(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Code:
die Procedure könnte dann so aussehen :
for i := 0 to 20 do
begin Image[i] := TImage.Create(self); Image[i].Parent := parent; Image[i].onmousemove := MouseMoveOnImages; end;
Code:
Oder habe ich euch falsch verstanden ?
procedure MouseMoveOnImages(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Var aktImg : TImage; begin if Sender is not TImage then exit; aktImage := TImage(SEnder); / so und jetzt was Du mit dem Image machen willst end; Gruß Data |
Re: Images nutzen eine mouseover-proz.! Geht das?
unit mit mouseenter und mouseleave ergeignis für timage und tbutton. Hätte die zwar lieber als anhang dran gepackt aber da kommt immer ne accessviolation
Delphi-Quellcode:
unit ELButton;
interface uses StdCtrls, classes, Messages, controls, ExtCtrls; type TELButton = class(TButton) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; published property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; TELImage = class(TImage) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; published property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; procedure Register; implementation procedure Register; begin RegisterComponents('ESFEB', [TELButton, TELImage]); end; procedure TELButton.CMMouseEnter(var Msg: TMessage); begin if Enabled and Assigned(fOnMouseEnter) then fOnMouseEnter(Self); end; procedure TELButton.CMMouseLeave(var Msg: TMessage); begin if Enabled and Assigned(fOnMouseLeave) then fOnMouseLeave(Self); end; procedure TELImage.CMMouseEnter(var Msg: TMessage); begin if Enabled and Assigned(fOnMouseEnter) then fOnMouseEnter(Self); end; procedure TELImage.CMMouseLeave(var Msg: TMessage); begin if Enabled and Assigned(fOnMouseLeave) then fOnMouseLeave(Self); end; end. |
Re: Images nutzen eine mouseover-proz.! Geht das?
Hallo SirThornberry,
ist Dir schon aufgefallen das Deine Komponenten die Ereignisse auch feuern wenn Enabled auf False steht ? |
Re: Images nutzen eine mouseover-proz.! Geht das?
ist mir noch nicht aufgefallen. Danke für den Hinweis, werdsch mal mit abändern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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