Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnKeyPress verarbeitet ENTER nicht an (https://www.delphipraxis.net/184539-onkeypress-verarbeitet-enter-nicht.html)

BadenPower 3. Apr 2015 15:23

AW: OnKeyPress verarbeitet ENTER nicht an
 
Du hast nicht zufällig noch irgendwo irgendetwas eingebaut, was die Enter-Taste in eine Tab-Taste umwandelt, damit der Focus auf das nächste Element gesetzt wird.

Ansonsten können wir Dir nur weiterhelfen, wenn Du das Projekt einmal komplett in den Anhang packst.

Popov 3. Apr 2015 15:23

AW: OnKeyPress verarbeitet ENTER nicht an
 
Was soll die Enter-Taste denn machen? Soll sie zum nächsten Element springen? Das macht sie nicht. Das ist nicht ihre Aufgabe. Die Enter-Taste ist zuerst nur eine Taste, mehr nicht.

Wenn du willst, dass sie etwas macht, dann musst du es schon selbst machen.

Perlsau 3. Apr 2015 22:36

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von Sugar (Beitrag 1296086)
Ich weiß, nur komischerweise in diesem einen Projekt nicht!

Dann häng das Projekt doch hier einfach mal als ZIP-Archiv an, damit einer von uns nachschauen kann, wo du diesen ganz blöden Fehler machst. Wie sonst soll man hier von weitem drauf kommen, wenn man gar nicht alles angucken kann, was du da gemacht hast?

Sorry, BadenPower, hatte nicht gesehen, daß du das auch bereits vorgeschlagen hast. Sieh meinen Kommentar einfach als Bekräftigung des deinigen :-D

BadenPower 3. Apr 2015 23:49

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von Perlsau (Beitrag 1296110)
Sieh meinen Kommentar einfach als Bekräftigung des deinigen :-D

:thumb:

Sugar 4. Apr 2015 17:46

AW: OnKeyPress verarbeitet ENTER nicht an
 
Ich kann das Projekt nicht so ohne Weiteres anhängen, denn ich habe diverse Zukaufkomponenten drin. Ich werde aber mal das Problem nachstellen.

Ich bin auch schon etwas weiter gekommen:


Das Eingabefeld dient als Eingabefeld einer Kasse, also quasi als Eingabe wie bei einem Taschenrechner - die Entertaste soll also das Summieren einleiten

Neben diesem Eingabefeld gibt es nocht zwei Grids auf dem Formular und 40 Button. Ichhabe jetzt heraus bekommen, dass das drücken von Enter das OnClick Ereignis des "ersten" Buttons auslöst obwohl dieser keinen Tabstob hat, mein Enter auch nicht das Eingabefeld verlässt oder verlassen soll.

jaenicke 4. Apr 2015 18:27

AW: OnKeyPress verarbeitet ENTER nicht an
 
Steht dessen Eigenschaft Default vielleicht auf True?

BadenPower 4. Apr 2015 19:53

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von Sugar (Beitrag 1296187)
Ich kann das Projekt nicht so ohne Weiteres anhängen, denn ich habe diverse Zukaufkomponenten drin.

Das ist doch kein Hindernis.
Die Komponenten benötigt keiner um eine QuellCode-Analyse vorzunehmen.

Popov 4. Apr 2015 19:55

AW: OnKeyPress verarbeitet ENTER nicht an
 
Du programmierst zwar einen richtigen Taschenrechner mit Tasten, aber hier mein alter Ein-Prozedur-Taschenrechner (beachten nicht Punkt vor Strichrechnung). Vielleicht beantwortet es dir zum Teil deine Frage:
Delphi-Quellcode:
{                  --== Ein-Prozedur Taschenrechner ==--                       }
{           Hinweis: befolgt nicht die Punkt vor Strich Regel                 }
var
  Mem1, Mem2: Extended;
  LastOpKey: Char;

{Mögliche Tasten: "0123456789" und ",", dann "+-*/", "c", "=", alternativ Enter}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  Edit: TEdit;
begin
  {Dies und das}
  if not (Sender is TEdit) then
  begin
    Windows.Beep(300, 200);
    Exit;
  end
  else
    Edit := TEdit(Sender);

  if Key = #13 then
    Key := '=';

  {Clear}
  if Key = 'c' then
  begin
    Edit.Text := FloatToStr(0);
    Edit.SelStart := Length(Edit.Text); //setzt Cursor an Editfeld Ende
    Mem2 := 0;
    LastOpKey := #0;
    Key := #0;
    Exit;
  end;

  {Rechnen}
  if Key in ['+', '-', '*', '/', '='] then
  begin
    {Änderung des Operators (Operatorkorrektur)}
    if not Edit.Modified then
    begin
      LastOpKey := Key;
      Key := #0;
      Exit;
    end;
    {bedeutet, daß Opperator eigegeben wurde und vor der nächsten Zahleeingabe
    Edit-Feld gelöscht werden muß. Wird auch für Operatorkorrektur genutzt}
    Edit.Modified := False;

    {altuelle Zahl aus Editfeld holen}
    Mem1 := StrToFloat(Edit.Text);

    case LastOpKey of
    '+': Mem1 := Mem2 + Mem1;
    '-': Mem1 := Mem2 - Mem1;
    '*': Mem1 := Mem2 * Mem1;
    '/': Mem1 := Mem2 / Mem1;
    else
      Mem2 := Mem1;
      LastOpKey := Key;
      Key := #0;
      Exit;
    end;

    {Ergebnis und Zwischenergebns in Editfeld zurückschreiben}
    Edit.Text := FloatToStr(Mem1);
    Edit.SelStart := Length(Edit.Text);

    {auf nächste Zahlen-Eingabe verbreiten}
    Mem2 := Mem1;
    if Key <> '=' then
      LastOpKey := Key
    else
      LastOpKey := #0;
    Key := #0;
    Exit;
  end;

  {Zahlen Filtern}
  if not (Key in [#8, '0'..'9', ',']) then
  begin
    Windows.Beep(300, 200);
    Key := #0;
  end;
  {Löscht Editinhalt nach Operatoreingabe, bei neuen Zahleingabe}
  if not Edit.Modified then
    Edit.Text := '';
end; {Popov}

Sugar 5. Apr 2015 11:39

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von jaenicke (Beitrag 1296188)
Steht dessen Eigenschaft Default vielleicht auf True?

Das war´s!

Ich habe diese Eigenschaft bisher noch nie betrachtet.

Danke, Problem gelöst.

himitsu 5. Apr 2015 11:43

AW: OnKeyPress verarbeitet ENTER nicht an
 
Soeine Eigenschaft gibt es auch nochmal für Escape.

Wobei du bei Default=True das doch eigentlich sehen solltest?
Default-Buttons werden ja anders dargestellt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.
Seite 2 von 3     12 3      

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