Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Navigieren zwischen den Edit-Feldern (https://www.delphipraxis.net/56429-navigieren-zwischen-den-edit-feldern.html)

Chauffeur4.5 5. Nov 2005 14:11


Navigieren zwischen den Edit-Feldern
 
Hallo Delphianer ...

Ich habe ein DB Proggi geschrieben, da ich nicht permanent die Mouse bei der rechten Hand halten möchte in der Dateneingabe, versuche ich seit längerem ein OnKeyPress Ereignis zu schreiben.

Delphi-Quellcode:

[OnKeyPress] - (KeyPreview:=True;]

   if key = #13 {Return} then
   begin
    Perform(WM_NEXTDLGCTL, 0, 0);
    Key := #0;
   end;
Mit diesen Code im OnKeyPress Ereignis, übergebe ich den Focus der TabTaste an die Entertaste. So dass ich beim rücken in das nächste Feld die Return - Taste benutzen kann.
Jetzt kommt es vor das ich mich verschrieben habe im vorigem Feld z.B. nun möchte ich via Pfeil_hoch Taste wieder ins vorige Feld. Wie kann ich das bewerkstelligen??? Mit VK_Down & VK_UP bzw #38, #40 erreiche ich nichts. Vieleicht kann mir einer sagen, wo ich welchen Code eintippe. [z.B. OpjectIn. - OnKeyDown - Code]


Vielen Dank an alle zukünftige Poster CH4.5

[edit=Sharky]Delphi-Tags richtig gesetzt. Mfg, Sharky[/edit]

ichbins 5. Nov 2005 14:21

Re: Navigieren zwischen den Edit-Feldern
 
Delphi-Quellcode:
if key=38 then edit1.setfocus;
Ein onkeypress-Ereigniss gibts doch schon, das musste doch nicht extra schreiben :?:

[edit] jetzt hatte die Delphipraxissoftware ein Bug :?: Ich habe den obigen Artikel bearbeitet und dann kommt ein roter kasten und es wird mein Artikel angezeigt, dass der neu ist... Ich klick auf absenden und der Artikel is jetzt doppelt... [/edit]

Chauffeur4.5 5. Nov 2005 15:07

Re: Navigieren zwischen den Edit-Feldern
 
Zitat:

if key=38 then edit1.setfocus;
Bei diesem Bsp. gebe ich dem edit1 den Focus, doch weiss das prog doch nicht ob ich gerade bei edit2 bin und auf edit1 zurück will. ich könnte ja bereits bei edit23 sein und will zurück auf edit22 dann ev. auf edit21 usw.!

Zitat:

Ein onkeypress-Ereigniss gibts doch schon, das musste doch nicht extra schreiben

Mußte ich bei der Returntaste aber auch erst schreiben, da der Standartfocus zum wechseln in das nächste Feld auf TAB liegt.


Trotzdem Danke für die Antwort

CH4.5

Sharky 5. Nov 2005 15:21

Re: Navigieren zwischen den Edit-Feldern
 
Hai CH4.5

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hi:

Wie Du ja schon erkannt hast kannst Du mit
Code:
Perform(WM_NEXTDLGCTL, [b]0[/b], 0)
zum nächsten Objekt in der Tabfolge springen.
Mit diesem Aufruf
Code:
Perform(WM_NEXTDLGCTL, [b]1[/b], 0)
kommst Du zu dem vorherigen Objekt.

Chauffeur4.5 5. Nov 2005 16:20

Re: Navigieren zwischen den Edit-Feldern
 
Vielen Dank für die Begrüßung...

Habe jetzt folgenden Code im OnKeyPress versucht ...

Delphi-Quellcode:
   
 if key = #38 then
   begin
    Perform(WM_NEXTDLGCTL, 1, 0);
   end;
Wenn ich noch
Delphi-Quellcode:
 Key = #0
hinzufüge geht gar nichts mehr.

Leider ergab es nicht den gewünschten Effekt.

Vieleicht schreibe ich den Code an die falsche Stelle. Vieleicht sollte ich erwähnen das ich in DBEdits navigieren möchte.

Sharky 5. Nov 2005 16:36

Re: Navigieren zwischen den Edit-Feldern
 
Hai Chauffeur,

versuche es mal mit diesem Code im Delphi-Referenz durchsuchenOnKeyDown der Form.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
var
  Mgs: TMsg;
begin
  if (ActiveControl is TDBEdit) then
  begin
    if (Key = VK_RETURN) then
    begin
      Key := 0;
      Perform(WM_NEXTDLGCTL, 0, 0);
      PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE); // Beep
    end;
    if (Key = VK_UP) then
    begin
      Perform(WM_NEXTDLGCTL, 1, 0)
    end;
  end;
end;
Als erstes prüfe ich ob das aktuelle Control ein DBEdit ist. Nur dann soll die "sondernavigation" arbeiten.
Mit dem PeekMessage "entferne" ich den letzen Tastendruck um beim drücken von Enter das Beep zu unterbinden.

Chauffeur4.5 5. Nov 2005 16:52

Re: Navigieren zwischen den Edit-Feldern
 
Ich bedanke mich, jetzt kommen die Erfolge wie ich sie mir wünsche. War eine schwere Geburt, aber es hat sich gelohnt. Jetzt muss ich das nur noch auf die DBEdits umschreiben.

Vielen Dank.

:)


CH4.5


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