Autor Beitrag
logos
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.02.04 19:38 
Hallo,

ich hab jetzt schon längere Zeit in diesem Forum herumgesucht, bin aber bis jetzt noch auf keine Lösung gestoßen. Deshalb frage ich nun selbst: Wie stelle ich es an, dass ich einer Klasse einen Zeiger auf ein externes StringGrid übergebe, damit diese Klasse später darauf zugreifen kann. Mit extern meine ich ein StringGrid, das sich nicht innerhalb der Klasse befindet.
Hoffe es gibt hier jemand der mir da etwas weiterhelfen kann.
Vielen Dank schon mal im Voraus.

Gruß

logos
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Mi 04.02.04 19:40 
Empfehle: property !

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type CLustig=class
 private:
 
  mGrid: TStringGrid;

 public:

  property Grid: TStringGrid read mGrid write mGrid;
end;


Setzen von außen kannst du es mit dem property Grid und intern hast du den member mGrid.

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
logos Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.02.04 20:23 
Hm.... aber wenn ich dann innerhalb der Klasse etwas an diesem StringGrid ändere, dann hat es ja keine Auswirkung auf das äußere StringGrid. Oder versteh ich da was falsch?

Gruß

logos
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Mi 04.02.04 20:26 
Da du nur eine Referenz übergibtst sind die beiden StringGrids identisch.

Oder sagen wir besser so: Es gibt nur eine StringGrid Instanz und zwei Objektreferenzen drauf. Welche Referenz du verwendest ist ja egal, weil beide auf die selber Instanz verweisen :wink: Probiers einfach mal aus.

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.02.04 20:27 
Hallo!

Das StringGrid in der Klasse wurde ja nicht mit einem "Create" erzeugt. Durch die Zuweisung vom externen StringGrid zu dem StringGrid in der Klasse wird keine Kopie erzeugt, sondern in der Klasse lediglich eine Referenz auf das externe StringGrid hinterlegt.

Nehmen wir z.B. an, dass das extrene StringGrid "gridExt" heißt und folgender Code verwendet wird:
ausblenden Delphi-Quelltext
1:
2:
PeterLustig := CLustig.Create;
PeterLustig.Grid := gridExt;

Dann ist es nun egal, ob Du über "PeterLustig.Grid" oder über "gridExt" auf das StringGrid zugreifst. Die beiden zeigen beide auf das selbe Grid. Es sind sozusagen nur zwei Namen für dasselbe Grid.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
logos Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.02.04 20:33 
Hallo,

vielen Dank für eure schnellen Antworten. Habs so gemacht, wie es MaxiTB vorgeschlagen hat und es hat funktioniert. Vielen Dank an dich MaxiTB.
Vielen Dank auch an Peter Lustig für die gute Erklärung.

Gruß

logos