edit.text arası dolaşma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
edit.text arası dolaşma
Selam arkadaşlar, edit.text ler arasında dolaşırken tab tuşuyla geçiş yapabiliyorum ama ben enter tuşunu kullanarak geçmek istiyorum. Gerekli kodu yazabilirseniz sevinirim, kolay gelsin arkadaşlar
Kod: Tümünü seç
Procedure TForm1.FormCreate(Sender:TObject);
Begin
Keypreview:=True;
end;
Procedure TForm1.FormKeypress(Sender:TObject;Var key:Char);
Begin
if key=#13 then begin // ENTER
key:=#0;
PostMessage(Handle,WM_NEXTDLGCTL,0,0);
end;
end;
Procedure TForm1.FormKeypress(Sender:TObject;Var key:Word);
Begin
if key=vk_up then PostMessage(Handle,WM_NEXTDLGCTL,1,0); // Yön tuşları
if key=vk_down then PostMessage(Handle,WM_NEXTDLGCTL,0,0);
end;
end;
kolay gelsin.
yön tuşları
teşekkür ederim arkadaşım, enter tuşuyla geçiş yapabiliyorum fakat
yön tuşlarına ait kod hata veriyor.
yön tuşlarına ait kod hata veriyor.

Kod: Tümünü seç
unit OkToTab;
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('Erkan', [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.
bu kodu notdefterine at ordanda faklı kaydet yoluyla OkToTab.pas şeklinde kaydet
bu bir componenet Erkan Adıyla bir tab acılacak
ordaki nesney forma koy
Kod: Tümünü seç
active:=true
tamam
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
S.A.
Formun on keydown olayına
hem yön tuşları hemde enter tuşu çalışır. key:=0 comboboxlarda itemindexin değişmemesi için. yalnız enter tuşuna basıldığı zaman dın diye ses çıkartıyor onun için formun onkeypres olayına
yazarsan işlem tamam olur.
Kolay gelsin.
Formun on keydown olayına
Kod: Tümünü seç
case key of
vk_return,vk_down:begin selectnext(activecontrol,true,true); key:=0; end;
ck_up:begin selectnext(activecontrol,false,true); key:=0; end;
end;//case
Kod: Tümünü seç
if key=#13 then key:=#0;
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim