23. november 2002 - 11:21Der 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?
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 }
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;
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.