Jeg forstiller mig at du kan gøre det med en løkke...
Jeg er ikke så god til Delphi men noget med:
while edit1.visable == false then
edit2.visable == false
edit3.visable == false
NEJ! Og jeg gentager lige: NEJ! Du må ikke bruge en while i denne sammenhæng, det eneste du opnår er at programmet "låser" fordi det ikke bestiller andet end at cykle rundt i din while løkke.
En lang bedre måde ville være at sætte en TTimer på formen med et interval på f.eks. 100. Hver gang TTimeren så aktiverer checker den edit1.visible og hvis den er true, sætter den alle andre til true.
Det er den simple løsning, og der er jo en forsinkelse. Der er nok andre og bedre løsninger.
---
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk
Hej,
Du kunne evt. gøre det sådan at når du sætter edit1.enabled til enten true eller false så sætter du samtidig alle de andre edits enabled til samme værdi.
Her er en procedure som sætter "enabled" på alle edit felter i en form:
procedure TForm1.ChangeAllEdits(AEnabled : Boolean);
var
I : Integer;
begin
for I := 0 to ControlCount-1 do
begin
if (Controls[I] is TEdit) then
Controls[I].Enabled := AEnabled;
end;
end;
Så når du skal ændre edit1.enabled så bruger du bare: ChangeAllEdits(True/False).
/Michael.
Hej tak for for det, men vil du uddybe det lidt nærmere ? for jeg forstår ikke lige helt den kode da jeg ikke har set den metode før.....
/Kenneth
¤¤¤Vi lære kun så længe vi lever¤¤¤
Hej Kenneth,
Selvfølgelig vil jeg det.
En form har en liste af alle de kontoller som er placeret på denne.
Du har adgang til disse kontroller (runtime) ved hjælp af propertien "Controls" som er et array af kontroller som arver fra TControl.
For at vide hvor mange kontroller som ligger i arrayet skal du bruge funktionen "ControlCount" som returnere en Integer (det samlede antal af kontroller).
I den rutine jeg har givet dig løber jeg i gennem hver enkelt kontrol på formen og ser om det er en TEdit kontrol. Hvis det er en TEdit så sætter jeg dens "Enabled" property til True/False alt efter hvilken værdi du sender til rutinen.
Jeg har lavet en ny rutine med kommentarer:
procedure TForm1.ChangeAllEdits(AEnabled : Boolean);
var
I : Integer;
begin
// Løb alle kontroller i gennem fra 0 til ControlCount-1.
for I := 0 to ControlCount-1 do
begin
if (Controls[I] is TEdit) then // Hvis kontrollen er en TEdit så ->
Controls[I].Enabled := AEnabled; Sæt dens enabled property til din overførte værdi.
end;
end;
/Michael.