AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten mit onClick ausstatten...

Ein Thema von Tonic1024 · begonnen am 3. Dez 2003 · letzter Beitrag vom 3. Dez 2003
Antwort Antwort
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 08:25
Moin...

Neue Frage neuer Thread...

Ich habe nun schon einige Tutorials gelesen, aber irgentwie fehlt mir immernoch eines wie man seine Komponente mit ereignissen (Typ TNotifyEvent würde schon reichen) ausstattet. Habs noch nicht hinbekommen. Erbt man die nicht mit?

Hoffe jemand weiß...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#2

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 09:08
Dazu legst du eine Private Variable vom Typ TNotifyEvent ( oder einem anderen ) an und ein published Property vom selben Typ.
Und dann musst du dieses Event nur noch an den Stellen im Code, an denen es auftreten soll, abfeuern. Vorher noch prüfen, ob dem Event eine Prozedur zugewiesen wurde.

Delphi-Quellcode:
  ...
  anyqry.Open; //Irgendwas machen
  If Assigned( FOnQueryOpen ) Then //Wenn dem Event etwas zugewiesen ist
    FOnQueryOpen( Self ); //dann starte die externe Prozedur
  ...
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 09:43
Hm... Okay, aber wo kommt dann der dein Codeschnipsel rein?

Ich hab so gemacht, wie du gesagt hast...

Wenn ich jetzt aber...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var btn: TBtn;
begin
  btn:=TBtn.create(Form1);
  btn.onClick:=Dings;
end;
...zuweise, dann muss ich 'Dings' aber doch auch aus der Klasse TBtn (meine Klasse) aufgerufen werden. Dings müsste dann ja auch eine prozedur vom Formular sein... Oder?!?
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#4

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 09:48
Das kommt an die Stelle in der Komponente, an der das Event auftritt. Im Bsp. halt das öffnen eines Querys.
Kann aber quasi an jede Stelle, die du für sinnvoll hälst.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 09:58
Moin...

Ich war nicht schnell genug mit dem editieren...

Aber mein Problem ist halt, dass ich es irgentwie nicht gebacken kriege aus der Klasse TBtn heraus bei onClick den Code aus Form1 auszuführen...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#6

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 10:24
Ja, das müsste funktionieren, sofern Dings eine Prozedur mit den gleichen Parametern wie TNotifyEvent ist.
Also Procedure Dings( Sender: TObject ) Des weiteren muss das Event onClick in deiner Komponente natürlich auch irgendwann einmal ausgelöst werden. Dazu musst du halt zunächst einmal innerhalb der Komponente feststellen, wann geklickt wurde ( für OnClick). Wie du das machst hängt von deiner Komponente ab. Du könntest z.B. dem OnClick - Event eines Objektes auf deiner Komponente dein eigenes OnClick zuweisen.

Delphi-Quellcode:

type
 TBtn = class( TComponent )
 private
   FOnClick: TNotifyEvent;
   Procedure DoOnClick( Sender: TObject );
   [..]
 public
   [..]
 published
   Property OnClick: TNotifyEvent Read FOnClick Write FOnClick;
   //Die externe Prozedur ( Dings ) ist diesem Property und damit FOnClick zugewiesen
   [..]
End;

[..]

Procedure TBtn.DoOnClick( Sender: TObject ); // Diese Prozedur führst du aus, wann immer dein Programm einen Klick feststellt
Begin // oder\und du weist sie dem OnClick-Event andere Objekte in deier Komponente zu
  If Assigned( FOnClick ) Then // in deinem Fall True, da die externe Prozedur "Dings" zugewiesen ist
    FOnClick( Self ); // führt die externe Prozedur "Dings" mit sich selbst als Sender aus
End;
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 13:36
Spitze...


Mir ist zwar nicht gleich ein licht aufgegangen, und es hat auch nicht sofort funktioniert, aber nu gehts. Und das Beste... Ich weiß sogar warum

Danke...

Bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#8

Re: Komponenten mit onClick ausstatten...

  Alt 3. Dez 2003, 13:50
Freut mich!
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:24 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