Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi onMouseclick procedur in eigener Komponente (https://www.delphipraxis.net/109040-onmouseclick-procedur-eigener-komponente.html)

24jb 23. Feb 2008 10:17


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

DeddyH 23. Feb 2008 10:20

Re: onMouseclick procedur in eigener Komponente
 
Überschreib die Methode Click.

24jb 23. Feb 2008 10:48

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

patti 23. Feb 2008 10:49

Re: onMouseclick procedur in eigener Komponente
 
Und so gehts (ist genau das, was DeddyH geschrieben hat, nur etwas ausführlicher ;-) ):

Delphi-Quellcode:
  // ...
  protected
    { Protected-Deklarationen }
    procedure Click; override;
  // ...
und dann weiter unten:

Delphi-Quellcode:
procedure TKomponente.Click;
begin
   //-----
   // ...
   // evtl. noch "inherited Click;"
end;
Patti

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:
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
Und dementsprechend weiter unten deinen Code auch anpassen!

DeddyH 23. Feb 2008 10:51

Re: onMouseclick procedur in eigener Komponente
 
Wenn Deine Kompo von TControl abgeleitet ist, kommst Du mit
Delphi-Quellcode:
self.ScreenToClient(Mouse.CursorPos))
an die Client-Koordinaten.

24jb 23. Feb 2008 10:59

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;

patti 23. Feb 2008 11:02

Re: onMouseclick procedur in eigener Komponente
 
Nimm das "Sender: TObject;" raus, dann sollte es gehen ;-)

24jb 23. Feb 2008 11:21

Re: onMouseclick procedur in eigener Komponente
 
Dann bekomm ich den Fehler:

[Error] BinaryClock.pas(17): Unsatisfied forward or external declaration: 'TBinaryClock.MouseDown'

patti 23. Feb 2008 11:25

Re: onMouseclick procedur in eigener Komponente
 
Setz deine Deklaration mal unter "Protected". Weiter unten im Quelltext musst du folgendes schrieben:

Delphi-Quellcode:
procedure TBinaryClock.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
     // ----------
     inherited MouseDown(Button,Shift,x,y);
     // ...
end;
Dann sollte es eigentlich funktionieren! Probiers mal aus ;-)

24jb 23. Feb 2008 11:32

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 10:44 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz