Avatar billede hurra Novice
23. november 2002 - 11:21 Der er 2 kommentarer og
1 løsning

navn eller id på sender

I et program har jeg brug for dynamisk at oprette nogle knapper. Som de knapper bruger jeg nogle billeder (TImage). Nu vil jeg så gerne finde ud af hvilket billed der bliver trykket på.

Mens jeg opretter billederne, sætter jeg 'OnClick' til en funktion jeg har lavet. Hvis denne funktion er definere som:
void __fastcall tryk(TObject Sender);
kan jeg sætte OnClick for billedet:
Billed[i]->OnClick = tryk;

Hvad nu hvis jeg vil ha variablen 'i' med ?? Kan jeg kalde funktionen 'tryk' ved 'OnClick' hvis 'tryk' er defineret som:
void __fastcall tryk(TObject Sender, int i);
?? evt hvordan ?

Eller kan jeg evt sætte et forskelligt Tag/Name/NogetAndet på hvert billed og på den måde finde ud af hvilket af dem der er blevet trykket på ? hvordan spørger jeg efter evt et Tag, hvis jeg ikke ved hvilket af billederne der har kaldt funktionen?

ps. jeg bruger bcb6
Avatar billede borrisholt Novice
23. november 2002 - 15:54 #1
Jeg vil anbefale dig at bruge Tag  :

Når du opretter dine TImage skal du sætte et unik nummer i Tag.

så skal du i din OnClick håndtere det :

void __fastcall Tryk(TObject Sender);

  TImage *aImage = dynamic_cast<TImage*>(Sender); //Safe typecast
  if (aImage == NULL)
    return; // Du blev ikke kaldt med en TImage
}

SÅ kan du bare læse aImage->Tag.

Jens B
Avatar billede soepro Nybegynder
25. november 2002 - 11:02 #2
Du kan gemme indekset for hver billede i 'Tag' property'en:

Billed[i]->Tag = i;

Så kan du i din OnClick event-handler "extracte" nummeret igen:

void __fastcall ImageOnClick(TObject *Sender)
{
  if (Sender->ClassNameIs("TImage"))
  { // Nu er vi sikre på at 'sender' er et TImage
    TImage *Billede = static_cast<TImage *>(Sender);
    int    i      = Billede->Tag;

    // Osv.
  };
} // ImageOnClick
Avatar billede hurra Novice
25. november 2002 - 11:44 #3
SUCCESS!!!!! Det virker. Mange tak for hjælpen.
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