Autor Beitrag
Tristan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: Mo 17.04.06 11:36 
Moin,

bisjetzt habe Ich ein Memo dynamisch so erzeugt:
ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Var Memo:array of TMemo;
Begin
Memo[1]:=TMemo.create(self);
{oder
Memo[1].Create(Self);
End;
Bei diesem Code erscheitn jedoch immer eine EAccessViolation - Zugriffsverletzung. Hab ich irgendeine Deklaration vergessen?
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: Mo 17.04.06 11:39 
du musst dem array vorher erst mal ne länge größer als 0 geben ^^
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var memo:array[0..5of tmemo;

-oder-
var memo:array of tmemo;

setlength(memo,5);

_________________
GEIZ IST GEIL! - Ihr Sozialamt
Tristan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.04.06 01:05 
Moin!

user profile iconTristan hat folgendes geschrieben:
bisjetzt habe Ich ein Memo dynamisch so erzeugt:
[...]
ausblenden 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... :?

user profile iconTristan 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...

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tristan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.04.06 09:50 
Moin!

user profile iconTristan 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. ;)

user profile iconTristan 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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tristan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: Di 18.04.06 12:25 
Also z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Memo[1]:=TMemo.Create(Nil);
Memo[1].Parent:=Self;

//Wieder freigeben
Memo[1].Free;


Richtig?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.04.06 12:41 
Moin!

AFAIK ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.