| oguzozturk74 | 03.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. | |
| zengin | 03.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; | |
| ASE | 03.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.... | |