Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Automatisch ins Edit-Feld springen (https://www.delphipraxis.net/12956-automatisch-ins-edit-feld-springen.html)

Jörn 7. Dez 2003 18:38


Automatisch ins Edit-Feld springen
 
Ich progge gerade an einem kleinen Game. Es ist ein reines Multiplayergame mit einem eigebauten Chat. Nur der User muss immer erst in das Edit-Feld klicken, um seine Nachricht eingeben zu können. Gibt es eine Möglichkeit das man das nicht muss?

Wer sich das Spiel angucken möchte, gibts auf http://micha.p2board.de/forum/forum.php

MfG

Leuselator 7. Dez 2003 19:03

Re: Automatisch ins Edit-Feld springen
 
ohne es gesehen zu haben: Tastaturereignisse abfangen und Behandlungsroutinen (OnKeyDown/OnKeyPress/OnKeyUp) anlegen, wenn Taste gedrückt wird, die nicht zur Spielsteuerung dient, dann: ChatEdit.SetFocus.
gruß

Jörn 7. Dez 2003 19:52

Re: Automatisch ins Edit-Feld springen
 
Schön und gut.

Habe zwei Probleme.
1. Der code muss definitiv in ins OnKeyPress-Ereignis (key muss vom Typ char sein und nicht vom Typ word wie es in OnKeyDown/Up ist. Aber in welches OnKeyPress muss es? Von meinem Formular funktioniert ja nicht.

2. Wenn ich es testweise in das meines Memos setze, dann wird das eingegebene Zeichen im Edit-Feld markiert, wird bei weiteren Tastenanschlägen gelöscht.

Delphi-Quellcode:
if key in [#33..#122] then
begin
form1.Edit1.Text := form1.Edit1.Text + key;
form1.Edit1.SetFocus;
end;

Christian Seehase 7. Dez 2003 20:03

Re: Automatisch ins Edit-Feld springen
 
Moin Jörn,

wenn Du die Eigenschaft KeyPreview des Formulares auf true setzt kommt das KeyPress auch dort an.

Jörn 7. Dez 2003 21:02

Re: Automatisch ins Edit-Feld springen
 
Danke habs eben auch gefunden, wenn auch nur durch dummen Zufall.

MfG und ne gute Nacht

EDIT: man bin ich doof... hab trotzdem immer noch das Problem, das das Zeichen im Edit-Feld markiert wird...

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (key in [#33..#122]) and (edit1.Focused = false) then
begin
form1.Edit1.Text := form1.Edit1.Text + key;
form1.Edit1.SetFocus;
end;
end;

Leuselator 7. Dez 2003 21:38

Re: Automatisch ins Edit-Feld springen
 
dann schau mal in der OH (solltest Du einfach öfter tun - Edit auf's Formular und anschließend F1 drücken) dort unter den Eigenschaften "SelStart" und "SelLenght"
Gruß

Jörn 8. Dez 2003 15:13

Re: Automatisch ins Edit-Feld springen
 
Jo geile Sache...
falls es jemanden interessiert, hier das Ergebnis:

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (key in [#33..#122]) and (edit1.Focused = false) then
with form1.Edit1 do
begin
Text := form1.Edit1.Text + key;
SetFocus;
SelStart := form1.Edit1.SelLength;
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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-2025 by Thomas Breitkreuz