Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   OnExit bei RadioButton unterdrücken (https://www.delphipraxis.net/162478-onexit-bei-radiobutton-unterdruecken.html)

Jerry 24. Aug 2011 12:33

Delphi-Version: 2010

OnExit bei RadioButton unterdrücken
 
Servus an alle!

Folgende Situation:

Ich habe 2 RadioButtons. Bei einem RadioButton ist beim onExit ein Setfocus auf ein anderes Feld programmiert. (bei Tab-geht er in ein bestimmtes Feld)
Wenn ich nun von diesen 2 Radio-Buttons die andere Option anwählen möchte, dann wird immer der OnExit des einen RadioButtons ausgeführt, und logischerweise springt der Cursor
in das falsche Feld... :-)

Wie bekomme ich es hin, dass bei einem Mausklick z.B: in ein anderes Feld der OnExit nicht ausgeführt wird?

Bin dankbar für Tipps.

Grüsse Jerry

DeddyH 24. Aug 2011 12:36

AW: OnExit bei RadioButton unterdrücken
 
Wieso löst Du das nicht einfach über die Tabulatorreihenfolge? Im OnExit den Fokus irgendwo hin zu setzen ist zumindest unelegant, wie Du selbst gerade bemerkst.

Jerry 24. Aug 2011 12:39

AW: OnExit bei RadioButton unterdrücken
 
geht in diesem Fall nicht, da der RadioButton mit der speziellen Option nach dem Tab in ein Feld eines neuen Tabsheets springen muss.

Grüsse Jerry

DeddyH 24. Aug 2011 12:43

AW: OnExit bei RadioButton unterdrücken
 
Aber nur, wenn man die Tabulatortaste drückt?

Jerry 24. Aug 2011 12:44

AW: OnExit bei RadioButton unterdrücken
 
jep. Es ist eben ein grosses Formular auf 2 Seiten verteilt. Der User soll somit bestmöglichst mit Tab durch die Maske kommen.

DeddyH 24. Aug 2011 13:08

AW: OnExit bei RadioButton unterdrücken
 
Mein D2007 spinnt gerade ein wenig, aber wenn Du die RadioButtons z.B. auf ein Panel setzt und dann dessen OnExit nimmst, klappt es dann?
Delphi-Quellcode:
procedure TForm1.Panel1Exit(Sender: TObject);
begin
  if RadioButton2.Checked then
    Button1.SetFocus;
end;

Jerry 25. Aug 2011 07:34

AW: OnExit bei RadioButton unterdrücken
 
leider nein, bringt nicht den gewünschten Effekt. Ich könnte ja auch auf ein anderes Feld mit der Maus drücken, als der andere Button.

Es müsste eine Möglichkeit geben, dass ich den OnExit des einen Buttons unterdrücken könnte, sobald ich die Maustaste gedrückt habe.

Kennt da jemand eine Möglichkeit?

Grüsse Jerry

himitsu 25. Aug 2011 07:51

AW: OnExit bei RadioButton unterdrücken
 
Nein, kenn keine "schöne" und praktikable Möglichkeit.

Tipp: Nimm einen "Next"-Button, welche in der Tabreihenfolge am Ende steht und ins OnEnter kommt das SetFokus zur nächsten Seite.

Ich überlege geade, wie der Befehl war, um eine Mausaktion abzubrechen, da ja auch im OnClick (also mit der Maus) der Fokus an ein anderes Control weitergereicht wird.



PS: Dieser Next-Button kann auch ganz klein sein (0 Pixel), bzw. außerhalb des sichtbaren Bereichs liegen, dann reagiert er nur noch auf den Tabulator, da ihn die Maus natürlich nicht erreichen kann. :stupid:

Jerry 25. Aug 2011 08:21

AW: OnExit bei RadioButton unterdrücken
 
Deine Aussage mit:

"Ich überlege geade, wie der Befehl war, um eine Mausaktion abzubrechen, da ja auch im OnClick (also mit der Maus) der Fokus an ein anderes Control weitergereicht wird."

Wäre cool, wenn Du hier diesen Befehl finden würdest... :-)

Jerry 26. Aug 2011 08:00

AW: OnExit bei RadioButton unterdrücken
 
So ich habe selber eine Lösung erarbeitet...

Folgende Procedur geschrieben:

Delphi-Quellcode:
procedure Tfrm_TestUnit.OnAppMessage(var M: TMsg; var Handled: Boolean);
begin
  if (M.Message = WM_LBUTTONDOWN) or (M.Message = WM_RBUTTONDOWN) then
  begin
    MyMouseKlick := True;
  end;
end;
Somit kann ich bei dem Ereignis onExit vorgängig eingreifen.
Jeweils beim OnEnter des Feldes MyMouseKlick auf False stellen.

und dann beim OnExit mit if MyMouseKlick = False .....


Vielleichts hilfs mal jemandem weiter..

Gruss Jerry


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.

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