Avatar billede thbala Nybegynder
16. november 2004 - 20:32 Der er 6 kommentarer og
1 løsning

edit1 som variabel

jeg skal have skrevet noget i en bestemt edit med et indexnummer. hvilken edit der skrives i skal afhænge af en variabel der kan antage forskellige tal.. f.eks. hvis variablen har værdien 1 skal der skrives i edit1 og hvis variablen har værdien 10 skal der skrives i edit10... hvordan bærer man sig ad med det??
Avatar billede sovsekoder Nybegynder
16. november 2004 - 20:35 #1
ved enten at putte edit kontrollerne ind i et array, og tilgå dem ved:
editArray[index]

hvor index angiver hvilken kontrol man vil ha' fat i.

ellers skulle du lave en funktion der returnerer den edit-kontrol du skal bruge på baggrund af index variablen som input. Således at du kalder GetEdit(index) for at få edit kontrollen.
Avatar billede hrc Mester
16. november 2004 - 20:35 #2
Du kan bruge TEdits.Tag som du så kan søge efter. Der findes nemlig en liste over de komponenter der findes på en form. Hvis du gennemløber denne (det er enten Controls eller Components - sidder ikke ved en Delphi-maskine), så kan du kigge efter tag

men koden ligner noget i denne retning

for i := 0 to COntrolsCount - 1 do
  if Controls[i] is TEdit then
    if TEdit(Controls[i]).Tag = Value then
      TEdit(Controls[i]).Text := 'Hej mor';
Avatar billede martinlind Nybegynder
16. november 2004 - 20:35 #3
du kan evt. bruge en TObjectList den kan indeholde alle de edit comp. du har brug for så kan du srive

TEdit(MyList[Index]).Text := 'Hest';

Og hvis du er nybegynder er det nok den vej du skal gå
Avatar billede martinlind Nybegynder
16. november 2004 - 20:40 #4
var
  cnt : integer;
  MyList : TObjectList;

begin
  MyList := TObjectList.Create(TRUE);
  for Cnt := 0 to 1000 do MyList.Add(TEdit.Create(NIL));
  for Cnt := 0 to 1000 do TEdit(MyList[Cnt]).Text := IntToStr(Cnt);
  // husk når du er færdig med at bruge dine edit comp. skal du free den, det kan du gøre ved at MyList.free, da den blev lavet med Owned objects så free du og de 1000 edit comp. på den måde
end;
Avatar billede tolderlund Nybegynder
17. november 2004 - 08:46 #5
Index := 2;
  (FindComponent('Edit'+IntToStr(Index)) as TEdit).Text := 'Hello';
Avatar billede hrc Mester
17. november 2004 - 09:55 #6
Undskyld jeg kan ikke lade være med at brokke mig lidt. Jeg synes du har valgt en dårlig løsning.

1. Det er tæt på tumpet programmeringteknik ikke at give komponenterne fornuftige navne. Edit1 siger intet om hvad den bruges til, mens NavnEdit eller eNavn begge forklarer, at det er en TEdit der indeholder et navn.

2. Derfor er det også dumt at søge på en komponents navn. Det er langtfra så sikkert som at bruge tag.

3. Hvordan vil du takle et index mindre end 0? Du kan jo ikke have en 'Edit-1'.

(og ja, jeg synes stadig mit svar er bedst)
Avatar billede thbala Nybegynder
17. november 2004 - 12:32 #7
grunden til at jeg valgte det svar jeg gjorde var at jeg kunne forstå det og det uden videre kunne bruges i det projekt jeg er ved. Jeg er nybegynder i delphi og derfor til enkle løsninger..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester