AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekte zur laufzeit erstellen und NEUE events zuordnen
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte zur laufzeit erstellen und NEUE events zuordnen

Ein Thema von DelTurbo · begonnen am 4. Jan 2010 · letzter Beitrag vom 7. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.190 Beiträge
 
Delphi 2007 Architect
 
#1

Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 14:13
Hi,

ich habe ein problem. Ich habe mir eine Unit gemacht die soll vollkommen "alleine" laufen. Also nix von Form1 wissen. Objecte mit z.b. obj:=Tobj.Create erstellen klappt alles. Nun habe ich aber ein Object dem ich ein event zuordnen müsste und ich weiss nicht wie. Es sind keine Objecte die irgendwie sichbar sind. Also keine Buttons oder sowas. Wie das geht weiss ich. Sowas wird auch an jeder ecke beschrieben.

Da die Unit keine Form besitzt stehe ich hier im moment auf dem schlauch. In der "MainUnit" klappt das einwanfrei. Da sind die proceduren ja oben im object (Form1) drinne. Wäre fein wenn mir mal einer auf die sprünge helfen könnte....


Vielen dank im voraus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 14:23
Es müßen einach nur "Methoden" sein,

also kannst du dir in deiner Unit irgendeine Verwaltunsklasse erstellen und im Initialization-Abschnitt ein Objekt davon instantiieren.

Deine Methoden legst du nun in diese Klasse und kannst sie dann über das Objekt deinen Ereignissen zuweisen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 14:25
Du musst deinem Object einen OnClick-Handler-Methode verpassen und dann dort, wo du es brauchst bzw. eben Zugriff darauf hast das OnClick-Event der Methode zuweisen:
Delphi-Quellcode:
TDeinObject = class(...)
public
  procedure OnClickHandler(Sender: TObject);
end;

{ In deiner Form-Unit erzeugst du wohl eine Instanz deines TDeinObject
  und dort musst du dann auch die Zuweisung des Event-Handlers macht: }


var
  do : TDeinObject;

procedure TForm1.Button1Click(Sender: TObject);
begin
  do := TDeinObject.Create(...);
  Button2.OnClick := do.OnClickHandler;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 14:32
Generell kannnst du das so machen:

Zuerst hier die Klasse, die das Event auslöst
Delphi-Quellcode:
type
  TMeinEvent = procedure(Sender: TObject; Parameter: Integer) of Object;

  TMeineAusloesendeKlasse = class(TBla)
  private
    fMeinEvent: TMeinEvent;
  public
    OnMeinEvent: TMeinEvent read fMeinEvent write fMeinEvent;
    procedure IrgendEineProzedureDieDasEventAusloest;
  end;


procedure TMeineAusloesendeKlasse.IrgendEineProzedureDieDasEventAusloest();
begin
  if Assigned(fMeinEvent) then
    fMeinEvent(self, 17);
end;
Und jetzt die Klasse, die das Event implementiert (heißt das so?!):
Delphi-Quellcode:
type
  TMeineKlasse = class(TFoo)
  private
    fAndereKlasse: TMeineAusloesendeKlasse;
    procedure AndereKlasseHatEventAusgeloest(Sender: TObject; Parameter: Integer);
  public
    constructor Create();
  end;

constructor TMeineKlasse.Create();
begin
  fAndereKlasse := TMeineAusloesendeKlasse.Create;
  fAndereKlasse.OnMeinEvent := AndereKlasseHatEventAusgeloest;
end;

procedure TMeineKlasse.AndereKlasseHatEventAusgeloest(Sender: TObject; Parameter: Integer);
begin
  showmessage('Here we go!');
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.190 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 14:44
Ersmtal tausend dank. Aber ich glaube ich peil das grad nicht. Hier mal ein beispiel...



Delphi-Quellcode:
unit FTP;

interface
uses
  clTcpClient, clFtp,clCertificateStore, clCertificate,
  ComCtrls,Classes;


implementation
uses
  SysUtils,IniFiles;


procedure CheckCert;
begin
   `statement`
end; {CheckCert}

procedure DoFTP(FName:String);
var
  Source   :TclFtp;
begin
  Source:=TclFtp.Create(nil);
  Source.OnVerifyServer:=CheckCert; <-- dort schimpft er rum, das die sachen nicht passen

[snip]

  Source.Free;
end;
EDIT: Ups, da hab ich nicht ausgepasst. Post überschnitten. Ich war die ganze zeit am antworten
Nochmal vielen dank. Ich versuch das mal umzusetzten.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.190 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 15:10
Ufffffff,

ist das kompliziert. Wenn man sich mal den ASM-Code ansieht schreibt er nur den pointer auf die routine ins objekt (Also Objectadr.+$64). Aber damit man das "sauber" durch den compiler bekommt muss man so einen aufwand treiben??? Das hätte ich nicht gedacht. Kein wunder das ich wie Ochs vorm Berg da stehe.

Anhand meines Codes dachte ich "naja wird wohl nur irgendwo deklariert werden müssen"...

Da ihr nun wisst was ich genau meine bleibt die vorgehensweise???
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 15:23
Die Vorgehensweise ist, dass du um CheckCert und DoFTP eine Klasse baust. Hilft dir sicherlich auch in anderen Sachen weiter.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#8

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 16:51
Hallo DelTurbo,

Zitat von DelTurbo:
Ufffffff,

ist das kompliziert. Wenn man sich mal den ASM-Code ansieht schreibt er nur den pointer auf die routine ins objekt (Also Objectadr.+$64). Aber damit man das "sauber" durch den compiler bekommt muss man so einen aufwand treiben??? Das hätte ich nicht gedacht. Kein wunder das ich wie Ochs vorm Berg da stehe.
Ist kein Aufwand, sondern OOP. Das Problem liegt daran, dass Du dem Event eine Prozedur zuweisen willst. Delphi erwartet aber eine Methode, also eine Funktion oder Prozedur einer Klasse. Das kommt daher, dass Klassenmethoden als versteckenten Parameter die Referenz zur Objektklasse selbst mit übergeben: Das ist das bekannte Self.

Dein Beispiel für die Clever Internet Suite müßte nun so aussehen:

Delphi-Quellcode:
unit FTP;

interface

uses
  clTcpClient, clFtp, clCertificateStore, clCertificate,
  ComCtrls, Classes;

type
  TMeineKlasse = class(TObject)
  private
  public
    procedure CheckCert;
    procedure DoFTP(FName:String);
  end;

implementation

uses
  SysUtils, IniFiles;

procedure TMeineKlasse.CheckCert;
begin
  `statement`
end; {CheckCert}

procedure TMeineKlasse.DoFTP(FName:String);
var
  Source: TclFtp;
begin
  Source := TclFtp.Create(nil);
  Source.OnVerifyServer := CheckCert; // jetzt passt das hier, falls die Parameter sonst stimmen
  Source.Free;
end;
Das ganze dann noch mit Konstruktor und Destruktor versehen und die Klasse entsprechend instanzieren. Überlichweise würde man das Source Objekt als Feld der Klasse deklarieren, im Konstruktor das Source Objekt erzeugen und entsprechend im Destruktor freigeben.

Als Tipp für ein gutes Einsteigertutorial zu Methoden in Delphi / ObjectPascal:
http://www.delphi-treff.de/sprachen/...scal/methoden/

Viele Grüße,

Assertor
Frederik
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.190 Beiträge
 
Delphi 2007 Architect
 
#9

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 17:14
Ui,

vielen vielen dank. Damit sollte ich nun zurecht kommen.

Gruss

Suchbegriffe: Objekte zur Laufzeit erstellen event zuordnen ohne Form
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#10

Re: Objekte zur laufzeit erstellen und NEUE events zuordnen

  Alt 4. Jan 2010, 17:22
Zitat von DelTurbo:
vielen vielen dank. Damit sollte ich nun zurecht kommen.
ist praktisch das, was ich in #2 schon beschrieben hatte
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 04:19 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