08. maj 2005 - 21:05Der er
6 kommentarer og 1 løsning
Hvilken component har focus
Hvordan finder man nemmest ud hvilken component der har focus.
Jeg har en form med ca. 15 componenter, 6 af den har 'TabStop' sat til True og resten har den sat til False. Så skulle Focus, ifølge alle lærebøger og brugermanualer, flytte sig imellem disse 6 komponenter, når programmet kører og man trykker på tabulator tasten. Mit problem er at når Focus flyttes fra den der har TabOrder=5 til den der har TabOrder=0, så forsvinder Focus, det vil sige at jeg ikke kan se hvilken component der har Focus. Hvis jeg der trykker pil ned går Focus til den der har TabOrder=1, og hvis jeg trykker på pil op går Focus til den der har TabOrder=6. Men hvis jeg derimod trykker en ekstra gang på tabulator så kommer Focus frem til den rigtige component. TabOrder 0 er en TRadioGroup, TabOrder 1 er en TListBox TabOrder 2 er en TButton TabOrder 3 er en TButton TabOrder 4 er en TButton TabOrder 5 er en TButton TabOrder 6 er en TEdit hvor TabStop er sat til False.
Er der en nem lille routine som, når man trykker på f.eks. F1 så bliver Label1.Caption lig med navnet på den component der har Focus?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_F1 then label1.Caption := form1.ActiveControl.Name; end;
Hej Stoney, det gav jo sådan set svar på mit spørgsmål, men løste ikke mit problem. Den viste at det er det rigtige component dar har focus, en TRadioGroup. Men det sjove er at når jeg så trykker den ekstra gang på tabulator tasten, så jeg kan se at det er min TRadioGroup der har Focus, og jeg så kan bladre imellem de forskellige valgmuligheder med piletasterne, så viser din routine ingenting! Har du en ide til hvad jeg skal gøre for at min TRadioGroup får korrekt focus? Jeg har prøvet med RadioGroup1.SetFocus, men det giver samme problem. Eller er det sådan at en TRadioGroup skal have to gange tabulator tryk for at få focus?
Hej Stoney Vil du høre noget sjovt? Hvis min TRadioGroup får TabStop=False, så behøver jeg kun at trykke en gang på tabulator tasten for at min TRadioGroup får Focus, og din rutine viser igen en tom streng. Men mit problem fortsætter hvis jeg skriver RadioGroup1.SetFocus, så får min RadioGroup ikke korrekt focus før jeg trykker en gang på tabulatortasten, og den skal have focus når formen åbnes, fordi brugeren skal starte med at vælge hvilken form for oplysninger han vil søge på.
Hej Kroning Det må hedde noget andet end Buttons, jeg får en fejlmeddelelse. Undeclared identifier: 'Buttons'. Jeg prøvede så med Items, men det virkede heller ikke. Jeg bruger D6.
Det virker fint i delphi 7, jeg har prøvet med delphi 4 og der virkede det ikke. Dette virker dog fint i både delpi 4 og 7 så det bør også virke i delphi 6:
(RadioGroup1.Controls[RadioGroup1.ItemIndex] as TRadioButton).SetFocus;
Hej Kroning Det virker perfekt. Jeg opretter lige et spørgsmål med point til dig.
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.