Ok Tuşlarının kullanımı

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Ok Tuşlarının kullanımı

Mesaj gönderen oguzozturk74 »

DosMove

Bu bileşen Aşağı ve yukarı ok tuşları ile (TAB tuşunun yerine)kontroller arasında gezintiyi sağlıyor
This component allows you to navigate thourgh the controls with UP/DOWN arrows or ENTER key insted of TAB.

Liran Shahar, 1998 Israel simpletech@ibm.net
// Liran Shahar dan Allah razı olsun diyoruz. :)
//-----------------------------------------------------------------------------

Kod: Tümünü seç

unit DosMove;

interface

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

type
  TMoveOptions = set of (moEnter,moUpDn);

  TDosMove = class(TComponent)
  private
    FActive       : boolean;
    FOptions      : TMoveOptions;
    FOwnerKeyDown : TKeyEvent;
  protected
    procedure NewKeyDown(Sender : TObject;var Key : word;Shift : TShiftState);
  public
    constructor Create(AOwner : TComponent); override;
  published
    property Active : boolean read FActive write FActive;
    property Options : TMoveOptions read FOptions write FOptions;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('HomeMade', [TDosMove]);
end;

constructor TDosMove.Create(AOwner : TComponent);
var
  Loop : integer;
begin
  // ilk önce başka bir DosMove bileşeni var mı diye kontrol ediliyor
  for Loop:=0 to AOwner.ComponentCount-1 do
    if AOwner.Components[Loop] is TDosMove then raise
      EInvalidOperation.Create('TDosMove can have only one instance per form');
  inherited Create(AOwner);                 // Bileşen oluşturma ve default özelliklerinin belirlenmesi.
  FActive:=false;
  FOptions:=[];
  // Formun OnKeyDown olayı ile bütünlük sağlanıyor.
  FOwnerKeyDown:=(AOwner as TForm).OnKeyDown;
  (AOwner as TForm).OnKeyDown:=NewKeyDown;
  (AOwner as TForm).KeyPreview:=true;
end;               // Create

procedure TDosMove.NewKeyDown(Sender : TObject;var Key : word; Shift : TShiftState);
begin
  if FActive and (FOptions<>[]) then begin
    // istenilen tuşlar ele alınıyor.
    if ((Key=VK_DOWN) and (moUpDn in FOptions)) or
       ((Key=VK_RETURN) and (moEnter in FOptions)) then
      (Owner as TForm).Perform(WM_NEXTDLGCTL,0,0)
    else if (Key=VK_UP) and (moUpDn in FOptions) then
      (Owner as TForm).Perform(WM_NEXTDLGCTL,1,0);
  end;               // if FActive ...
  // Daha önceden atanmış OnKeyDown olayı çağrılıyor
  if assigned(FOwnerKeyDown) then FOwnerKeyDown(Sender,Key,Shift);
end;                     // NewKeyDown

end.
Delphi7 de denedim, çalışıyor.
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

ok tuşu

Mesaj gönderen zengin »

procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_UP Then //yukarı ok tuşu basıldığında basıldığında
Postmessage(Handle,WM_NEXTDLGCTL,1,0);
if key=VK_DOWN Then //aşağı ok tuşu basıldığında basıldığında
Postmessage(Handle,WM_NEXTDLGCTL,0,0);
end;
Zengin
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Arkadaşlar merhaba
Kodu komponent olarak derledim ve denedim. Harika çalışıyor. Getiren gönderen sağolsun.
Herkese kolay gelsin....
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Cevapla