![]() |
Focus richtig setzten?
Hallo Freunde,
ich hab hier eine App, bei der sich durch einen Swipe ein Calloutpanel öfffnet. In dem Calloutpanel befinden sich zwei Buttons für die ich den direkten Focus haben möchte. Zur Zeit, muss ich zwei mal auf das Panel tippen um das Event des Buttons auszuführen! Gibt es eine Möglichkeit das zu umgehen? Also das ich den Button nur einmal drücken muss? Ich habs mit
Delphi-Quellcode:
.
Memo1.SetFocus;
Irgendwelche Ideen? Vielen Dank PS: Ich nutzte Delphi XE5, es ist eine Mobile Firemonkey Anwendung und es ist für Android! |
AW: Focus richtig setzten?
Ist das so schwierig?
Oder hab ich mich schlecht ausgedrückt und ihr braucht noch Informationen? Ich bin dankbar für jeden Anstoss den ich bekommen kann! |
AW: Focus richtig setzten?
Ich kann es nicht nachvollziehen. TCalloutPanel, zwei Buttons rein. Mit einem drittem Button außerhalb kann ich meinetwegen die Enabled-Eigenschaft des Panels umschalten. Und wenn das Panel grade aktiviert wird, kriegt Button1 den Fokus.
Egal was man anstellt, beim ersten Klick wird der Button (erwartungsgemäß) gedrückt. Und wie kommt bei dir nun ein
Delphi-Quellcode:
ins Spiel?
Memo1.SetFocus()
|
AW: Focus richtig setzten?
Ich lasse das Panel mit einer Swipefunkttion öffnen. Und dann hab ich dort das Calloutpanel mit zwei Buttons. Und nein ich habe dann nicht den direkten Focus auf die Buttons. ICh muss immer zwei mal Drücken...
Delphi-Quellcode:
Bei "deletbutton" und "editbutton" sind normale Events hinterlegt!
begin
if EventInfo.GestureID = sgiLeft then begin I := strtoint(ListBox1.Selected.itemdata.detail); if scall = False then inf := TCalloutPanel.Create(Self); inf.Parent := ListBox1.Selected; inf.Height := 60; inf.Width := ListBox1.Width; inf.CalloutLength := 0; inf.Position.Y := 0; inf.Visible := true; scall := true; btn1 := TButton.Create(Self); btn1.Parent := inf; btn1.Text := 'Edit'; btn1.Height := 40; btn1.Cursor := crHandPoint; btn1.Width := 120; btn1.Position.Y := 5; btn1.Position.X := 20; btn1.Visible := true; btn1.Enabled := true; btn1.OnClick := editbutton; btn2 := TButton.Create(Self); btn2.Parent := inf; btn2.Text := 'Löschen'; btn2.Height := 40; btn2.Cursor := crHandPoint; btn2.Width := 120; btn2.Position.Y := 5; btn2.Position.X := ListBox1.Width - 140; btn2.Visible := true; btn2.Enabled := true; btn2.OnClick := deletebutton; end else begin if EventInfo.GestureID = sgiright then begin Form2.Show; end; end; end; |
AW: Focus richtig setzten?
Angenommen, man hängt nach dem
Delphi-Quellcode:
noch ein
btn2.OnClick := deletebutton;
Delphi-Quellcode:
an, dann hat bei mir der Button2 den Fokus und kann auch direkt gedrückt werden. Btn1 natürlich ebenso.
btn2.SetFocus();
Unter Windows. Ob sich bei Android da jetzt andere Dinge abspielen weiß ich nicht. Auch verstehe ich nicht, warum du jedes mal die Buttons neu erzeugst? |
AW: Focus richtig setzten?
Kann es sein, daß hier eigentlich die Form garnicht aktiv ist und daher mit dem ersten Klick der Fokus erstmal in die Form wandert?
Schaltet das SetFocus auf den Button nun auch die Form auf aktiv, oder setzt es nur das ActiveControl in der Form? |
AW: Focus richtig setzten?
hab ich versucht, trotzdem muss ich zwei mal tippen. Und wie soll ich es denn schreiben wenn ich die Button beständig haben wollen würde? Bzw welchen Vorteil bringt mir das?
|
AW: Focus richtig setzten?
@himitsu: könntest du die Frage nochmal anders formulieren? Ich weiß nicht genau wie du das meinst!
|
AW: Focus richtig setzten?
Ganz einfach: Die Form = das Formular = das Fenster, das dein Programm beinhaltet. Es könnte sich unter Umständen ereignen, daß deinem Programmfenster beim oder nach em Start aus irgend einem Grund der Fokus entzogen wird. Vielleicht wird ja noch eine andere Anwendung mitgestartet oder danach aufgerufen. Dann hätte diese andere Anwendung den Fokus. Mit einem Klick auf besagten Button innerhalb deiner Anwendung würde das so ausgelöste Ereignis eine Message senden, die dazu verwendet würde, deinem Programm den Fokus zuzuweisen. Damit wäre die Message sozusagen aufgebraucht und würde nicht bis zu deinem Button weiterwandern.
|
AW: Focus richtig setzten?
Ja das klingt plausibel. Jetzt ist die Frage wie dem Button direkt den Focus geben könnte!?!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz