AGB  ·  Datenschutz  ·  Impressum  







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

OnEvent überschreiben?

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Aug 2004 · letzter Beitrag vom 22. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

OnEvent überschreiben?

  Alt 19. Aug 2004, 18:47
hallöle,

wie kann ich ein OnEvent umschreiben? z.b "OnConnect"?

heisst sicher nicht "procedure OnConnect(...); override;" oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 18:54
definier das Event einfach neu. Mal nen Beispiel mit OnClick
Delphi-Quellcode:
  TNewButton = class(TButton)
  private
    FNewOnClick: TNotifyEvent;
    procedure FOnClickProc(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnClick: TNotifyEvent read FNewOnClick write FNewOnClick;
  end;

constructor TNewButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  inherited OnClick := FOnClickProc;
end;

procedure TNewButton.FOnClickProc(Sender: TObject);
begin
  if Assigned(FNewOnClick) then FNewOnClick(Sender);
  //do something other on Click too
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 18:55
Was meinst Du mit "Umschreiben"?
Der Event-Property OnEvent wird immer OnEvent heißen. Du kannst aber neue Events definieren.

Was willst Du eigentlich machen (bzw. welche Komponenen willst Du "umschreiben")?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 18:57
Zitat von SirThornberry:
definier das Event einfach neu. Mal nen Beispiel mit OnClick
Für diese Art des "Umschreibens" haben die Entwickler der Komponente aber i.d.R. eine DoOnClick/DoClick-Methode spendiert, die man einfach überladen kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:00
Danke SirThornberry,

auch wenn ich noch nicht alle so verstehe <g>

Was wird da mit assigned() geprüft? ich weiss das die funktion prüft ob der inhalt nil ist aber mehr nicht.

Zitat:
Was meinst Du mit "Umschreiben"?
Also ich habe eine klasse von TClientSocket abgeleitet, ich möchte das "onconnect" ereignis so modifizieren, das es einige sachen "sendet", also "sendtext",

nur ka wie <g>
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:03
mit dem Assigned wird einfach geprüft ob das neue Ereignis zugewiesen ist

@Bernhard Geyer: Leider aber nicht immer und wenn man die Sourcen nicht hat ist es schwer heraus zu finden (wenn man nur die DCU's hat). Somit hab ich mir das so angewöhnt. Du meinst bestimmt auch "überschreiben" oder meinst du wirklich "überladen"?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:06
Zitat von Pseudemys Nelsoni:
Also ich habe eine klasse von TClientSocket abgeleitet, ich möchte das "onconnect" ereignis so modifizieren, das es einige sachen "sendet", also "sendtext",
Ich würde keine Ableitung von TClientSocket machen sondern entweder:

1, Ein Komponente, welche sich mit einer TClientSocket-Komponente verbindet (wie es Delphi mit TDatabase/TTable/TDataSource/...) auch macht.

2, Eine TClientSocket-Komponente als Member deiner Klasse erzeugst und deine Komponente z.B. nur von TComponent ableitest. Damit hast Du keine Probleme mehr irgendwelche unnötigen Properties/Events/Methoden.

Beide Lösungen sind auch viel eher an das gebräuchliche ISO-Schichtenmodell angelehnt, wie es z.B. auch im Internet verwendet wird (FTP -> TCP -> IP -> "Ethernet-Protokol" -> HW-Sicherungsschicht).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:07
Zitat von SirThornberry:
Leider aber nicht immer und wenn man die Sourcen nicht hat ist es schwer heraus zu finden (wenn man nur die DCU's hat). Somit hab ich mir das so angewöhnt. Du meinst bestimmt auch "überschreiben" oder meinst du wirklich "überladen"?
Überschreiben ist es. Aber hab auch schon 2 andere Lösungsmöglichkeiten aufgezeigt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#9

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:10
oh man, ich glaub ich bin zu blöd dazu, sirthornberry

ist "FNewOnClick" denn nicht immer "assigned" ? was passiert wenn assigned false ist? funzt der button click dann nicht oder wie ist das <g>

Bernhard, ich glaub das ist mir auch "zu schwer"
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:11
Hi,

du kannst dir das so vorstellen wie wenn du einen doppelklick auf ne kompo machst und der damit z.B. das OnClick event zuweißt. Wenn es nicht "assinged" ist dann passiert nichts und wenn es "assinged" ist, dann wird dein Code ausgeführt.
  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 00:35 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