24. januar 2001 - 20:46Der er
4 kommentarer og 1 løsning
Gennemtving OnEnter
Jeg har brug for at gennemtvinge en OnEnter event, når formen bliver vist, efter at have været \'hidden\'.
Det skal være den TButton, der har fokus (hvis nogen). Jeg har skrevet denne kode, men det virker ikke.
procedure TMainForm.FormShow(Sender: TObject);
var I: Word;
begin
for I := 1 to ComponentCount do if Components[I - 1] is TButton then with Components[I - 1] as TButton do if Assigned(OnEnter) and Focused then OnEnter(Sender);
koden virker fint, forudsat at der en button både med fokus og med en assignet onEnter event. Prøv evt. at lægge mærke til hover fokus er når formen vises igen efter at have været gemt ;-)
Det er underligt at det ikke virker ved mig. Selv om der er en button med en OnEnter event med fokus, så eksekveres event\'en ikke. Jeg kan heller ikke finde fejl i koden.
hmm, jeg har kigget lidt mere på det, og fundet af at problemet er at det aktive komponent først får fokus EFTER onShow. Hvis du bruger en timer til udføre tjekket virker det fint. Alt efter hvor mange komponenter de har på formen bør 100-150 millisekunder virke fint. Og sæt timeren til enabled = false til at begynd med.
altså
procedure TForm1.FormShow(Sender: TObject); begin timer2.enabled := true; end;
procedure TForm1.Timer2Timer(Sender: TObject); var I: Word; begin timer2.enabled := false; for I := 1 to ComponentCount do begin if Components[I - 1] is TButton then begin with Components[I - 1] as TButton do begin if focused then begin if Assigned(OnEnter) then begin OnEnter(Sender); end; end; end; end; end; end;
Det var en fonøjelse :-) specielt da jeg lærte noget selv samtidigt ;-)
ha\' det godt hatecaps
Synes godt om
Ny brugerNybegynder
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.