![]() |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
Hab die Sache (wieder) selbst gelöst; :mrgreen: :mrgreen: :mrgreen: :bouncing4: :bouncing4:
DelphiUser7 |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
wie kann ich denn jetzt ein neues ereignis z.B onClick zu einer komponente hinzufügen?
ich hab da eine opensource komponente, die das nicht unterstützt und will da jetzt ein onClick event! wie geht das? gruss, iaby |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
Also,
du gehst auf irgendeine Komponente die das OnClick-Ereignis besitzt, und erstellst dieses; da siehst du dann schon mal den Aufbau des Ereignisses; Dann kopierst du ihn in die Zwischenablage (Strg+C), und fügst ihn nachher so ein (Strg+V): (für Delphi 7:) Datei -> Neu -> Weitere -> Komponente; bei anderen Delphi-Versionen könnte es etwas anders sein... :-D ; Bei Vorfahrentyp gibst du die Komponente ein, der du die Eigenschaft hinzufügen möchtest; KlassenName: //gib den Namen der neuen Klasse bzw. Komponente ein; Palettenseite: //gib die Palette ein, auf der du deine Neue Komponente wiederfinden willst; Name der Unit & Suchpfad: //erledigt Delphi für dich; Auf 'Ok' (nicht 'Installieren'!) klicken; Hier mal als Beispiel: Meine TrackBar, die mit Mouse-Ereignissen ausgestattet wurde:
Delphi-Quellcode:
Habs logischerweise schon längst getestet: funzt;
unit MouseTrackBar;
interface uses SysUtils, Classes, Controls, ComCtrls; type TMouseTrackBar = class(TTrackBar) private { Private-Deklarationen } protected procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseMove (Shift: TShiftState; X, Y: Integer); override; { Protected-Deklarationen } public { Public-Deklarationen } published property OnMouseUp; property OnMouseDown; property OnMouseMove; { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [TMouseTrackBar]); end; procedure TMouseTrackBar.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; end; procedure TMouseTrackBar.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; end; procedure TMouseTrackBar.MouseMove(Shift: TShiftState; X, Y: Integer); begin inherited; end; end. Gruss DelphiUser7 |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
also ich hab das jetzt mal so probiert, wie du es gepostet hast, aber onMouseDown ist im ObjectInspector
immer noch nicht sichtbar! hier mal der code:
Delphi-Quellcode:
die komponente ist nicht von mir, ich benutze sie aber und will nun eine onMouseDown Event(oder OnClick)
unit DigitLed;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; ... type TDigitLed = class(TPaintBox) private ... protected { Protected declarations } ... procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; public { Public declarations } ... published { Published declarations } ... property OnMouseDown; end; procedure Register; implementation {$R DIGITLED.DCR} procedure Register; begin RegisterComponents('MoonRed', [TDigitLed]); end; ... procedure TDigitLed.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; end; ... end. ich hab die alte komponente runter geschmissen, die modifizierte feherfrei installiert und es geht immer noch nicht! woran kann das liegen? Jemand eine Idee? gruss, iaby |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
ok ich habs hinbekommen, war mein fehler!
wenn ich jetzt aber auf die komponente clicke(hab vorher ein showmessage in die onclick prozedur geschrieben) dann kommt gar nichts!!! woran liegt das schon wieder? ich verzweifle noch :wall: gruss, iaby |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
weiß niemand wieso da einfach nichts passiert?
ich habe sonst eigentlich alles richtig gemacht. jemand einen vorschlag? gruss, iaby |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
Oh, da weiss ich nicht, ob ich das lösen kann, weil ich mit dem OnClick-Ereignis schon mal selbst immense Probleme hatte; und wie schon gesagt: Der Code stammt nicht von mir, sondern von Gandalfus; also kann ich dir darüber folglich wenig Auskunft geben; ausserdem hab ich ja die Komponente nicht, weiß also nicht, wie diese Komponente, zumal sie ja bei Delphi normalerweise gar nicht mitgeliefert ist, auf irgendwelche neu hinzugefügten Ereignisse reagiert!; :evil: :evil:
Gruss DelphiUser7 P.S.: Die Smileys gelten nicht dir, sondern der Komponente :mrgreen: ; |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
:wiejetzt:
weden die Ereignisse genauso deklariert wie die Eigenschaften ? und woher weis Delphi obs n Ereigniss is oder ne Eigenschaft ? Und woher weis Delphi, auf was dieses Ereigniss reagieren soll ? Ich bin jetzt sehr verwirrt :gruebel: |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
Die Ereignisse werden so deklariert, wie ich sie in meinem Beispiel angegeben habe; und da funzen alle drei (OnMouseUp, OnMouseDown, OnMouseMove);
Gruss DelphiUser7 |
Re: Hinzufügen von neuen Ereignissen zu Komponenten
also mit onMouseDown hab ichs auch probiert, das ging aber auch nicht!
echt komisch, kein fehler beim kompilieren, alles einwandfrei! aber reagiert wird darauf eben nicht gruss, iaby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 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