Autor Beitrag
dany
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Di 29.07.03 16:09 
Hi,

ich haben 2 Probleme:

1) wie kann ich innerhalb einer Klasse den Instanznamen abfragen.

2) ich möchte in einer Klasse eine TString-Variable deklarieren. Diese soll beim Create einer Instanz dieser Klasse per Adressübergabe eine Stringliste bekommen. Werden innerhalb dieser Klasse Veränderungen an der String-Liste vollführt, soll das auf der Orginal-Stringliste passieren, d.h. auserhalb der Klasse oder unit sollen die Änderungen sofort sichtbar sein. Ich möchte nicht bei jeden Funktionsaufruf die Liste übergeben, oder bei Veränderungen zurückschreiben.

dany
Nightmare_82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 260



BeitragVerfasst: Di 29.07.03 19:19 
zu 2. :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
TMyClass = class
private
  FList : TStringList;
public
  constructor create(List : TStringList);
end;


damit übergibst du einen Pointer auf die Klasse. Den speicherst du in jeder Klasse, also: FList : TStringList;

Um zu merken, wann die Liste upgedatet wird, kannst du z.B. sowas machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
TMyList = class(TStringList)
public
  procedure update;
end;


Dann kannst du jedesmal, wenn ein Objekt die Liste bearbeitet, update aufrufen, um auf dem aktuellsten Stand zu sein. Eine andere Möglichkeit wäre ein Event, oder du übergibst den Pointer auf deine Hauptklasse:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
TManager = class
  procedure updateList;
end;

TListEdit = class
private
  FManager : TManager;
  FList : TStringList;

public
  constructor create(Manager : TManager; List : TStringList);
  
  procedure editList; // hier rufst du dann am Ende FManager.updateList auf