AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit ENTER das Nächste Feld selektieren (so wie Tab)
Thema durchsuchen
Ansicht
Themen-Optionen

Mit ENTER das Nächste Feld selektieren (so wie Tab)

Ein Thema von Karstadt · begonnen am 3. Apr 2006 · letzter Beitrag vom 23. Jul 2008
Antwort Antwort
Seite 2 von 2     12   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 3. Apr 2006, 12:57
wie wärs mit :

Delphi-Quellcode:
if key = #13 then
  Col := Col + 1;
Und zwar im OnKeyPress des Grids. Bei dir steht "key = 13", vermute deshalb, daß es im OnKeyDown ist und somit eventuell zu früh.
Gruß
Hansa
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 3. Apr 2006, 13:43
Im OnKeyDown ist der Key ein 'Virtual Key Code'.
Im OnKeyPress kommen nur 'druckbare' Zeichen an (also keine Cursor- oder Funktionstasten). Hier ist Key ein Char und bezeichnet das Zeichen selbst.

Richtig wäre im OnKeyDown der Form (mit KeyPreview=True) das hier:
Delphi-Quellcode:
Procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  If Key= VK_RETURN Then Key := VK_TAB;
end;
Das ist eigentlich das genau Gleiche wie der nicht funktionierende Code von Karstadt, aber "besser", weil mit VK_ Konstanten (obwohl VK_RETURN = 13 und VK_TAB = 9 ).

Das funktioniert auch mit DBGrid und allen anderen Controls... wenn, ja wenn man der Form über
MyForm.KeyPreview = True sagt, das sie (die Form) die Tastendrücke bitte zuerst bekommen soll. Denn offensichtlich wird das ENTER von irgendwem abgefangen. Mit KeyPreview=True passiert das meistens nicht. Da es aber einige Controls gibt, die sich per WndProc noch vor das OnKeyDown der Form schalten, wäre die perfekte Vorgehensweise, die WndProc der Form zu überschreiben. Hier fängt man die WM_KEYDOWN - Message ab und ändert im Message-Record den wParam entsprechend.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#13

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 3. Apr 2006, 13:53
Wozu soll man denn immer Komponenten benutzen ? Es ist doch viel sinnvoller keine zu benutzen, da die Qualität des Programms dadurch steigt.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 3. Apr 2006, 13:58
Komponenten? Weils einfach ist. Aber stell die Frage in einem eigenen Thread.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 3. Apr 2006, 18:34
Zitat von alzaimar:
...Das funktioniert auch mit DBGrid und allen anderen Controls... wenn, ja wenn man der Form über
MyForm.KeyPreview = True sagt, das sie (die Form) die Tastendrücke bitte zuerst bekommen soll.
Das mag künstlerisch richtig sein, aber hier wird eher das Handwerk benötigt. Habe nachgeschaut :

Delphi-Quellcode:
procedure TfrmEin.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  EnterTab(Sender,Key,Shift,[],[],true);
end;

procedure TfrmEin.sgEnter(Sender: TObject);
begin
  KeyPreview := false;
  sg.SetFocus;
...
end;

procedure TfrmEin.sgExit(Sender: TObject);
begin
  KeyPreview := true;
end;

...
Luckie hat ja den Link zu EnterTab bereits gepostet. Die Controls der Form werden bei mir immer mit Enter verlassen / bestätigt. Dies bedeutet EnterTab setzen und KeyPreview auch auf true setzen. Aber eben NICHT im Grid (siehe Source) !!! Hier irrt sich der Künstler.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von tschinkes
tschinkes

Registriert seit: 29. Jun 2004
Ort: Mannheim
29 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Mit ENTER das Nächste Feld selektieren (so wie Tab)

  Alt 23. Jul 2008, 12:44
Zitat von MagicAndre1981:
Für die Komponentenliebhaber hat JEDI auch was dabei, dass das macht
Welche Komponente ist das den? Oo Jedi hat soviel das man echt den Überblick verliert. Wäre schön wenn du mir sagen könntest wo ich die finde.
Tobi
"Let´s fetz", sagte der Spatz und sprang in den Mixer

Delphi 7 Enterprise inkl. JEDI / WinXP / Lahme Kiste als PC
http://www.kraft-internet.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:59 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