Avatar billede esben_pape Nybegynder
08. februar 2006 - 23:59 Der er 2 kommentarer og
1 løsning

Gentagne procedurer. Hvordan?

Hej!

Jeg har lavet et lille program, hvor jeg har en PageControl med 8 faneblade. På faneblad 1 har jeg så indsat en masse labels og edits. Jeg har så en procedure, som udfører nogle beregninger på det aktuelle faneblad.

De andre 7 faneblade skal være nøjagtigt ens! Bortset fra, man selvfølgelig skal kunne indtaste andre oplysninger i edits'ne. Min ide er så, simpelt hen at kopiere samtlige objekter på faneblad 1 og så smække dem over på de andre faneblade bare med et andet navn: fx på faneblad 1: F1Edit.Text := bla bla. Faneblad 2: F2Edit.Text := bla bla.

I så fald kræves det, at jeg har 8 forskellige procedurer, som gør nøjagtigt det samme, bortset fra, at de hver især gælder fx F1Edit og F1Label1 henholdsvis F2Edit og F1Label1.

Mit spørgsmål er nu:
Kan man fx sætte en variabel X, som man så kan ændre, så det er nogle andre objekter den omhandler. Eks:

procedure Blabla;
var
  x: Integer;
begin
  F[x]Edit.Text := 'bla bla';
end;

Jeg ville i så fald kunne ændre variabel X til fx 2 og så ville proceduren omhandle objekterne på faneblad 2 istedet for 1.
I det her tilfælde, ville for X = 1 omhandle F1Edit.Text og X = 2 ville omhandle F2Edit.Text.

Håber jeg gør mig forståelig...
Avatar billede tolderlund Nybegynder
09. februar 2006 - 10:05 #1
Her er det oplagt at bruge frames.
Definer en frame der indeholder de labels og edits du skal bruge.
Sæt den frame på hver faneblad.
Så giver du din BlaBla procedure en parameter af samme type som din frame og kalder BlaBla med den aktuelle frame som parameter.
Så er den ged barberet.
Avatar billede esben_pape Nybegynder
09. februar 2006 - 16:31 #2
Jeg håber du kan komme med et kort eksempel. Det her virker i hvert fald ikke:

procedure Rename(AFrame: TFrame);
begin
  with AFrame do begin
    Label1.Caption := 'hej!!';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Rename(Frm1);
end;
Avatar billede esben_pape Nybegynder
09. februar 2006 - 20:38 #3
Tjaa, nu har jeg fået det til at virke med frames...
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