Methoden der übergeordneten Objekt-Instanz

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
ore12
Beiträge: 20
Registriert: Fr 3. Feb 2012, 16:37

Methoden der übergeordneten Objekt-Instanz

Beitrag von ore12 »

Hallo,

Ich habe eine Objekt-Instanz MyController (vom Typ TController), die
mehrere Einzelobjekte vom Typ TMyAgent erzeugen, in einer Liste
verwalten und steuern soll:

MyController -----> MyAgent1
.......................MyAgent2
.......................MyAgent3

Gibt es einen Weg, mit dem die MyAgent-Objekte ihrerseits public Properties des
MyController-Objektes aufrufen können?

Ich habe schon versucht, der Create-Methode von TMyAgent die
aufrufende/erzeugende Objektinstanz mitzugeben,
etwa so: TMyAgent.Create(TheController: TObject)...geht aber so nicht.

Wäre für Eure Hinweise dankbar

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Methoden der übergeordneten Objekt-Instanz

Beitrag von theo »

ore12 hat geschrieben: Ich habe schon versucht, der Create-Methode von TMyAgent die
aufrufende/erzeugende Objektinstanz mitzugeben,
etwa so: TMyAgent.Create(TheController: TObject)...geht aber so nicht.
Warum nicht?

EDIT: Ach so, löst das dein Problem?

Code: Alles auswählen

type
 
TMyController = class; //forward
 
TMyAgent = class
private
  fController:TMyController;
end;
 
TMyController = class
end;     

ore12
Beiträge: 20
Registriert: Fr 3. Feb 2012, 16:37

Re: Methoden der übergeordneten Objekt-Instanz

Beitrag von ore12 »

Danke theo für den Hinweis,

habe das Problem gelöst, u.a. durch eine Anregung im Posting von Kay vom 14.4.
Ich wollte das ganz allgemein auch für Klassen, die in verschiedenen Units liegen, also ohne Forward-Deklaration, wie Du es vorgeschlagen hast.
Hier für alle, denen es nutzen kann:

Code: Alles auswählen

 
in der "untergeordneten" Klasse
 
TMeineProzedur = procedure of object;
 
TAgent = class(TObject)
                 ....
                 constructor Create(MeineProzedur: TMeineProzedur)
 
und mache den Konstruktor-Aufruf des TAgent-Objektes von der "übergeordneten" Objekt-Instanz:
 
....Create(@self.ProzedurName)
 
die TAgent-Instanz kann dann beliebig ProzedurName ausführen
 

Benutzeravatar
Maik81SE
Beiträge: 327
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Farben der übergeordneten Objekt-Instanz Übernehmen

Beitrag von Maik81SE »

Moin @ll,

ich habe Analog das Ähnliche Problem, bezieht es sich bei mir jedoch nur auf die Übernahme der Farben zw. Debian und Win7.

Kurz erklärt. ich verwende zum Proggen Ubuntu 13.10.
Das Programm, welches ich jetzt in Arbeit habe, soll unter Unix und WIndows laufen... soweit wird alles auch sauber erledigt.
Das einzige, was mich Stört...

Nun schaut es euch mal bitte an... :?
Farben bei Ubuntu
Farben bei Ubuntu
Ubuntu13-10.jpg (9.74 KiB) 1181 mal betrachtet
Darstellung auf Ubuntu 13.10
Farben bei Win7
Farben bei Win7
Darstellung auf Win7

Bei Allen Systemen handelt es sich um ein 64-Bit System

Der Quellcode für diese Routine schaut wie nachstehend beschrieben aus.

Code: Alles auswählen

procedure TForm2.FormShow(Sender: TObject);
begin
  {$IFDEF WINDOWS}
    TabSheet1.Color := clTeal;
    Caption         := 'Tabsheet1 set with clTeal';
  {$ENDIF}
  {$IFDEV Unix}
    Caption         := 'Sie verwenden ein Debian System. Daher werden Farben nicht extra gesetzt.';
  {$ENDIF}
  PageControl1.ActivePage := TabSheet1;
  PageControl1Change(self);
end;
 
WIe ihr aber auch sehen könnt, werden die Texte richtig übergeben nur die Übernahme der Farben... :| Naja... No Comment

Wäre Suber, wenn jemand von euch eine Lösung dafür hat und ja ich weiß, ich könnte diese auch gleich zuweisen, aber bin ich der Meinung, das ist Anfänger art.
Sicherlich werd ich nicht das Letzte mal an der Unix / Windows umschaltung hängen. daher würde ich dies gern bei diesem einfachen 08/15 Beispiel Anfangen.

Gruße Maik

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Methoden der übergeordneten Objekt-Instanz

Beitrag von m.fuchs »

Maik81SE hat geschrieben:ich habe Analog das Ähnliche Problem, bezieht es sich bei mir jedoch nur auf die Übernahme der Farben zw. Debian und Win7.
Was hat dein Problem denn mit dem Ursprungsproblem hier zu tun? Also außer dass die gleiche Programmiersprache genutzt wird.

Dein Farbproblem liegt daran, dass das PageControl von Windows gezeichnet wird. Du müsstest das Zeichnen selber übernehmen, wenn du (unnötigerweise) die Farben verändern willst.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten