Avatar billede hestetoften Nybegynder
27. november 2003 - 22:43 Der er 6 kommentarer og
1 løsning

opret knap runtime

Jeg bruger denne til at oprette en knap runtime.!

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  Button: TButton;
  x,y : integer;
begin
      Button := TButton.Create(self);
      Button.Name := 'NewBtn';
      Button.Parent := TabSheet4;
      Button.Width := 22;
      Button.Height := 22;
      Button.Top := 0;
      Button.Left := 210;
      Button.OnClick := KnapKlik;
end;

Hvordan sætter jeg den til at udføre en function med parametre (function ikke procedure) ??

Larsen
Avatar billede dkn Nybegynder
28. november 2003 - 01:56 #1
er ikke sikker på at jeg helt forstår, men du er nød til at udføre den handlig som skal ske under "KnapKlik", derfra må du så kalde den funktion du fx ønsker.

Du kan med fordel bruge proceduren "KnapKlik" til flere knapper og få tilgang til dem via "sender" object
Avatar billede stoney Nybegynder
28. november 2003 - 10:05 #2
function test(i,j : integer):integer;
begin
result := i + j;
end;

procedure TForm1.KnapKlik(Sender: TObject);
begin
showmessage(inttostr(test(5,6,)));
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  Button: TButton;
  x,y : integer;
begin
      Button := TButton.Create(self);
      Button.Name := 'NewBtn';
      Button.Parent := TabSheet4;
      Button.Width := 22;
      Button.Height := 22;
      Button.Top := 0;
      Button.Left := 210;
      Button.OnClick := KnapKlik;
end;

Stoney
Avatar billede hestetoften Nybegynder
28. november 2003 - 11:08 #3
Under opret knap bliver der også oprettet nogle variabler(s1 := 'Hansen'; s2 := 'Peter';),  som sendes til Functionen, dette fordi der kan oprettes flere knapper der kalder den samme function, men med forskellige variabler.
Avatar billede dkn Nybegynder
28. november 2003 - 12:25 #4
hvis du skal have det til at se sådan ud, kunne det ende med at du skulle lave din egen component udfra tbutton med nogle set-bare variabler.

Men syntes nu du skulle overveje en anden måde at designe det på hvis det er muligt
Avatar billede hestetoften Nybegynder
28. november 2003 - 13:21 #5
Undskyld men, Hvordan så ??
Avatar billede dkn Nybegynder
28. november 2003 - 14:22 #6
du kunne lave en object til de variabler:
fx

Type
TPersonData = class(TObject)
  Navn : String;
  EfterNavn : String;
end;

var
PersonList:TList;

...

Oncreate:
PersonList:=TList.create;


procedure TForm1.KnapKlik(Sender: TObject);
var
  Person : TPersonData;
begin
  Person := pointer(PersonList.Item[((sender as TButton).Tag]);
  showmessage(Person.Navn+#13#10Person.EfterNavn);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  Button: TButton;
  x,y : integer;
  Person : TPersonData;
begin
      Person := TPersonData.create;
      Person.Navn := 'Peter';
      Person.EfterNavn := 'Hansen';
      PersonList.add(Person);

      Button := TButton.Create(self);
      Button.Tag := PersonList.Count; // Index til PersonList
      Button.Name := 'NewBtn';
      Button.Parent := TabSheet4;
      Button.Width := 22;
      Button.Height := 22;
      Button.Top := 0;
      Button.Left := 210;
      Button.OnClick := KnapKlik;
end;




Koden er ikke testet
Avatar billede hestetoften Nybegynder
28. november 2003 - 14:59 #7
Mange tak
Med lidt redigering fik jeg det til at virke efer hensigten.!
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