Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Editfeldwechsel bei Entereingabe


Wink - So 15.05.11 11:19
Titel: Editfeldwechsel bei Entereingabe
Morgen zusammen!

Vorab möchte ich betonen, dass ich eher ein Anfänger bin (Info 11. Klasse vor 5 Jahren für 1 Jahr) und von daher nicht so bewandelt bin!!

Da ein Kollege und ich Dartversessen sind und regelmäßig selbst spielen, allerdings absolut gegen diese Plastik E-Dart-Scheiben sind und deshalb mit Steeldarts auf eine Naturfaser-Scheibe spielen, habe ich ein Programm geschrieben in dem wir die Punkte festhalten können (es wird immer von 501/301 Punkten runter gespielt) und darüber hinaus auch den Average anzeigen lassen. Dank dem Internet läuft das Ding mittlerweile ziemlich gut und wäre quasi auch fertig, wäre da nicht eine (wahrscheinlich) einfache Sache:

Wie das Bild im Anhang zeigt, gibt es 2 Edit-Felder um die geworfenen Punkte einzutragen, was natürlich auch mit Enter bestätigt werden kann um nicht mit der Maus oder vorher per Tab den Button zu aktivieren. Nervig ist allerdings nun, dass man per Maus bzw. mehrfachem Tab-Druck nur ins jeweils andere Editfeld kommt.

In einem anderen Zusammenhang habe ich bereits den Befel:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    Self.Perform(WM_NEXTDLGCTL, 00);
    key := #0;
    end;


angewandt, was auch super funktioniert. In dem Fall kann ich ihn nur leider nicht anwenden, da er dann vom Editfeld direkt auf den Button springt anstatt rüber ins andere Edit-Feld.

Mir wurde bereits eine Möglichkeit über sogenannte Listen vorgeschlagen, allerdings muss ich gestehen, dass ich das für sehr aufwendig und kompliziert halte und es auch selbst nicht in den Code hineinbekommen habe.

Von daher meine Frage: Habt ihr eine Idee, wie ich das Problem lösen kann? Für Lösungsansätze wäre ich sehr dankbar!

Schönen Gruß
Wink

PS: Ich hoffe ich habs hier ins richtige Forum gepackt, ansonsten bitte verschieben!!

Moderiert von user profile iconGausi: Highlight- durch Delphi-Tags ersetzt
Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am So 15.05.2011 um 12:52


Regan - So 15.05.11 11:31

Hallo und :welcome: hier im Forum!

es gibt hier im Forum [delphi ]-Tags (ohne das Leerzeichen). Damit kannst du deinen Quelltext umrahmen und er wird schön formatiert. Des Weiteren hast du kein Bild angehangen :gruebel: . Hast du auch auf "Dateianhang hinzufügen" geklickt?
Du könntest mit Edit2.SetFocus(); ins nächste Feld kommen.

Viele Grüße
Regan


Martok - So 15.05.11 11:51

Passender wäre es aber, die TabOrder aufzuräumen: Rechte Maustaste im Designer -> "Tabulatorreihenfolge".

EDIT: das passiert wenn man sich das Bild nicht anguckt. Diese Methode wird hier durch die Groupboxen nicht gehen, da diese eine Art "Über-Reihenfolge" bilden.
Also doch SetFocus. 'Tschuldigung :roll:


Lannes - So 15.05.11 13:29

Hallo,

ich nutze für solche Steuerungen gerne die Eigenschaft Default der Buttons, ist Default auf True gesetzt wird bei Enter das OnClick-Event des Buttons ausgelöst.

Geschickt aufgebaut muss man dann die Enter-Taste nicht mehr abfangen, so oder ähnlich:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm1.ButtonCheckLinksClick(Sender: TObject);
begin
  //Berechnen
  EditRechts.SetFocus;
end;

procedure TForm1.ButtonCheckRechtsClick(Sender: TObject);
begin
  //Berechnen
  EditLinks.SetFocus;
end;

procedure TForm1.EditLinksEnter(Sender: TObject);
begin
  ButtonCheckLinks.Default := True;
end;

procedure TForm1.EditRechtsEnter(Sender: TObject);
begin
  ButtonCheckRechts.Default := True;
end;

procedure TForm1.EditLinksExit(Sender: TObject);
begin
  ButtonCheckLinks.Default := False;
end;

procedure TForm1.EditRechtsExit(Sender: TObject);
begin
  ButtonCheckRechts.Default := False;
end;


Wink - So 15.05.11 19:24

Guten Abend!

Danke erstmal für's verschieben und den Tip mit den Code-Quotations, habe entsprechenden Befehl heute morgen nicht gefunden und deshalb nur als Highlight markiert.

Danke auch für den Lösungsansatz! Werde ich morgen nach der Arbeit direkt ausprobieren und berichten :)

Wieso allerdings die Grafik seit dem Verschieben nicht mehr anhängt, ist mir ein Rätsel :s

Schönen Abend noch
Grüße
Wink


Wink - Di 17.05.11 17:01

ABEEEEEND :D

Ich raste völlig aus - ist das geil :D

Danke danke danke das funktioniert ja sowas von!!

Dankbarste Grüße
Wink :)