Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastendruck weiterleiten (https://www.delphipraxis.net/18152-tastendruck-weiterleiten.html)

mschaefer 15. Mär 2004 16:49


Tastendruck weiterleiten
 
Moin, moin,

ich habe eine Auswahlliste (Listbox) und ein Eingabefeldt (TEdit).
Nun möchte ich, das wenn die Listbox selektiert ist die Tastendrücke
an das Edit weiterleiten. Hat da jemand eine Idee wie das gehen könnte?

c113plpbr 15. Mär 2004 16:59

Re: Tastendruck weiterleiten
 
Sollte doch nicht allzu schwer sein. Du setzt einfach ein onKeyDown o.ä. Ereignis auf die ListBox, und sreibst dann einfach sowas:
Delphi-Quellcode:
Edit1.Text := Edit1.Text + Key;
ciao, Philipp

mschaefer 15. Mär 2004 17:04

Re: Tastendruck weiterleiten
 
Moin, moin

ja mit Anhängen mag das gehen. Aber die Tücke liegt im Detail

- Del - Taste
- Links-Rechts-Pfeile
- und Text nach Links-Rechts Cusorbewegungen

irgendwie erscheint mir das sehr aufwendig...
daher habe ich überlegt ob man das Tastaturereignis
nicht irgendwie umbiegen kann

Grüße // Martin

shmia 15. Mär 2004 17:23

Re: Tastendruck weiterleiten
 
Hier ein Beispiel mit 2 Edit-controls:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   // Zeichen an Edit2 weiterleiten
   Edit2.Perform(WM_CHAR, Integer(Key), 0);
   // Zeichen für Edit1 nicht weiter bearbeiten
   Key := #0; // evtl. auskommentieren
end;
Dies leitet alle "normalen" Zeichen von Edit1 an Edit2 weiter.
Damit auch die Cursortasten weitergeleitet werden:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   Edit2.Perform(WM_KEYDOWN, Key, 0);
end;

mschaefer 15. Mär 2004 17:31

Re: Tastendruck weiterleiten
 
Moin, moin,

Genial, genau sowas habe ich gesucht !!
Danke !

Grüße // Martin

mschaefer 15. Mär 2004 18:30

Re: Tastendruck weiterleiten
 
Moin,
tja sorry leider zu früh gefreut... :stupid:

Also habe jetzt mal vier Edit-Feldr unmotiviert irgendwo auf ein leeres Formular geworrfen.
Im OnKeyDown - Ereignis von Edit 1 steht dann folgendes

Delphi-Quellcode:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edit2.Perform(WM_CHAR,   Integer(Key), 0);
  Edit3.Perform(WM_KEYDOWN, Integer(Key), 0);
  PostMessage( Edit4.handle, WM_SYSKEYDOWN, Integer(Key), 1 );
end;
Der Effekt ist, das in Edit 2 alle Tastendrücke in Großbuchstaben erscheinen.
Bei mir tut sich in Edit3 und Edit4 überhaupt nichts. Da muß doch irgendwo
noch ein Denkfehler stecken :gruebel: :gruebel: :gruebel:

Grüße // Martin

fkerber 15. Mär 2004 20:15

Re: Tastendruck weiterleiten
 
HI!

Liegt es evtl. daran, dass es im Original-Code einmal Keydown und einmal Keypress ist?


Ciao fkerber


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.

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 by Thomas Breitkreuz