Avatar billede hclarsen Nybegynder
10. april 2006 - 13:56 Der er 16 kommentarer og
1 løsning

løkke der finder labels

hvordan kan jeg lave en løkke, der checker, om samtlige 12 labels på min form har en caption lig noget bestemt?

mine labels hedder af den grund også label1,label2..label12.

måske noget med en for-løkke, men den checker jo kun en ad gangen
Avatar billede kroning Nybegynder
10. april 2006 - 14:00 #1
Sådan lige ud af hovedet uden at teste..

var
  i : integer;
begin
  for i:=0 to Form.ControlCount-1 do
  if (Form.Controls[i] is TLabel) and ((Form.Controls[i] as TLabel).caption='DAV') then
    showmessage('Der står dav i labelen');
end;
Avatar billede hclarsen Nybegynder
10. april 2006 - 14:07 #2
det virker desværre ikke helt efter hensigten - det er meningen, at programmet kun må gå videre, hvis samtlige 12 labels har captionen 'DAV' og hvis det følgende gælder:


if ((form.controls[i] is TLabel) and ((form.controls[i] as TLabel).caption = 'hej')) and (edit1.text = 'goddag') then

men så vidt jeg kunne føle på det, checkede den kun en ad gangen sammen med edit'en
Avatar billede kroning Nybegynder
10. april 2006 - 14:24 #3
function ErAlleEns(Tekst : string) : boolean;
var
  i : integer;
begin
  result:=false;
  for i:=0 to Form.ControlCount-1 do
  if (Form.Controls[i] is TLabel) and ((Form.Controls[i] as TLabel).caption<>Tekst) then
    exit;
  result:=true;
end;

.
.

if ErAlleEns('hej') and (edit1.text='goddag') then
  //alle labels har teksten 'hej' og edit1.text er 'godag'
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:12 #4
Hvis det så skal være alle labels, som har en caption <> '', bliver det så:


function ErAlleEns(Tekst : string) : boolean;
var
  i : integer;
begin
  result:=false;
  for i:=0 to Form.ControlCount-1 do
  if (Form.Controls[i] is TLabel) and ((Form.Controls[i] as TLabel).caption=Tekst) then
    exit;
  result:=true;
end;

.
.

if ErAlleEns('') and (edit1.text='goddag') then ...
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:15 #5
Fandt ud af det - tusind tak skal du have. Jeg ville påskønne, hvis du lagde et svar
Avatar billede kroning Nybegynder
10. april 2006 - 15:24 #6
Godt så :)
Avatar billede kroning Nybegynder
10. april 2006 - 15:24 #7
Prøver igen. Godt så :)
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:25 #8
Det var ikke et svar.. men det er helt fint, fordi det viser sig, at jeg talte over mig. Fandt egentlig ikke ud af det alligevel :-/
Avatar billede kroning Nybegynder
10. april 2006 - 15:28 #9
Er ikke helt klar over hvad du mener?
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:29 #10
Den skal blot finde alle labels, som har en caption, der er forskellig fra '' - altså den skal finde alle labels med noget stående i captionen.
Avatar billede kroning Nybegynder
10. april 2006 - 15:31 #11
ok, og hvad skal der så ske med labels den finder?
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:32 #12
Jævnfør dit eksempel, så skal den gøre præcis det samme, men bare finde de labels, hvor der står noget i captionen og den edit, med teksten 'goddag'
Avatar billede kroning Nybegynder
10. april 2006 - 15:40 #13
Jeg tror jeg trænger til at sove :) for jeg er stadig ikke med. Mit første eks. gør som du skrev "checker, om samtlige 12 labels på min form har en caption lig noget bestemt".
Og nu vil du så have en function der finder samtlige labels hvor der står noget i caption, det er også let nok:

for i:=0 to Form.ControlCount-1 do
  if (Form.Controls[i] is TLabel) and ((Form.Controls[i] as TLabel).caption<>'') then
    // i denne står det noget

men så forstår jeg ikke lige hvad der skal ske.
Avatar billede hclarsen Nybegynder
10. april 2006 - 15:43 #14
hvad så med if ErAlleEns('hej') and (edit1.text='goddag') then?

så skal det være noget i stil med

if ErAlleEns(<>'') and (edit1.text='goddag') then // ved godt det er brandulovligt, men måske er dette bedre end en forklaring


altså hvis alle labels har fået skrevet noget i deres caption og edit1.text := goddag, så ...
Avatar billede kroning Nybegynder
10. april 2006 - 15:50 #15
ok, så kan man lave en ny function:

function IngenTomme : boolean;
var
  i : integer;
begin
  result:=false;
  for i:=0 to Form.ControlCount-1 do
  if (Form.Controls[i] is TLabel) and ((Form.Controls[i] as TLabel).caption='') then
    exit;
  result:=true;
end;

IngenTomme vil returnere true hvis hvis alle captions er <>''
dvs.:

if IngenTomme and (edit1.text='goddag') then
Avatar billede hclarsen Nybegynder
10. april 2006 - 16:13 #16
Tak skal du have, og sov godt, når du kommer dertil :-)
Avatar billede kroning Nybegynder
10. april 2006 - 16:28 #17
:-)
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