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:
Warum ist der cc.Text leer?
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; |
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:
auch so schreiben:
cc:=FindComponent('bst'+IntToStr(click)+'name'+IntToStr(aa)) as TEdit;
Ini.WriteString('Posten1',IntToStr(aa),cc.Text);
Delphi-Quellcode:
finde ich persönlich schöner.
ini.WriteString('Posten1',IntToStr(aa),TEdit(FindComponent('bst'+IntToStr(click)+'name'+IntToStr(aa))).Text);
|
Re: Komponenten und Parent
ja klar, hier die Erstellung:
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
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; |
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~ |
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. |
Re: Komponenten und Parent
Hi,
mh.. versuch mal ob es so klappt:
Delphi-Quellcode:
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*
cc:=FindComponent('bst1name'+IntToStr(aa)) as TEdit;
Ini.WriteString('Posten1',IntToStr(aa),cc.Text); Au'revoir, Aya~ |
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. |
Re: Komponenten und Parent
Ahh... total übersehen :oops:
Delphi-Quellcode:
:angle2:
GroupBox1.FindComponent(...)
Au'revoir, Aya~ |
Re: Komponenten und Parent
Hallo,
in der Hilfe steht Zitat:
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. |
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:
Es werden lediglich die (korrekte) Anzahl Doppelpunkte ins Memo geschrieben. myEdita und myEditb sind leer.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
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