![]() |
Brauche OnMouseMove-Event + habe Problem mit ObjectInspector
Hi!
Ich habe eine Komponente erstellt, die von TGraphicControl erbt. Jetzt bräuchte ich aber auch das OnMouseMove - Event, dass es aber nur von der Vaterklasse von TGraphicControl TControl gibt. Erben die Unterklassen nich alles von der Oberklasse? Naja, auf jeden Fall meine Frage, wie komme ich daran oder was muss ich machen, damit ich dieses Event in meiner Komponente benutzen kann. Außerdem dachte ich, würde man automatisch meine als published deklarierten Poperties im Obejct Inspector angezeigt bekommen. Allerdings zeigt er dort wirklich garnichts an. Muss ich da noch was beachten, angeben, wie auch immer? Die Anwendung bzw. das Formular, das meine Komponente benutzt ist das einzige was angezeigt wird :(... Bin für jede Hilfe dankbar :)! |
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
ganz einfach:
Delphi-Quellcode:
Damit änderst du die sichtbarkeit von protected zu published
[...]
published property OnMouseMove; [...] |
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Tut mir leid für mein Unwissenheit, aber das versteh ich nich :wall:. Was hab ich jetzt davon, dass ich ein property hab, dass OnMouseMove heißt?
|
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
ich dachte du willst das property so haben das man es über den Objectinspektor zuweisen und benutzen kann :gruebel:
|
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Ach, ich bin zu blöd mich in Worte zu fassen. Er kennt einfach das OnMouseMove nich. Also zum Beispiel die Methode Paint gibts bei TGraphicControl auch. Da muss ich dann zum Beispiel nur das schreiben:
Delphi-Quellcode:
Und so hätte ich das auch gerne...
public
procedure Paint; override; ... procedure TTreemapChart.Paint; begin inherited; ... end; |
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Es gibt die procedure MouseMove (die das Event OnMouseMove auslöst) die du überschreiben könntest.
Delphi-Quellcode:
type Tx=class(TGraphicControl)
procedure mousemove(Shift: TShiftState; X, Y: Integer);override; end; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private x:Tx; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin x:=tx.Create(self); x.parent:=self; x.Align:=alclient; canvas.MoveTo(0,0); end; procedure Tx.mousemove; begin canvas.LineTo(x,y); end; |
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Ja, genau so hab ich das auch gemacht, aber es läuft nich. Erstmal sagt er mir folgendes als Warnung:
Delphi-Quellcode:
Er kompiliert aber, nur er reagiert nich auf die "Mouse Moves", es passiert einfach nichts. Wenn ich jetzt das override dazu schreibe, kompiliert er nich mehr und gibt mir folgende Fehlermeldung aus:
[Warning] TreemapChart.pas(59): Method 'MouseMove' hides virtual method of base type 'TControl'
Delphi-Quellcode:
Damit kann ich dann garnichts mehr anfangen :(.
[Error] TreemapChart.pas(59): Declaration of 'MouseMove' differs from previous declaration
|
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Ja, dann solltest du mal deine Deklaration überprüfen :zwinker: Die muss schon übereinstimmen.
|
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Aber das ist doch so okay, oder?
Delphi-Quellcode:
type
TTreemapChart = class (TGraphicControl); public procedure MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); override; implementation procedure TTreemapChart.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin ... end; |
Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
Schau mal, was ich gemacht habe!
Du bist jetzt nicht beim event, sondern bei der methode, die das event auslöst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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