Autor Beitrag
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Di 07.09.10 20:09 
Guten Abend zusammen,

ich wollte für eine eigene Komponente Dinge aus der OnMouseMove-Procedure kopieren. Dabei hab ich mich dann auf die Suche gemacht und erst einmal herausgefunden, dass das gar keine Procedure sondern eine Proprety ist. Dann war aber auch Schluss.

Könnt ihr mir da weiterhelfen?

Gruss,

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Di 07.09.10 20:32 
Wenn du deine eigene Komponente von TCustomControl ableitest, dann musst du nur noch das Property OnMouseMove publishen. Falls deine Komponente selbst benachrichtig werden muss, wenn sich die Maus bewegt, kannst du die Prozedur MouseMove überschreiben.
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mi 08.09.10 20:52 
sprich ich mach sowas wie:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
TFeld=class(TCustomControl)
  private
    MouseMove; overwrite;
    [...und was da so noch rein muss]
  public
    [...hier nen paar procedures und functions]
  published
    property OnMouseMove;
end;



was muss ich beim MouseMove alles für Übergabevariablen hinzufügen? Klappt das, wenn ich da einfach

ausblenden Delphi-Quelltext
1:
MouseMove(X,Y:Integer); overwrite;					


reinsetze, dass ich automatisch die MouseKoodinaten bekomme?

Ne andere Sache, wie viel ist im TCustumControl noch alles drin? Ich will ja nicht annähernd unendlich viele Dinge vererben, sondern nur diese eine Sache.

Gruss,

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Sa 11.09.10 13:55 
push?

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mo 13.09.10 14:22 
is die Frage sooo schwer? oder stimmt das, was ich da oben geschrieben hab?

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 13.09.10 15:22 
Hmm, wo ist meine Antwort hin, die ich vorgestern oder so getippt hatte? :wall:
Naja egal, tippen wir das Ganze halt nochmal 8)

Der Befehl heißt override("geht vor"), nicht overwrite. Und nein, den verwendest du, wenn du eine Methode ersetzen willst(Methode=[procedure of object, function of object]).

Hier musst du nur die Sichtbarkeit ändern, dazu deklarierst du sie einfach wie folgt neu(ohne read, write und das ganze Zeug):
ausblenden Delphi-Quelltext
1:
2:
published
  property OnMouseMove;

Die property ist ursprünglich in TControl deklariert, wie du in der Unit Controls nachlesen kannst: property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;

Mehr dazu gibt es hier: *klick*.

---

Für ein einzelnes Projekt würde ich aber keine eigene Komponente schreiben: Eine Klasse, die eine Paintbox/ein Canvas, ein RichEdit o.ä. übergeben bekommt, reicht meißtens aus. Hast du dich schon damit beschäftigt, wie du die Komponente zur Design-Zeit auf's Formular ziehen kannst? Das geht meines Wissens unter Turbo Delphi nicht(einzige Einschränkung der kostenlosen Version).

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)