AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi onMouseclick procedur in eigener Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

onMouseclick procedur in eigener Komponente

Ein Thema von 24jb · begonnen am 23. Feb 2008 · letzter Beitrag vom 23. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
24jb

Registriert seit: 6. Apr 2007
27 Beiträge
 
#1

onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:17
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:20
Überschreib die Methode Click.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
24jb

Registriert seit: 6. Apr 2007
27 Beiträge
 
#3

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:48
Kann man da auch auf die X und Y- Werte der Mausposition zugreifen?
Wenn ja, wie?

Danke im voraus
Olav
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:49
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:

procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; Und dementsprechend weiter unten deinen Code auch anpassen!
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:51
Wenn Deine Kompo von TControl abgeleitet ist, kommst Du mit self.ScreenToClient(Mouse.CursorPos)) an die Client-Koordinaten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
24jb

Registriert seit: 6. Apr 2007
27 Beiträge
 
#6

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 11:59
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;
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 12:02
Nimm das "Sender: TObject;" raus, dann sollte es gehen
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
24jb

Registriert seit: 6. Apr 2007
27 Beiträge
 
#8

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 12:21
Dann bekomm ich den Fehler:

[Error] BinaryClock.pas(17): Unsatisfied forward or external declaration: 'TBinaryClock.MouseDown'
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 12:25
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
24jb

Registriert seit: 6. Apr 2007
27 Beiträge
 
#10

Re: onMouseclick procedur in eigener Komponente

  Alt 23. Feb 2008, 12:32
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
Angehängte Dateien
Dateityp: dcu binaryclock_152.dcu (2,4 KB, 0x aufgerufen)
Dateityp: pas binaryclock_147.pas (812 Bytes, 1x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
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