Avatar billede stoons Nybegynder
18. marts 2000 - 02:26 Der er 7 kommentarer og
1 løsning

Tricky!

Her har i et TEMMELIG besværligt spørgsmål:

Som alle Delphi programmører ved så har f.eks buttons en event som hedder onclick.

Den ser ud som følger: TForm1.Button1Click(Sender: TObject);

Mit spørgsmål går ganske 'simpelt' ud på følgende:

Hvordan finder man ud af knappens "NAME" i den event?
Kan man overhovedet bruge SENDER til noget i den forbindelse?

Jeg vil lige forklare hvorfor jeg stiller dette spørgsmål:

Jeg VIL lave et program med button1 til og med button9, som allesammen, i tilfælde af at der bliver trykket på dem, går til DEN SAMME procedure [TForm1.Button1Click(Sender: TObject);], og så vil jeg være i stand til FRA DENNE EVENT at undersøge HVLIKEN KNAP DER BLEV TRYKKET PÅ!

Jeg håber at en eller anden svarer....

= )
Avatar billede skovhus Nybegynder
18. marts 2000 - 07:30 #1
stoons brug følgende:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (sender = button1) then begin
    //do the stuff for button1
  end;
  if (sender = button2) then begin
    //do the stuff for button2
  end;
  if (sender = button3) then begin
    //do the stuff for button3
  end;
  // o.s.v.
end;

og sæt alle buttons onclick event til at pege på button1click

Vedr. name:

Ja, du kan bruge
(sender as TButton).name i den samme event. Eks som ovenstående:

if (sender as TButton).name = 'Button1' then do_your_stuff;
På denne måde kan du også ændre alle properties for knappen.

ex:
(sender as TButton).name := 'MinKnap';
(sender as TButton).enabled := false;
(sender as TButton).visible := false;
(sender as TButton).color := clYellow;
(sender as TButton).top := 16;
(sender as TButton).left := 254;
o.s.v, o.s.v.
Avatar billede stoons Nybegynder
18. marts 2000 - 09:57 #2
Øhhh... det checker jeg lige ud!
Avatar billede stoons Nybegynder
18. marts 2000 - 10:00 #3
Bravo! Jeg vidte jo det ville være EKSTREMT SIMPELT! Men jeg er jo en autodidakt programmør (jeg har slet ingen bøger om Delphi!)

Tusind tak skovhus!
Avatar billede hlj Nybegynder
18. marts 2000 - 13:21 #4
Skovhus, du står da lige lovlig tidlig op en Lørdag morgen ;)
Avatar billede snorga Nybegynder
19. marts 2000 - 02:17 #5
Man kan også bruge (sender as tbutton).TAG, property'en er der netop for den slags!
Avatar billede skovhus Nybegynder
19. marts 2000 - 06:46 #6
tak for dine point stoons, og ja det er let når man bare lige ved hvordan. Men sådan er det jo med alt ikke ??

og hlj - Jeg står altid tidligt op, men går tilgengæld tidligt i seng. Jeg tilhører den generation der ikke længere kan holde så længe efter det er blevet mørkt ;-)

og til stoons; det med (sender as Txxx).yyy kan bruges til alle komponenter, ikke kun buttons. Og som snorga siger kan man også bruge TAG propertyen, men det er ikke kun lige derfor den er der som han nævner. TAGen er til fri afbenyttelse og kan bruges som man synes, og en mulighed er at give forskellige komponenter, der på en eller anden måde hører sammen (f.eks. forskellige komponenter der alle vedr. en bestemt del af en kundeoplysning) samme værdi i TAG og så bruge dette til hhv. af gøre alle disse synlige eller usynlige afhængig af om denne del skal vises på skærmen eller ej. Til sådan en mulighed anvender man f.eks:

for i := 0 to componentcount -1 do begin
  if component[i].tag = x then component[i].visible := false;
end;

Dette er bare en mulighed. Som du måske kan regne ud er der næsten uanede muligheder man kan bruge TAG til.
Avatar billede stoons Nybegynder
19. marts 2000 - 21:02 #7
Tak skal i ha'! Bliv endelig ved med at udveksle EKSPERT-info om programmering i Delphi, så vil jeg følge med!!!

= )
Avatar billede snorga Nybegynder
24. marts 2000 - 21:38 #8
Okay
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