20. september 2002 - 01:48Der er
11 kommentarer og 2 løsninger
2 i en: popup og button spørgsmål
jeg har lige to problemmer i mit program.. 1. jeg har fire buttons ved navn bt0, bt1, osv. er der en måde så man kan vælge vilken en man vælger med en integer. fks: i:= 1 ; bt[i].caption := 'bla bla'. 2. de fire knapper skal os have en popup menu. og jeg vile gerne at de deler den samme, men med forskelige funktioner. (kan selfølgelig godt lave en til hver af dem, men vil gerne lære noget nyt idag =)
håber i kan hjælpe... der er 30 point ti vert spørgsmål.. ahh lad os sige 40..
Så kan du referer til dine buttons med Btns[x] i resten af dit program.
2: Det bliver noget rod tror jeg.. Du skal afgøre fra hvilken knap din menu blev aktiveret - og det kan man ikke umiddelbart.. Du kunne selvfølge lege med menuens position e.l. Men det bliver ikke rigtig kønt
var det ikke nemmere at brude der array der allerede ER indbygger i din TForm :-)
du skal bruge den property der hedder Components.
Noget alla det her (Frit fra leveren) :
var i : Integer; aButton : TButton; //Og N E J den skal I K K E oprettes med create :-) begin for i := 0 to ComponentsCount -1 do begin if not (Component[i] is TButton) then Continue; aButton := TButton(Component[i]); if aButton.Name = 'bt0' then //H U S K der er forskel på store og små bogstaver aButton.Caption := 'Hest0'; etc ... end; end;
2) Igen frit fra leveren : Såvidt jeg husker, og den slags er svært for en mand der lige er runder 30, og har haft 14 dages sommerferie, har en popupmenu et onPopup event af typen TNotifyEvent. Så derfor kan du bruge Sender variablen som du får udlevert af samme grund :-)
Altså
procedure TForm1.PopupMenu1Popup(Sender : TObject); //Eller noget ligende var aButton : TButton; begin if not (Sender is TButton) then Exit; // Hvis vi ikke bliver kaldt fra en knap så skrid :-) aButton := TButton(Sender); if aButton.Name = 'bt0' then // do what ever, og helst noget med en hest etc end;
nå ja.. doc404 du har sikret dig 30 points. for den første løsning. og jens... den ku jeg helt finde ud af..
jeg mener at have fundet løsningen på det andet problem ved at give knapperne en onmousemove funktion det giver besked om vilken knap man er over. smart ik :) men men men der kan stadig scores point for den, da jeg gerne vil kunne laved knappernes onmousemove i formcreate, jeg ved nemlig ik hvordan man gør sådan noget..
jammen det giver da bare den samme funktion til alle knapperne. de skal have en ver. prøver lige igen btns[0].onmousemove do i:= 0 btns[1].onmousemove do i:= 1 osv. håber det ik bare er fordi jeg ik forstår hvad du skriver.jeg ik sååå fee til delphi endnu
var i : Integer; aButton : TButton; //Og N E J den skal I K K E oprettes med create :-) begin for i := 0 to ComponentsCount -1 do begin if not (Component[i] is TButton) then Continue; aButton := TButton(Component[i]); if aButton.Name = 'bt0' then aButton.onmousemove := MouseMoveHandler; etc ... end; end;
sådan nu har jeg fået det til at virke.. og tusind tak til jer begge to for at have tolmodighed til at hjælpe.. 40 til ver af jer.. og hvis det skulle interasere nogle ligger jeg lige den ferdige kode ud i en komentar om lidt..
sippo>> Jammen det var da så lidt :-) Der er folk som dig der gør jeg stadig er på eksperten. Du stillere relevante spm, og gidder at arbejde med det selv !!!
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.