Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit-Komponenten mit dynamischen SetFocus versehen (https://www.delphipraxis.net/31815-tedit-komponenten-mit-dynamischen-setfocus-versehen.html)

Barret 14. Okt 2004 12:46


TEdit-Komponenten mit dynamischen SetFocus versehen
 
Hi!
Ich hab in meinem projekt mehrere Edit-Felder die untereinander stehen. Jetzt will ich das, wenn ich die Pfeil hoch btw. runter Taste betätige der Focus ein Edit runter bzw. hoch springt. Ich hatte aber keine Lust in jedem Edit eine "Key"-Abfrage beim KeyDown zu machen und dan den Focus zuweisen. Sprich ich will das nur einmal schreiben und dann lass ich die Edits das "KeyDown"-Event von dem geschriebennen holen. Ich hab das schon über den "ComponentCount" versucht hab da aber nix rausbekommen.
Dan hab ich noch das Probiert:
Code:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = PChar(VK_Down)) then
  begin
    (Sender as TCustomEdit).Perform(WM_NEXTDLGCTL, 0, 0); //Zum nächsten Element wechseln
    Key := #0; //Gedrückte Taste unwirksam machen
  end;
end;
Funktioniert aber auch nicht.
Hat jemand von euch noch eine Lösung.
Ach so mit der angezeigten procedure kann ich ja nur weiter springen. Und wenn da jemand noch was im Angebot hätte wie ich zurückspringen kann wär ich auch dankbar.

Hansa 14. Okt 2004 12:56

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
Das müßte mit der Taborder gehen. Aber wie genau ? :gruebel:

Gruber_Hans_12345 14. Okt 2004 12:56

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
das Perform muß du dem Formular geben !

und eventuell im KeyDown auf VK_DOWN abprüfen

Sharky 14. Okt 2004 12:56

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
Hai Barret,

ich würde das im OnKeyDown der Form machen (KeyPreview auf True setzen)
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_Down) then
  begin
    self.Perform(WM_NEXTDLGCTL, 0, 0); //Zum nächsten Element wechseln
  end;
  if (Key = VK_Up) then
  begin
    self.Perform(WM_NEXTDLGCTL, 1, 0); //Zum vorherigen Element wechseln
  end;
end;

Barret 14. Okt 2004 12:59

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
Das mit der TabOrder weis ich ja ..... So hab ich das ja schon. Ich wollte das aber noch mit den Pfeil-Tasten machen damit man nicht immer Tab & Umschlt + Tab drücken muss. Sozusagen für DAUs.

Sharky 14. Okt 2004 13:22

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
Zitat:

Zitat von Barret
..Ich wollte das aber noch mit den Pfeil-Tasten machen ....

Was gefällt Dir denn an meiner Lösung nicht?

Barret 14. Okt 2004 13:29

Re: TEdit-Komponenten mit dynamischen SetFocus versehen
 
Deine Antwort kam vor meiner rein. Meins bezog sich auf den Text von Hansa. Ich habs mit deinem probiert ,Sharky, und ich muss sagen, dass gefällt mir recht gut. Noch eine kleine Modifikation und die Sache steht.
Danke


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