Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Focus richtig setzten? (https://www.delphipraxis.net/179771-focus-richtig-setzten.html)

MoziGut 31. Mär 2014 15:01

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!

MoziGut 2. Apr 2014 07:21

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!

Der schöne Günther 2. Apr 2014 11:15

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:
Memo1.SetFocus()
ins Spiel?

MoziGut 2. Apr 2014 13:29

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:
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;
Bei "deletbutton" und "editbutton" sind normale Events hinterlegt!

Der schöne Günther 2. Apr 2014 13:46

AW: Focus richtig setzten?
 
Angenommen, man hängt nach dem
Delphi-Quellcode:
btn2.OnClick := deletebutton;
noch ein
Delphi-Quellcode:
btn2.SetFocus();
an, dann hat bei mir der Button2 den Fokus und kann auch direkt gedrückt werden. Btn1 natürlich ebenso.

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?

himitsu 2. Apr 2014 13:59

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?

MoziGut 2. Apr 2014 14:06

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?

MoziGut 2. Apr 2014 14:26

AW: Focus richtig setzten?
 
@himitsu: könntest du die Frage nochmal anders formulieren? Ich weiß nicht genau wie du das meinst!

Perlsau 2. Apr 2014 17:43

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.

MoziGut 3. Apr 2014 08:25

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 01:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz