Autor Beitrag
FrankBKK
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
D5
BeitragVerfasst: Fr 16.12.05 10:53 
In einem DBEdit.OnExit Event soll u.U. eine andere Komponente als die in der Tab-Order festgelegte den Focus erhalten.

Wird jedoch die DBEdit Komponente durch Klick auf den
Post-Button verlassen, stoert der Focus im Exit-Event nur -
wie kann ich nun den SetFocus in diesem Fall abbrechen ?
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 16.12.05 11:25 
Hallo,

setzt doch den Focus im DBEdit.OnExit Event auf die gewünschte Komponente.
ausblenden Delphi-Quelltext
1:
SollZielComp.SetFocus;					

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
FrankBKK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
D5
BeitragVerfasst: Fr 16.12.05 11:46 
Titel: Das ist ja genau das Problem:
Das ist ja genau das Problem:

Je nach Wert des Feldes wird auf eine Komponente A oder B
der Focus gesetzt - dort passiert aehnliches ...

Verlaesst der Anwender jedoch das Feld durch click auf einen
'Post-Button' wird der aktuelle Satz gespeichert und ein
neuer Record eingefuegt.

Dummerweise muessen jedoch die Felder in einer bestimmten Reihenfolge erfasst werden, da die Werte aufeinander aufbauen.

Nun ist der Focus jedoch nicht mehr am Anfang sondern irgendwo
in der Mitte und die Werte stimmen dann nicht mehr ...
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 16.12.05 14:35 
Hallo,

ob ich das jetzt verstanden habe :gruebel:
user profile iconFrankBKK hat folgendes geschrieben:
...Wird jedoch die DBEdit Komponente durch Klick auf den
Post-Button verlassen, stoert der Focus im Exit-Event nur -
wie kann ich nun den SetFocus in diesem Fall abbrechen ?

Angenommen:
Edit1 > Taborder = 0
Edit2 > Taborder = 1
Edit3 > Taborder = 2
und Button1
Wenn in Edit1 der Wert größer 100 ist soll der Focus auf Edit3 gesetzt werden,
aber nicht wenn der Focuswechsel durch OnClick des Button1 ausgelöst wird.

Da hilft Dir die Tatsache das im OnExit-Ereignis mit ActiveControl die Komponente ermittelt werden kann, die den Focus bekommen wird.
Der Code im OnExit-Ereignis von Edit1 sieht dann so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  //Wurde auf Button1 geklickt ist ActiveControl = Button1
  if ActiveControl <> Button1 then
    if StrToInt(Edit1.Text) > 100 then
      Edit3.SetFocus;
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
FrankBKK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win XP
D5
BeitragVerfasst: Fr 16.12.05 14:45 
Klasse, das wars was ich gesucht hab - Vielen Dank !