Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: mit pfeil taste procedur auslösen

  Alt 1. Jul 2004, 19:46
Moin Blackvisions,

hier mal ein grobes Beispiel:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    // Eigene OnKeyDown Methoden
    procedure ButtonLeft(Sender: TObject; var Key: Word;Shift: TShiftState);
    procedure ButtonRight(Sender: TObject; var Key: Word;Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

// Button, ergänzt um die Abfrage der Pfeiltasten
type
  TMyButton = class(TButton)
  private
     procedure WMGETDLGCODE(var msg : TWMGetDlgCode); message WM_GETDLGCODE;
  end;

implementation

{$R *.DFM}

procedure TMyButton.WMGETDLGCODE(var msg: TWMGetDlgCode);
begin
  inherited;
  // Auch die Pfeiltasten weitergeleitet bekommen.
  msg.Result := msg.Result or DLGC_WANTARROWS;
end;

procedure TForm1.ButtonLeft(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
  if Key = VK_LEFT then begin
    self.Caption := 'LINKS';
  end else begin
    self.Caption := '';
  end;
end;

procedure TForm1.ButtonRight(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
  if Key = VK_RIGHT then begin
    self.Caption := 'RECHTS';
  end else begin
    self.Caption := '';
  end;
end;
Da ein Button standardmässig die Pfeiltasten nicht weitergeleitet bekommt, muss man sich selber einen deklarieren der dem System "mitteilt", dass er die doch haben möchte.
Es fehlt, z.B. noch, was bei den anderen Pfeiltasten passieren soll, denn dieser Automatismus (z.B. nächstes Control ansteuern) fehlt jetzt, und die Funktionalität müsste selber implementiert werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat