![]() |
onMouseclick procedur in eigener Komponente
Hi,
ich bin gerde dabei eine Komponente zu schreiben. Wenn jetzt jemand auf das 'Komponente' /Bild, im fertigen Programm draufklickt, soll etwas passieren, gibt es eine Möglichkeit, eine OnMouseClick procedure direkt in die Komponente zu integrieren?, wenn ja, wie muss die deklariert werden? Vielen Dank im Vorraus Olav |
Re: onMouseclick procedur in eigener Komponente
Überschreib die Methode Click.
|
Re: onMouseclick procedur in eigener Komponente
Kann man da auch auf die X und Y- Werte der Mausposition zugreifen?
Wenn ja, wie? Danke im voraus Olav |
Re: onMouseclick procedur in eigener Komponente
Und so gehts (ist genau das, was DeddyH geschrieben hat, nur etwas ausführlicher ;-) ):
Delphi-Quellcode:
und dann weiter unten:
// ...
protected { Protected-Deklarationen } procedure Click; override; // ...
Delphi-Quellcode:
Patti
procedure TKomponente.Click;
begin //----- // ... // evtl. noch "inherited Click;" end; Edit: Roter Kasten... Du kannst nur bei OnMouseDown bzw. OnMouseUp auf X- und Y-Werte zugreifen! Geht genauso wie ichs beschrieben hab ;-) Du musst allerdings bei Protected schreiben:
Delphi-Quellcode:
Und dementsprechend weiter unten deinen Code auch anpassen!
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
|
Re: onMouseclick procedur in eigener Komponente
Wenn Deine Kompo von TControl abgeleitet ist, kommst Du mit
Delphi-Quellcode:
an die Client-Koordinaten.
self.ScreenToClient(Mouse.CursorPos))
|
Re: onMouseclick procedur in eigener Komponente
So ich habs jetzt mit MousDown probiert, allerdings sagt er, dass die deklaration von der Urprünglichen abweicht, gibts ne möglichket die ursprüngliche Deklaration anzusehen?
Code:
type
TBinaryClock = class(TGraphicControl) private { Private declarations } protected { Protected declarations } public { Public declarations } procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Override; published { Published declarations } end; |
Re: onMouseclick procedur in eigener Komponente
Nimm das "Sender: TObject;" raus, dann sollte es gehen ;-)
|
Re: onMouseclick procedur in eigener Komponente
Dann bekomm ich den Fehler:
[Error] BinaryClock.pas(17): Unsatisfied forward or external declaration: 'TBinaryClock.MouseDown' |
Re: onMouseclick procedur in eigener Komponente
Setz deine Deklaration mal unter "Protected". Weiter unten im Quelltext musst du folgendes schrieben:
Delphi-Quellcode:
Dann sollte es eigentlich funktionieren! Probiers mal aus ;-)
procedure TBinaryClock.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin // ---------- inherited MouseDown(Button,Shift,x,y); // ... end; |
Re: onMouseclick procedur in eigener Komponente
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habs probiert, bekamm aber das:
[Error] BinaryClock.pas(15): Unsatisfied forward or external declaration: 'TBinaryClock.MouseDown' [Error] BinaryClock.pas(31): This form of method call only allowed in methods of derived types |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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