Avatar billede delphiuser Mester
16. december 2006 - 20:13 Der er 6 kommentarer og
2 løsninger

dobbelt funktion

Hej eksperter....

Jeg har lige et lille problem som jeg gerne vil have løst det genere mig lidt. Jeg har lavet en menubjælke som hvor jeg har et menu punkt der hedder instillinger. der har jeg noget der hedder statusbar som er checked til at starte med. Men vil gerne have at man skal kunne fjerne den ved at trykke på statusbar i menuen. det virker også og den fjerner også det flueben der er. nu kommer det så at jeg gerne vil have at når jeg så trykker på statusbar i menuen igen så skal den vise statusbaren og sætte flueben igen.

jeg har lavet et lille eksempel men kan ikke få det til at virke.

eksempel....

procedure TForm2.Statusbar2Click(Sender: TObject);
begin
if form2.Statusbar2.Checked then
  begin
  statusbar1.Visible:=true;
  end
  else
  begin
    statusbar1.Visible:=false;
    form2.Statusbar2.Checked:=false;
  end;
end;

hvad kan jeg gøre for at kunne køre den dobbeltfunktion på det menupunkt?
Avatar billede pidgeot Nybegynder
16. december 2006 - 20:21 #1
Du mangler vist en enkelt Form2.StatusBar2.Checked:=true; inde i den øverste betingelse i din if. Andet kan jeg ikke lige se at der skulle være noget galt med, udover at du har en lidt sjov indenting. :)
Avatar billede delphiuser Mester
16. december 2006 - 20:29 #2
procedure TForm2.Statusbar2Click(Sender: TObject);
begin
if form2.Statusbar2.Checked then
  begin
  statusbar1.Visible:=true;
  statusbar2.Checked:=true;
  end
  else
  begin
    statusbar1.Visible:=false;
    form2.Statusbar2.Checked:=false;
  end;
end;

sådan ser den ud nu. men kan ikke få den til at virke....
Avatar billede pidgeot Nybegynder
16. december 2006 - 21:01 #3
Ah, selvfølgelig - du har jo vendt if'en forkert; det der står i din if skal ned i din else (og omvendt).

Alternativt kan du også bare skrive
  if not (Statusbar2.Checked) then
eller
  if Statusbar2.Checked=False then
da det har samme effekt.
Avatar billede kroning Nybegynder
17. december 2006 - 01:16 #4
Det hele kan gøres i 2 linier:

procedure TForm2.Statusbar2Click(Sender: TObject);
begin
    Statusbar2.Checked:=not Statusbar2.Checked;
    StatusBar1.Visible:=Statusbar2.Checked;
end;
Avatar billede kroning Nybegynder
17. december 2006 - 01:19 #5
Du kan også sætte Statusbar2.AutoCheck til true i Object inspector så kan det gøres med en enkelt linie:

procedure TForm2.Statusbar2Click(Sender: TObject);
begin
    StatusBar1.Visible:=Statusbar2.Checked;
end;
Avatar billede kroning Nybegynder
17. december 2006 - 01:22 #6
P.S. Du bør give dine komponenter nogen mere sigende navne for at undgå forviring.
Avatar billede delphiuser Mester
19. december 2006 - 10:11 #7
pidgeot kom lige med et svar. i fpr begge lov til at dele pointene. da jeg kunne bruge begge forslag....
Avatar billede pidgeot Nybegynder
19. december 2006 - 10:54 #8
Helt i orden med mig :)
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