Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TMemo dynmaisch in Array erstellen
Tristan - Mo 17.04.06 11:36
Titel: TMemo dynmaisch in Array erstellen
Moin,
bisjetzt habe Ich ein Memo dynamisch so erzeugt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); var Memo:TMemo; Begin
for I:=Listbox1.SelCount-1 downto 0 do Begin Memo:=Tmemo.Create(self); with Memo do Begin name:='Memo'+inttostr(Viewernumber); parent:=self; width:=100; Height:=100; end; |
Jedoch wusste ich nicht so richtig wie ich die Dynmaisch erzeugten Komponenten am Ende wieder freigeben/entfernen kann. Deshalb habe ich versucht TMemo in einem Array zu erzeugen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Var Memo:array of TMemo; Begin Memo[1]:=TMemo.create(self); |
Bei diesem Code erscheitn jedoch immer eine EAccessViolation - Zugriffsverletzung. Hab ich irgendeine Deklaration vergessen?
starsurfer - Mo 17.04.06 11:39
du musst dem array vorher erst mal ne länge größer als 0 geben ^^
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var memo:array[0..5] of tmemo;
-oder- var memo:array of tmemo;
setlength(memo,5); |
Tristan - Mo 17.04.06 12:34
Danke, jetzt funktionierts, was ist eigentlich der Unterschied zwischen Memo[0].Create(Self); und Memo[0]:=TMemo.Create(Self); ?
Narses - Di 18.04.06 01:05
Moin!
Tristan hat folgendes geschrieben: |
bisjetzt habe Ich ein Memo dynamisch so erzeugt:
[...]
Delphi-Quelltext 1:
| Memo:=Tmemo.Create(self); |
[...]
Jedoch wusste ich nicht so richtig wie ich die Dynmaisch erzeugten Komponenten am Ende wieder freigeben/entfernen kann. |
Wenn du sowas machst, dann gehören die Memos dem Formular, die solltest du dann besser nicht mehr selbst wieder freigeben... :?
Tristan hat folgendes geschrieben: |
was ist eigentlich der Unterschied zwischen Memo[0].Create(Self); und Memo[0]:=TMemo.Create(Self); ? |
Ersteres ist falsch :D und zweiteres erzeugt eine Instanz von TMemo und weist diese einer Variablen zu. ;)
cu
Narses
PS: Wo hast du eigentlich den TDelphiVNCViewer her? ;) Interessiert mich...
Tristan - Di 18.04.06 09:26
Moin, den VNCViewer hab ich von Torry Components - jedoch ist diese Komponente leider nur in der Demoversion verfügbar.
Zitat: |
Wenn du sowas machst, dann gehören die Memos dem Formular, die solltest du dann besser nicht mehr selbst wieder freigeben |
Und wie kann ich die Komponenten wöhrend der Laufzeit wieder "schonend" entfernen?
Narses - Di 18.04.06 09:50
Moin!
Tristan hat folgendes geschrieben: |
Moin, den VNCViewer hab ich von Torry Components - jedoch ist diese Komponente leider nur in der Demoversion verfügbar. |
Oh, schade, naja, das nutzt dann ja nix. ;)
Tristan hat folgendes geschrieben: |
Zitat: | Wenn du sowas machst, dann gehören die Memos dem Formular, die solltest du dann besser nicht mehr selbst wieder freigeben |
Und wie kann ich die Komponenten wöhrend der Laufzeit wieder "schonend" entfernen? |
Beim .Create(
NIL) übergeben, statt dem Formular, aber den Parent trotzdem auf das Formular setzen, dann "gehört" das Control dir und du mußt dich auch um die Freigabe kümmern.
cu
Narses
Tristan - Di 18.04.06 12:25
Also z.B.
Delphi-Quelltext
1: 2: 3: 4: 5:
| Memo[1]:=TMemo.Create(Nil); Memo[1].Parent:=Self;
Memo[1].Free; |
Richtig?
Narses - Di 18.04.06 12:41
Moin!
AFAIK ;)
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!