Problem z dynamicznym editem

0

Dynamiczny edit działa jest OK, pojawia się i znika, ale jak chcę sprawdźć, zdarzeniem w Buttonie czy nie jest pusty to wyskakuje błąd nie wiem czemu
wygląda to tak:
<font color="red"><font color="darkblue">procedure TFrm_1.ButtonClick(Sender: TObject);
begin
for i:=0 to ile_kontrolek-1 do
begin
if trim(dyn_edit[i].Text)='' then -> <font color="darkblue">tu jest błąd i nie wiem czemu</span>
begin
MessageBox('');
exit;
end;
end;
end;</span></span>

0

A tak nie działa?

      if dyn_edit[i].Text='' then

//DOPISANE
w ogóle co to jest za zmienna : ile_kontrolek? Te dynamiczne edity sa trzymane w jakiejś tablicy czy co?

0

<quote>A tak nie działa?

      if dyn_edit[i].Text='' then

Nie działa - próbowałem róznych rzeczy i jak na razie jest to dynamiczna tablica

dyn edit:  array of TEdit;
0
  1. jaki błąd wyskakuje
  2. jak tworzysz Edity?
0

Po co masz robic tablice, integery i nie wiem co jeszce?

Umiesc te Edity w TStringList...

0

Czy ten błąd to nie aby access violation? Może nie tworzysz editów? Poza tym, nie jest ci potrzebna żadna zmienna do przechowywania ilości editów. Poczytaj o funkcjach Length(), Low() i High().

Umiesc te Edity w TStringList...

Chyba w TList? Poza tym, jeśli te edity nie będą usuwane, to raczej nie ma sensu stosować TList.

0

Dynamiczny edit działa jest OK, pojawia się i znika

Raczej beda usuwane. TStringList bylo odruchowo, ja zawsze tak robie, bo moge do nich dodawac jakis string np z pelniona funkcja, ale jak najbardziej TList jest rownie dobrym a nawet lepszym rozwiazaniem.

A wlasnie skoro sa usuwane to zamiast

0 to count -1

zrob count -1 downto 0

0
  1. jaki błąd wyskakuje

Acces violation

  1. jak tworzysz Edity?

1).

dyn_Edit:  array of TEdit;

2).

for i:=0 to ilosc_kontrolek_do_wyswietlenia-1 do
begin
SetLength(dyn_edit,Length(dyn_edit)+1);
dyn_edit[i]:=TEdit.Create(self);
dyn_edit[i].Parent:=TabSheet1;
//itd przypisanie właściwosci editowi, 
end;
0

for i:=0 to Form1.ControlCount-1 do
if (Form1.Controls[i] as tEdit).Text = '' Then
// pamietajac ze na formie sa same edity

0

for i:=0 to Form1.ControlCount-1 do
if (Form1.Controls[i] as tEdit).Text = '' Then
// pamietajac ze na formie sa same edity

Cześć! Bardziej poprawne byłoby:

for i:=0 to Form1.ControlCount-1 do
if (Controls[i] if TEdit) then
if (Form1.Controls[i] as tEdit).Text = '' Then
// teraz nie trzeba pamiętać, że na fomie są same Edit'y :)

0

for i:=0 to Form1.ControlCount-1 do
if (Controls[i] is TEdit) then
if (Form1.Controls[i] as tEdit).Text = '' Then
// teraz nie trzeba pamiętać, że na fomie są same Edit'y

1 użytkowników online, w tym zalogowanych: 0, gości: 1