Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Reaktion auf Pfeiltasten (https://www.delphipraxis.net/4699-reaktion-auf-pfeiltasten.html)

Leo 8. Mai 2003 22:29


Reaktion auf Pfeiltasten
 
Hallo,

Warum reagiert die Procedur auf Tataur Ereignisse der

"Einfg","Entf","Pos1","Ende" etc. Tasten aber warum wird sie nicht aufgerufen, wenn ich die Pfeiltasten betätige?

Delphi-Quellcode:
procedure TQuelltextBox.KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
     VK_DELETE : Projekt.AktuelleDatei.Quelltext.DeleteZeichen(1);
     VK_LEFT  : Projekt.AktuelleDatei.Quelltext.CursorBewegen(-1, 0);
     VK_RIGHT : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 1, 0);
     VK_UP    : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 0,-1);
     VK_DOWN  : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 0, 1);
  end;
end;

Hansa 9. Mai 2003 01:08

setze mal "KeyPreview" der Form auf true.

Leo 9. Mai 2003 12:32

KeyPreview
 
Hilft leider gar nichts :(

Leo 9. Mai 2003 12:34

Tatsturereignisse
 
Hallo,

ich habe gerade im Zusammenhang mit KeyPreview diesen Satz in der Hilfe gefunden

"Die Einstellung bezieht sich nicht auf Navigationstasten (TAB, Pfeiltasten usw.), da diese keine Tastaturereignisse auslösen."

Wie reagiert man den dann auf Pfeiltasten?

Stanlay Hanks 9. Mai 2003 12:47

Gute Frage. Die müssen ja irgendeine Nachricht an Windows senden, damit man z.B. in einem Memo navigieren kann.

Stanlay Hanks 9. Mai 2003 12:55

Also wenn TQuelltextBox ein Form ist, versteh ich nicht, dass das nicht geht.

Ich hab

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
Case Key of
VK_Up : ShowMessage('Nach oben Taste wurde gedrückt');
VK_DOWN:ShowMessage('Nach unten Taste wurde gedrückt');
end;
end;
eingegeben und alles lief wie gewünscht.

Man liest sich. Stanlay 8)

Leo 9. Mai 2003 12:57

Nein
 
TQuelltextBox ist kein Form sondern eine von TPanel abgeleitete Komponenete in einem Form.

Hansa 9. Mai 2003 13:01

Hier habe ich einfach zwei Buttons. Drücke ich einen Deiner Pfeiltasten, dann springt der Cursor jeweils zu dem anderen Button.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    case key of
    VK_DELETE,
    VK_LEFT,
    VK_RIGHT,
    VK_UP,
    VK_DOWN : Button1.SetFocus;
  end;
end;

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    VK_DELETE,
    VK_LEFT,
    VK_RIGHT,
    VK_UP,
    VK_DOWN : Button2.SetFocus;
  end;
end;

end.
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Hansa 9. Mai 2003 13:04

Ws lese ich da :?: Von Panel abgeleitet ? Kannst Deine Arbeiten getrost einstellen, siehe Navigator. Ein Panel löst genauso wenig ein Tataturereignis aus wie der Navigator. Da haste die A....-Karte gezogen. :mrgreen:

Stanlay Hanks 9. Mai 2003 13:05

Also bei mir hat ein TPanel gar kein OnKey usw. Hast du das hinzugefügt als du die Komponente abgeleitet hast?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Seite 1 von 2  1 2      

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