![]() |
edit-felder in schleifen auswerten und checkboxen komplett f
Hi Leute,
habe gleich 2 Fragen. 1. ich habe ein Programm mit 4x44 Edit-Felder den Inhalt will ich in ein Array schreiben. Kann ich das irgendwie in einer For Schleife machen. bei 176 Feldern werde ich sonst bekloppt und das Programm riesig. Das Prinzip:
Delphi-Quellcode:
Der Code funzt natürlich nicht, soll bloss darstellen was ich möchte.
for help := 1 to 44 do
str[help] := edit[help].text 2. Kann man bei Checkboxen wenn sie angeklickt werden statt des Häkchens die ganze Box schwarz füllen? Natürlich auch wieder umgekehrt. ne Menge Grüsse an alle Torsten |
Re: edit-felder in schleifen auswerten und checkboxen komple
Hallo Thorsten!
Zunächt einmal: Hier gilt die Regel: "Mehrere Fragen, mehrere Threads"! Was die Edits betrifft: a) FindComponent ist Dein Freund - aber langsam. b) besser ist es, die Edits in ein Array zu packen. Bei den CheckBoxen gilt: Selber zeichnen! Gruß Dietmar Brüggendiek |
Re: edit-felder in schleifen auswerten und checkboxen komple
Hallo,
ich würde die Felder selbst erzeugen und einem Abkömmling von TList zuweisen. Damit sparst du dir auch das Umspeicheren in ein Array. |
Re: edit-felder in schleifen auswerten und checkboxen komple
Hallo Torsten,
den Inhalt deiner Edit-Felder kannst du so abgreifen:
Delphi-Quellcode:
Gespeichert werden die Feldinhalte im Name-Value-Format. Entweder du initialisierst die tag property der Edit-Felder und erhältst sowas wie "1=Inhalt von Edit-Feld mit tag 1" oder du nimmst die auskommentierte Variante und greifst später über den Komponentennamen zu: "Edit1=Inhalt von Feld 1".
procedure TDemoForm.SaveEditText(sl: TStrings);
var i: integer; edit: TEdit; begin sl.BeginUpdate; sl.Clear; for i := 0 to ComponentCount - 1 do if Components[i] is TEdit then begin edit := Components[i] as TEdit; sl.Values[IntToStr(edit.Tag)] := edit.Text; // sl.Values[edit.Name] := edit.Text; end; sl.EndUpdate; end; Grüße vom marabu |
Re: edit-felder in schleifen auswerten und checkboxen komple
Vielen Dank, für die schnellen Antworten. Da ich aber letzte Nacht Bereitschaft hatte und raus musste, probiere ich es morgen aus.
Viele Grüsse Torsten |
Re: edit-felder in schleifen auswerten und checkboxen komple
Hi,
also mit dem Auslesen der Edit-Felder klappt das schon mal. AAAAber, ich muss jetzt die Werte aus den Variablen zurückschreiben in die Edit-Felder. Hab ein bisschen rumprobiert aber bekomme nur Fehlermeldungen.
Delphi-Quellcode:
Irgendwas mache ich falsch, aber was?var Form1: TForm1; Edit: TEdit; help: Integer; help2: Integer; vtext: array[1..16] of String; for help:= 1 to 16 do begin readln(f,str); // aus Textdatei lesen vtext[help] := str; help2 := help + 12; // weil die Editfelder die Tags 13 bis 28 haben edit.tag := Components[help2] as TEdit; // hier kommt Fehler: ungültige Typumwandlung edit.text := str; // string ins Edit-Feld schreiben end; kann mir da bitte nochmal wer auf die Sprünge helfen? :wink: Vielen Dank schon mal. Mfg Torsten |
Re: edit-felder in schleifen auswerten und checkboxen komple
Hi,
edit.tag ist ein integer!! Gruss wo |
Re: edit-felder in schleifen auswerten und checkboxen komple
ja, bloss wie geht das denn?
ach so, die Zeile heisst natürlich:
Delphi-Quellcode:
und nicht wie oben angegeben, aber die Fehlermeldung kommt so wie ich es geschrieben habe.
edit.tag := Components[help2] as TEdit; // hier kommt Fehler: ungültige Typumwandlung
mfg Torsten |
Re: edit-felder in schleifen auswerten und checkboxen komple
Nee, der Trick ist Folgender:
Edit.Tag ist ein Integer. (Tag = engl, 'Etikett', Price tag = 'Preisetikett') Du weisst deinen ganzen Edit.Tag Feldern unterschiedliche Werte zu. Das sind die Indizes in ein Array Of String (fEditValues) Werte abholen:
Delphi-Quellcode:
Wie gehts? Ich gehe alle Komponenten auf der Form durch, wenn die Komponente ein TEdit ist, nehme ich den 'Tag' als Index in mein Array.
For i:=0 to Componentcount - 1 do
If Components[i] is TEdit Then Begin aMyIndex := TEdit (Components[i]).Tag; fEditValues [aMyIndex] := TEdit (Components[i]).Text; End; Zurückschreiben geht genauso:
Delphi-Quellcode:
For i:=0 to Componentcount - 1 do
If Components[i] is TEdit Then Begin aMyIndex := TEdit (Components[i]).Tag; TEdit (Components[i]).Text := fEditValues [aMyIndex]; End; |
Re: edit-felder in schleifen auswerten und checkboxen komple
Bei meinem Code Beispiel müssen die Zuweisungen einfach nur umgekehrt werden.
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.LoadEditText(sl: TStrings);
var i: integer; edit: TEdit; begin for i := 0 to ComponentCount - 1 do if Components[i] is TEdit then begin edit := Components[i] as TEdit; edit.Text := sl.Values[IntToStr(edit.Tag)]; // edit.Text := sl.Values[edit.Name]; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz