Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi edit-felder in schleifen auswerten und checkboxen komplett f (https://www.delphipraxis.net/48044-edit-felder-schleifen-auswerten-und-checkboxen-komplett-f.html)

elcomportal 19. Jun 2005 22:17


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:
for help := 1 to 44 do
 str[help] := edit[help].text
Der Code funzt natürlich nicht, soll bloss darstellen was ich möchte.


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

Brüggendiek 19. Jun 2005 22:24

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

WoGe 19. Jun 2005 22:43

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.

marabu 20. Jun 2005 07:33

Re: edit-felder in schleifen auswerten und checkboxen komple
 
Hallo Torsten,

den Inhalt deiner Edit-Felder kannst du so abgreifen:

Delphi-Quellcode:
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;
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".

Grüße vom marabu

elcomportal 20. Jun 2005 21:19

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

elcomportal 23. Jun 2005 18:03

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:


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;
Irgendwas mache ich falsch, aber was?
kann mir da bitte nochmal wer auf die Sprünge helfen? :wink:
Vielen Dank schon mal.
Mfg
Torsten

WoGe 23. Jun 2005 18:18

Re: edit-felder in schleifen auswerten und checkboxen komple
 
Hi,

edit.tag ist ein integer!!

Gruss
wo

elcomportal 23. Jun 2005 18:22

Re: edit-felder in schleifen auswerten und checkboxen komple
 
ja, bloss wie geht das denn?

ach so, die Zeile heisst natürlich:
Delphi-Quellcode:
edit.tag := Components[help2] as TEdit;  // hier kommt Fehler: ungültige Typumwandlung
und nicht wie oben angegeben, aber die Fehlermeldung kommt so wie ich es geschrieben habe.

mfg
Torsten

alzaimar 23. Jun 2005 18:48

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:
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;
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.
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;

marabu 23. Jun 2005 18:54

Re: edit-felder in schleifen auswerten und checkboxen komple
 
Bei meinem Code Beispiel müssen die Zuweisungen einfach nur umgekehrt werden.

Delphi-Quellcode:
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;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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