Nazwa editxx ze stringu

pioncz

Użytkownik
Dołączył
Marzec 29, 2007
Posty
130
Witam,
Przepraszam, ale nie wiedziałem jak streścić temat. Chodzi mi o to, aby w 1 pętli wszybko sprawdzić 80 pól tekstowych, czy nie są puste. Chciałem w pętli zrobić coś typu :
zmienna := "edit" + inttostr(i)
if zmienna.text <> "" then

Ale wywaliło błąd: Record, object or class required.
Jest ktoś w stanie pomóc ?
 

novciu234

Użytkownik
Dołączył
Styczeń 25, 2008
Posty
90
Kod:
var
 I: Integer;
begin
 for I := 0 to Form1.ComponentCount -1 do
  if Form1.Components[I] is TEdit then
   TEdit(Form1.Components[I]).CosTam
end;
smile.gif
 

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
<
a mam pytanko, bo ten kod ustawia wszystkie komponenty na formie ( w tym przypadku typu edit);

a w jaki sposob ustawić np wszystkie komponenty typu edit, ktore zaczynają się na "pole", naprzyklad mam komponenty:
Kod:
pole1.text
pole2.text
pole3.text
pole4.text
edit5.text
haslo.text
miejscowosc.text

i teraz w jaki sposob wypełnic wszystkie pola ktore zaczynają sie na "pole" czyli pole1, pole2, pole3 itd... ??
smile.gif


pozdrawiam
 

novciu234

Użytkownik
Dołączył
Styczeń 25, 2008
Posty
90
Najprościej będzie dodać do tych wszystkich Editów jakąś wartość w Tag...
Kod:
var
I: Integer;
begin
for I := 0 to Form1.ComponentCount -1 do
  if Form1.Components[I] is TEdit then 
   if TEdit(Form1.Components[I]).Tag = 11 then 
     TEdit(Form1.Components[I]).CosTam
end;
Ale to bardzo prymitywny i 'lamerski' sposób
smile.gif


Edit:
... FindComponent()
smile.gif
 

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
no coś podobnego wykombinowałem tylko ze z
Kod:
panel0.ComponentIndex := 1;
panel1.ComponentIndex := 2 // itd;
no i potem juz tak jak w postach wyzej
<



Tylko czy mogłby mi ktoś pomoc, chodzi mi o takie coś ze jezeli mam button, w onCreate mam Przesun(2), kod:

Kod:
Procedure przesun(numer:integer);
begin
//do wykonania
end;

i chodzi mi o to zeby nie pisać dla wszystkich 12 komponentow po kolei IF bo tez mozna ale lepiej i wydajniej zrobić coś na wzor:
Kod:
buttonX.caption := 'bla';// gdzie X to numer jaki przekazano do procedury;)
 

novciu234

Użytkownik
Dołączył
Styczeń 25, 2008
Posty
90
Kod:
var
 I: Integer;
begin
for I := 1 to 8 do
 TButton(FindComponent('Button' + IntToStr(I) )).Caption := 'Ah';
 

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
<div class='quotetop'>CYTAT(pioncz @ 28.05.2009, 17:48) <{POST_SNAPBACK}></div>
Witam,
Przepraszam, ale nie wiedziałem jak streścić temat. Chodzi mi o to, aby w 1 pętli wszybko sprawdzić 80 pól tekstowych, czy nie są puste. Chciałem w pętli zrobić coś typu :
zmienna := "edit" + inttostr(i)
if zmienna.text <> "" then

Ale wywaliło błąd: Record, object or class required.
Jest ktoś w stanie pomóc ?[/b]

Błąd jest, ponieważ zmienna w tym przypadku to nie rekord...

Rekord w tym przypadku wyglądałby w ten sposób:

type
TZmienna = record
Text : String;
end;

var
Zmienna : TZmienna;
Form1: TForm1;

Ogólnie kod jest zły.. Poczytaj o pętlach.
Pozdrawiam.
 
Do góry Bottom