Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TClientSocket - OnError Event per Code zuweisen

  Alt 8. Okt 2006, 15:06
Moin Christian,

das class ist nicht notwendig, aber dann musst Du, um die Methode nutzen zu können, eine Instanz der Klasse bilden (MyDummy := TMyDummy.Create.
Klassenmethoden können aber genutzt werden, ohne dass man eine Instanz erzeugen muss, dafür kann man in diesen nur nicht alles nutzen, was man in einer "normalen" Methode nutzen könnte (Felder der Klasse, Eigenschaften, "normale" Methoden, self verweist auf di e Klasse, nicht auf das Objekt).
Diese Einschränkungen dürften aber in dem Zusammenhang, in dem Du es nutzen willst, keine Rolle spielen (zumindest so wie es jetzt aussieht).

Anderenfalls lässt Du das class weg, und legst Dir ein Feld, z.B., in Deinem Formular vom Typ der Dummyklasse an.

Mal ein Beispiel mit beiden Varianten. Dazu benötigst Du nur ein Formular, und zwei Button.

Delphi-Quellcode:
type
  TMyDummyNormal = class(TObject)
  public
    procedure MyClick(Sender: TObject);
  end;

  TMyDummyClass = class(TObject)
  public
    class procedure MyClick(Sender: TObject);
  end;

type
  TForm1 = class(TForm)
    btnNormal: TButton;
    btnClass: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    FMyDummyNormal : TMyDummyNormal;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// "normale" Methode
procedure TMyDummyNormal.MyClick(Sender: TObject);
begin
  ShowMessage('NORMAL');
end;

// Klassenmethode
class procedure TMyDummyClass.MyClick(Sender: TObject);
begin
  ShowMessage('CLASS');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Instanz der Klasse erzeugen
  FMyDummyNormal := TMyDummyNormal.Create;
  // Methode zuweisen
  // Man beachte das F, denn es wird die
  // Instanz FMyDummyNormal der Klasse TMyDummyNormal benutzt
  btnNormal.OnClick := FMyDummyNormal.MyClick;
  // Methode zuweisen
  // Man beachte des T, denn es wird direkt die
  // Klassenmethode benutzt
  btnClass.OnClick := TMyDummyClass.MyClick;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Instanz wieder freigeben
  FreeAndNil(FMyDummyNormal);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat