Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zeiger auf ein StringGrid an eine Klasse übergeben
logos - Mi 04.02.04 19:38
Titel: Zeiger auf ein StringGrid an eine Klasse übergeben
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 - Mi 04.02.04 19:40
Empfehle: property !
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.
logos - 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 - 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.
Christian S. - 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:
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
logos - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!