Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponenten und Parent (https://www.delphipraxis.net/7520-komponenten-und-parent.html)

Privateer3000 14. Aug 2003 18:58


Komponenten und Parent
 
Hiho,

ich versuche zur Laufzeit erstellte TEdit, deren Inhalte (.Text)
in eine Ini zu speichern.
Das ganze findet per FindComponent statt.
Die Ini wird auch geschrieben, aber an der Stelle wo o.g. String stehen müsste, ist alllerdings leer.
Ich habe die Vermutung das das mit den zugeteilten "Parents " zu tun hat.
Denn bei der Edit.Create wird jedem TEdit eine GroupBox zugeteilt.
Siehe unten Quelltext:
(der Integer 'click' ist aktive PageControl.Index)
Delphi-Quellcode:
var
Ini: TIniFile;
aa: Integer;
cc: TEdit;
begin
Ini:=TIniFile.Create(ExtractFilePath(paramstr(0))+'posten.ini');
try
for aa:=0 to 29 do begin
cc:=FindComponent('bst'+IntToStr(click)+'name'+IntToStr(aa)) as TEdit;
Ini.WriteString('Posten1',IntToStr(aa),cc.Text);
end;
finally
Ini.Free;
ShowMessage('Erfolgreich gespeichert');
end;
end;
Warum ist der cc.Text leer?

Aya 14. Aug 2003 19:25

Re: Komponenten und Parent
 
Hi,

ich nehme mal an das FindComponent die Komponente nicht findet. Vergibst du denn beim erstelen des Edits auch einen Namen für das Edit??

Au'revoir,
Aya~

PS: Du kannst diese 2 Zeilen:
Delphi-Quellcode:
cc:=FindComponent('bst'+IntToStr(click)+'name'+IntToStr(aa)) as TEdit;
Ini.WriteString('Posten1',IntToStr(aa),cc.Text);
auch so schreiben:
Delphi-Quellcode:
ini.WriteString('Posten1',IntToStr(aa),TEdit(FindComponent('bst'+IntToStr(click)+'name'+IntToStr(aa))).Text);
finde ich persönlich schöner.

Privateer3000 14. Aug 2003 19:32

Re: Komponenten und Parent
 
ja klar, hier die Erstellung:
Delphi-Quellcode:
begin
  for x := 0 to 29 do begin
    if x mod 10 = 0 then y := 40
    else inc (y, 40);
    myedit := TEdit.Create(nil);
    myedit.Parent := GroupBox1;
    myedit.Left := x div 10 * 200;
    myedit.Top := y;
    myedit.Height := 20;
    myedit.Width := 80;
    myedit.Name := 'bst1name'+InttoStr(x);
    myedit.Text := 'bst1name'+InttoStr(x);
  end;
end;
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

Aya 14. Aug 2003 19:36

Re: Komponenten und Parent
 
Hi,

mh... halt halt... *g*
Da is nen fehler ;)

Du erstellst jedesmal ein TEdit 'myedit', ja???
Mach dir lieber einen Array of TEdit und mach für jedes Edit welches zu erstellst einen neuen Eintrag in diesem Array.

und anstelle FindComponent suchst du dann deinen Array nach dem entsprechenden Edit durch.

So verhinderst du auch ein Speicherleck welches du sonst bekommst.

Au'revoir,
Aya~

Privateer3000 14. Aug 2003 19:55

Re: Komponenten und Parent
 
Ja, aber das ist doch nicht das Problem, denk ich.
Denn auch mit der bisher verwendeten Methode der Edit-Erstellung funktionert alles bis..ja bis auf das im Thread beschriebene Problem.
Aber warum werden die Komponenten nicht gefunden?
Sie existieren ja reel, hab es mir anzeigen lassen.

Aya 14. Aug 2003 20:02

Re: Komponenten und Parent
 
Hi,

mh.. versuch mal ob es so klappt:
Delphi-Quellcode:
cc:=FindComponent('bst1name'+IntToStr(aa)) as TEdit;
Ini.WriteString('Posten1',IntToStr(aa),cc.Text);
kann mir nämlich ehrlichgesagt nur denken das er bei FindComponent einfach die Komponente nich findet weil du da bei Click irgendne falsche zahl drinhast... *zuckt leicht mit den schultern*

Au'revoir,
Aya~

Privateer3000 14. Aug 2003 20:10

Re: Komponenten und Parent
 
nein.mit dem Namen hat das nichts zu tun.
Ich glaube Eher weil die Edit mit Parent an die GroupBox gebunden sind.
Ist es möglich bei FindComponent auch das Parent festzulegen?
Ich kann mir vorstellen das sie deswegen nicht gefunden werden. Hab aber keine Ahnung.

Aya 14. Aug 2003 20:12

Re: Komponenten und Parent
 
Ahh... total übersehen :oops:

Delphi-Quellcode:
GroupBox1.FindComponent(...)
:angle2:

Au'revoir,
Aya~

Jens Schumann 14. Aug 2003 20:17

Re: Komponenten und Parent
 
Hallo,
in der Hilfe steht
Zitat:

Die Methode FindComponent gibt an, ob der Komponente eine bestimmte Komponente untergeordnet ist.
Deshalb kann Dein Ansatz nicht funktionieren.
Du kannst, da das Formualer der Besitzer aller Komponenten ist auch wenn diese auf Panels o. in Groupboxen stecken, über die Components Eigenschaft iterieren und so die Edits finden.

Privateer3000 14. Aug 2003 20:28

Re: Komponenten und Parent
 
Keine Chance...
cc.Text ist leer.
Was zum Henker ist da los?
Ich hab in einer anderen Unit dasselbe Problem:
Delphi-Quellcode:
var
myEdita,myEditb: String
....
for i:=1 to dianz do begin
myEdita:=(Form1.FindComponent('name'+IntToStr(i))as TEdit).Text;
myEditb:=(Form1.FindComponent('dgeld'+IntToStr(i))as TEdit).Text;
Memo1.Lines.Add(myEdita+' : '+myEditb+' €');
end;
Es werden lediglich die (korrekte) Anzahl Doppelpunkte ins Memo geschrieben. myEdita und myEditb sind leer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz