AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Problem mit der abfrage der ENTER taste
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit der abfrage der ENTER taste

Ein Thema von Countdown2000 · begonnen am 8. Apr 2009 · letzter Beitrag vom 8. Apr 2009
Antwort Antwort
Countdown2000

Registriert seit: 8. Apr 2009
19 Beiträge
 
#1

Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 13:12
Damit ich durch ENTER die eingabe bestätigen und gleich Speichern kann
habe ich das in mein Program mit folgendem Code eingeben:

procedure TForm3.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
if DBEdit1.Text = '' then
begin
DBedit5.Text := 'Nein' ;
Checkbox1.state := cbunchecked;
form1.DBGrid1.Enabled := true;
Form1.Table1.Refresh;
table1.Refresh;
Form1.Enabled := false;
button6.Enabled := false
end;
if DBEdit1.Text <> '' then
begin
table1.Post; // Speichern
form1.DBGrid1.Enabled := true;
Form1.Table1.Refresh;
table1.Refresh;
Form1.Enabled := false;
button6.Enabled := false;
end;
end;
end;

die #13 stand in meinem Delphi buch als ersatz für die ENTER taste !

aber es scheint immernoch jede taste zu wählen als ob er die angabe der ENTER taste überspringt !

Wie bekomme ich das jetzt hin das es richtig Funktioniert ?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 13:27
Hallo Countdown2000,

zunächst wäre es ganz schön wenn du deinen Sourcetext etwas formatieren würdest, dann fällt es etwas leichter evtl. Fehler zu finden.

ausserdem finde ich Deinen "Speichercode" nicht.

Gruß
K-H
  Mit Zitat antworten Zitat
Countdown2000

Registriert seit: 8. Apr 2009
19 Beiträge
 
#3

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 13:38
So besser ?
ich Speicher durch Table1.Post; !

Delphi-Quellcode:
procedure TForm3.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if key = #13 then
  begin
   if DBEdit1.Text = 'then
    begin
     DBedit5.Text := 'Nein' ;
     Checkbox1.state := cbunchecked;
     form1.DBGrid1.Enabled := true;
     Form1.Table1.Refresh;
     table1.Refresh;
     Form1.Enabled := false;
     button6.Enabled := false
    end;
   if DBEdit1.Text <> 'then
    begin
     table1.Post; // Speichern
     form1.DBGrid1.Enabled := true;
     Form1.Table1.Refresh;
     table1.Refresh;
     Form1.Enabled := false;
     button6.Enabled := false;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Countdown2000

Registriert seit: 8. Apr 2009
19 Beiträge
 
#4

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 13:43
Wer noch andere sachen an meinem code auszusetzten hat kann sie ruhig posten !

Dies ist Form3 meines Programms wo auch der fehler auftritt


Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, DBTables;

type
  TForm3 = class(TForm)
    Button1: TButton;
    Table1: TTable;
    DataSource1: TDataSource;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Image1: TImage;
    Button7: TButton;
    GroupBox1: TGroupBox;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    GroupBox2: TGroupBox;
    CheckBox1: TCheckBox;
    DBEdit1: TDBEdit;
    Label1: TLabel;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBEdit5Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var arr:array of Integer;
      max, min: Integer;
      av: Double;
  Form3: TForm3;

implementation

uses Unit1, Unit2;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
Form1.show ; // zeige das hauptfenster
 Form1.Table1.Refresh; // aktuellesiere es
  form1.DBgrid1.Enabled := true;
 form1.button1.Enabled := true;
 form1.button2.Enabled := true;
 form1.button3.Enabled := true;
 form1.button4.Enabled := true;
 Form1.WindowState := wsnormal;
 form1.Enabled := true;
 Form3.Close ;
 button6.Enabled := false;

end;

procedure TForm3.CheckBox1Click(Sender: TObject);
begin
if checkbox1.State = cbUnchecked then
 begin
 DBEdit5.Text := 'Nein';
 dbedit1.Enabled := false;
 dbedit1.Color := clscrollbar;
 DBedit1.Clear;
 Button6.Enabled := true;
 end;

if checkbox1.State = cbChecked then
 begin
  DBedit1.Enabled := true;
  DbEdit1.Color := clWindow;
  DBEdit5.Text := 'Ja';
  Button6.Enabled := false;
 end;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
 table1.First; // zum ersten eintrag

 button5.Enabled := true;
 button4.Enabled := true;
 button2.Enabled := false;
 button3.Enabled := false;

 table1.Refresh;
end;

procedure TForm3.Button3Click(Sender: TObject);
begin
 table1.Prior ; // zum vorherigen eintrag

 Button4.Enabled := true;
 button5.Enabled := true;

 if table1.Bof then
  begin
   button2.Enabled:= false ;
   button3.Enabled:= false ;
  end;

 table1.Refresh;
end;

procedure TForm3.Button4Click(Sender: TObject);
begin
 table1.Next; // zum nexten eintrag

 Button2.Enabled := true;
 Button3.Enabled := true;

 if table1.Eof then
  begin
   button5.Enabled := false;
   button4.Enabled := false;
  end;

 table1.Refresh;
end;

procedure TForm3.Button5Click(Sender: TObject);
begin
 table1.Last; // zum letzten eintrag

 button2.Enabled := true;
 button3.Enabled := true;
 Button5.Enabled := false;
 Button4.Enabled := false;

 table1.Refresh;
end;

procedure TForm3.Button6Click(Sender: TObject);
begin
 table1.Post; // Speichern
 form1.DBGrid1.Enabled := true;
 Form1.Table1.Refresh;
 table1.Refresh;
 Form1.Enabled := false;
 button6.Enabled := false;
end;

procedure TForm3.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
 begin
  if DBEdit1.Text = 'then
   begin
    DBedit5.Text := 'Nein' ;
    Checkbox1.state := cbunchecked;
    form1.DBGrid1.Enabled := true;
    Form1.Table1.Refresh;
    table1.Refresh;
    Form1.Enabled := false;
    button6.Enabled := false
   end;
  if DBEdit1.Text <> 'then
   begin
    table1.Post; // Speichern
    form1.DBGrid1.Enabled := true;
    Form1.Table1.Refresh;
    table1.Refresh;
    Form1.Enabled := false;
    button6.Enabled := false;
   end;
 end;
end;

procedure TForm3.Button7Click(Sender: TObject);
begin
Form1.WindowState := wsminimized;
Form3.WindowState := wsminimized
end;


procedure TForm3.FormCreate(Sender: TObject);
begin
  Table1.Refresh;
end;



procedure TForm3.DBEdit5Change(Sender: TObject);
begin
if DBEdit5.Text = 'Neinthen
 Begin
  if checkbox1.State = cbchecked then
   begin
    checkbox1.State := cbunchecked;
   end;
 end;
if DBEdit5.Text = 'Jathen
 Begin
  if Checkbox1.state = cbunchecked then
   begin
    checkbox1.State := cbchecked;
   end;
 end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 13:45
Ich weiss ja nicht genau wie das mit TTables so funktioniert, aber kann es sein, daß man irgendwo noch ein Commit absetzen muss? Oder hast Du ein OnPostCommit, das Du auf True setzen kannst?

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 14:12
Hallo Countdown2000,

zunächst einmam sehe ich keinen Grund warum das nicht so funktionieren sollte wie Du das beschrieben hast.
über Key=#13 sollte es wirklich so funktionieren wie Du es beschrieben hast.
zunächst könntest Du versuchen mit z.B.

Delphi-Quellcode:
  if Key=#13 then
    showmessage('Taste='+inttohex(ord(key),2);
festzustellen ob Deine Speicherprocedure wirklich bei jedem Tastendruck angesprungen wird.

Ausserdem sollen F7/F8 extrem hilfreich sein um solchen Problemen auf die Spur zu kommen.

Gruß
K-H
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 14:24
Macht es hier einen Unterschied ob man auf #13 oder VK_RETURN abfragt?
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#8

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 15:27
Zitat von Countdown2000:
aber es scheint immernoch jede taste zu wählen als ob er die angabe der ENTER taste überspringt !
Deine Prüfung der Taste und das hier funktioniert beides einwandfrei:
Delphi-Quellcode:
if (Key = Char(VK_RETURN)) then
    begin
      // ...
    end;
Die Ursache für dein Problem könnte sein, dass du den Text von DBEdit1 nicht löschst. (Falls ich es übersehen hab oder es gar nicht notwendig ist, sorry)
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#9

Re: Problem mit der abfrage der ENTER taste

  Alt 8. Apr 2009, 15:39
Ich würde das nicht im Key-Press machen, sondern im
Key-Up. Dann gibt's kein "Tastenprellen".

Ein
if Ord(Key) = VK_RETURN then

sollte klappen.

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz