Ok Tuşlarının kullanımı
oguzozturk7403.04.2004 - 12:33:26
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. :)
//-----------------------------------------------------------------------------

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.
 
zengin03.04.2004 - 19:44:36
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;
 
ASE03.04.2004 - 20:36:10
Arkadaşlar merhaba
Kodu komponent olarak derledim ve denedim. Harika çalışıyor. Getiren gönderen sağolsun.
Herkese kolay gelsin....
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com