Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mit pfeil taste procedur auslösen (https://www.delphipraxis.net/25134-mit-pfeil-taste-procedur-ausloesen.html)

blackvisions 1. Jul 2004 18:16


mit pfeil taste procedur auslösen
 
moin zusammen

ich bin gerade daran ein kleines progrämchen zu schreiben, mit welchem man bilder anschauen kann.. die bilder werden in ein Timage geladen.. ich habe nun unten 2 Buttons. ">>" um zum nächsten bild im gleichen ordner zu gelangen und "<<" um zum vorherigen bild im gleichen ordner zu gelangen..

nun wäre es aber praktisch wenn diese proceduren welche durch diese buttons ausgelöst werden auch mit den pfeiltasten ausgelöst werden können.. also wenn ich auf die pfeiltaste nach rechts drücke sollte das nächste und die linke das vorherige bild angezeigt werden..

wie mache ich das?? ich habe schon ALLES ausprobiert!! OnKeyPress, OnKeyDown (haben ja verschiedene variablen, char oder word) aber nichts geht..

ob ich nun (if key = VK_LEFT then) oder ob ich sonst eine taste nehme.. nichts geht..
ich hörte mal, dass es nicht guet geht, wenn man buttons aufm form hat da die pfeiltasten dann die buttons ansprechen.. aber auch mit der taste K oder weiss ich welche geht es nicht..

was kann ich machen???

danke für jede hilfe!

:roll:

glkgereon 1. Jul 2004 18:24

Re: mit pfeil taste procedur auslösen
 
hört sich irgendwie an als wär die form deaktiviert bzw... :gruebel: :gruebel:

du sagst onkeypress...
von der AKTIVIERTEN form?
auch bei 'k'?
prüf das alles mal...

Mirilin 1. Jul 2004 18:27

Re: mit pfeil taste procedur auslösen
 
:hi:


Setz mal KeyPreview der Form auf ture.


mfg Tobias

Christian Seehase 1. Jul 2004 19:46

Re: mit pfeil taste procedur auslösen
 
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.

blackvisions 1. Jul 2004 22:28

Re: mit pfeil taste procedur auslösen
 
jo ich habe nur eine form gebraucht bis jetzt und diese ist logischer weisse aktiv. auch keypreview ist auf true..

mal ne ganz blöde frage: für diese funktion muss nicht eine spezielle komponente installiert werden oder units eingebunden werden?? :smile2:

Christian Seehase 2. Jul 2004 00:24

Re: mit pfeil taste procedur auslösen
 
Moin Blackvisions,

das von mir sollte nur zeigen, wie man es einbauen kann.


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