Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Enter Button (https://www.delphipraxis.net/177598-enter-button.html)

Frage95 15. Nov 2013 09:37

Enter Button
 
Hallo ich möchte beim drücken des Enter Buttons bestimme Abläufe ausführen ich habe das schon versucht doch das Ergebnis ist nicht das gewünschte

Delphi-Quellcode:
procedure TfrmMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
TextFeld : string;
begin
TextFeld := EdNickname.Text;
if TextFeld <> '' then begin
 if Key = VK_RETURN then begin
      ListShow;
      EdNickname.Enabled := false;
      EdNickname.Color := clGray;
      Serverstart;
      frmMainForm.BtnAusführen.Enabled := true;
   end else begin
      frmMainForm.BtnAusführen.Enabled := false;
      Showmessage ('Please enter your nickname!!');
      frmMainForm.BtnAusführen.Enabled := true;
         end;
      end;
   end;
end.

baumina 15. Nov 2013 09:44

AW: Enter Button
 
Wenn Du einen TButton hast, auf dem z.B. "Enter" steht, dann kannst du Im Objektinspektor ihm die Eigenschaft "Default" = True verpassen. Dadurch wird beim Drücken der Enter-Taste automatisch das Ereignis "OnClick" des Buttons ausgelöst.

Frage95 15. Nov 2013 09:47

AW: Enter Button
 
Ich habe eine TAdvGlassButton dort finde ich diese Eigenschaft leider nicht :/

himitsu 15. Nov 2013 09:48

AW: Enter Button
 
Zitat:

Hallo ich möchte beim drücken des Enter Buttons bestimme Abläufe ausführen
Beim Drücken von Enter wird doch etwas Anderes ausgeführt, wie bei anderen Tasten.

Also die Funktion ist korrekt, laut der unzureichenden Informationen.

Zitat:

ich habe das schon versucht doch das Ergebnis ist nicht das gewünschte
Was hast du versucht und was passiert, aber vorallem was willst du eigentlich erreichen?

[edit]
Enter-Taste oder ein Button mit Enter?



Aufführlichere Fragen, mit allen "nötigen" Informationen sind Gold wert.

Frage95 15. Nov 2013 09:51

AW: Enter Button
 
Also Wenn enter gedrückt wird sollen einige proceduren ausgeführt werden,

wenn ich dies teste, geht das nur beim 1 enter drücken wenn das feld leer ist also wenn die Felhler meldung angezeigt wird. Fülle ich das Edit Feld geschieht nichts und beim 2. mal enter drücken geschieht auch nichts.

hier nochmal das Beispiel

Delphi-Quellcode:
procedure TfrmMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
TextFeld, IpField : string;
begin
TextFeld := EdNickname.Text;
IpField := EdIp.Text;
if (TextFeld <> '') and (IpField <> '') then begin
 if Key = VK_RETURN then begin
      ListShow;
      Serverstart;
      EdFields;
      frmMainForm.BtnAusführen.Enabled := false;
 end else if ListBox1.Count > 0 then begin
      frmMainForm.BtnAusführen.Enabled := false;
      end else if EdNickname.Text = '' then begin          
      frmMainForm.BtnAusführen.Enabled := false;
      Showmessage ('Please enter your nickname!!');
      Showmessage ('Please enter your IP- Adress!!');
      frmMainForm.BtnAusführen.Enabled := true;
   end;
end;
end;

himitsu 15. Nov 2013 09:54

AW: Enter Button
 
KeyPreview der Form auf True gesetzt?

Wenn bei ersten Mal zufällig der Fokus auf der Form liegt, bekommt sie natürlich diese Meldung.

Wenn beim zweiten Mal aber der Fokus im Edit ist, dann wird das [Enter] nur von dem Edit verarbeitet, da es denkt das sei nur an sich gerichtet.



PS: Den Debugger kennst du?
(nachsehen ob das Event aufgerufen wird und was darin passiert)

haentschman 15. Nov 2013 09:55

AW: Enter Button
 
Moin... 8-)

reden wir über:
A - ENTER Taste (auf der Tastatur)
oder
B - einen TAdvGlassButton wo ENTER draufsteht

:gruebel:

Frage95 15. Nov 2013 09:56

AW: Enter Button
 
Okay ich habe mein Problem gelöst mit Hilfe eines PopupMenu.

Tortzdem Danke:thumb:

haentschman 15. Nov 2013 10:08

AW: Enter Button
 
:roll:
Na siehste, haben wir mal wieder was hingepfuscht als das eigentliche Problem zu verstehen und zu korrigieren...

Helmi 15. Nov 2013 11:28

AW: Enter Button
 
Hallo,

wenn ich die Procedure etwas anders formatiere, dann fällt mir auf, dass
das Konstrukt nur läuft, wenn im Edit EdNickname und im Edit EdIp etwas
drin steht.
Ist eines von beiden leer, so wird die Procedure wieder beendet.

Die Abfrage
Delphi-Quellcode:
if EdNickname.Text = '' then
wird nie ausgeführt,
da er da nur hinkommt, wenn im Edit was drin steht

Delphi-Quellcode:
procedure TfrmMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
TextFeld, IpField : string;
begin
TextFeld := EdNickname.Text;
IpField := EdIp.Text;
if (TextFeld <> '') and (IpField <> '') then
  begin
    if Key = VK_RETURN then
      begin
        ListShow;
        Serverstart;
        EdFields;
        frmMainForm.BtnAusführen.Enabled := false;
      end
    else
      if ListBox1.Count > 0 then
        begin
          frmMainForm.BtnAusführen.Enabled := false;
        end
      else
        if EdNickname.Text = '' then
          begin
            frmMainForm.BtnAusführen.Enabled := false;
            Showmessage ('Please enter your nickname!!');
            Showmessage ('Please enter your IP- Adress!!');
            frmMainForm.BtnAusführen.Enabled := true;
          end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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