Arkadaşlar merhaba,
edit kutusuna kopyalanıp yapıştırılan harf karakterlerinin engellenmesini istiyorum. Yani kopyalanan metinde rakamlardan başka harf karakterleri varsa, yapıştırma esnasında engellenmesini, yapıştırılmamasını istiyorum.
Tsk ederim
Karekter ve rakamların engellenmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Karekter ve rakamların engellenmesi
Hayat tüm olumsuzluklara rağmen yaşamaya değer.
Re: Karekter ve rakamların engellenmesi
Sadece sayı girilmesini Edit'in onKeyPress eventinde sağlıyorsan, kullanıcılar Ctrl+V ile yapıştırma yapamayacaktır ve Edit'in onContextPopup event'inde
Handled := True;
yaparsan sağ tık menüsü açılmaz. Böylece kullanıcının yapıştırma yapmasını engelleyebilirsin.
Kullanıcı yapıştırma yapabilsin ama sadece sayılar yapışsın istiyorsan o zaman Edit1.WindowProc 'u araştırmalısın.
Handled := True;
yaparsan sağ tık menüsü açılmaz. Böylece kullanıcının yapıştırma yapmasını engelleyebilirsin.
Kullanıcı yapıştırma yapabilsin ama sadece sayılar yapışsın istiyorsan o zaman Edit1.WindowProc 'u araştırmalısın.
There's no place like 127.0.0.1
Re: Karekter ve rakamların engellenmesi
Arkadşlar merhaba,
tşk. ederim.
Edite yapıştırmak istediğim metinde rakamlardan hariç harf karakterleri varsa, Mesela: Merhaba123, metindeki (Merhaba) karakterlereinin engellenmesi ve (123) rakamlarının yapıştırılmasını istiyorum. Yani arattığım metinde karakterler engellenip rakamlar edite yapıştırılacak. Umarım bir şeyler bulurum.
Hoşca kalın
tşk. ederim.
Edite yapıştırmak istediğim metinde rakamlardan hariç harf karakterleri varsa, Mesela: Merhaba123, metindeki (Merhaba) karakterlereinin engellenmesi ve (123) rakamlarının yapıştırılmasını istiyorum. Yani arattığım metinde karakterler engellenip rakamlar edite yapıştırılacak. Umarım bir şeyler bulurum.
Hoşca kalın
Hayat tüm olumsuzluklara rağmen yaşamaya değer.
Re: Karekter ve rakamların engellenmesi
O zaman öncelikle OnKeyPress'te Ctrl+V'ye izin vermelisiniz:
Bu durumda kullanıcı hem Ctrl+V ile hem de sağ tık menüsü ile Edit1'e yazı yapıştırabilir.
Yapıştırmak istediği yazıyı kontrol etmek için Edit1'e gelen messajları dinlemek ve WM_PASTE mesajı gelip gelmediğini kontrol etmek gerekir. WM_PASTE mesajı yakalandığında yapıştırılmak istenilen yazıyı Clipboard'tan okuyabiliriz. Daha sonra içinde rakam olmayanları atıp tekrar ClipBoard'a gönderir ve WM_PASTE mesajını tekrar çağırırsak sadece sayıların yapıştırılmasını sağlarız:
Kod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #8, ^V]) then
Key:=#0;
end;
Yapıştırmak istediği yazıyı kontrol etmek için Edit1'e gelen messajları dinlemek ve WM_PASTE mesajı gelip gelmediğini kontrol etmek gerekir. WM_PASTE mesajı yakalandığında yapıştırılmak istenilen yazıyı Clipboard'tan okuyabiliriz. Daha sonra içinde rakam olmayanları atıp tekrar ClipBoard'a gönderir ve WM_PASTE mesajını tekrar çağırırsak sadece sayıların yapıştırılmasını sağlarız:
Kod: Tümünü seç
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
oldEdtWndProc: TWndMethod;
procedure EditWndProc(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #8, ^V]) then
Key:=#0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
oldEdtWndProc := Edit1.WindowProc;
Edit1.WindowProc := EditWndProc;
end;
procedure TForm1.EditWndProc(var Message: TMessage);
var
str, strTmp: string;
i: integer;
begin
if Message.Msg = WM_PASTE then
begin
strTmp := '';
str := Clipboard.AsText;
for i := 1 to Length(str) do
if (str[i] in ['0'..'9']) then
strTmp := strTmp + str[i];
Clipboard.AsText := strTmp;
end;
oldEdtWndProc(Message);
end;
There's no place like 127.0.0.1
Re: Karekter ve rakamların engellenmesi
Arkadaşlar merhaba,
Harika! Eline, diline, gönlüne sağlık.
Hoşca kalın
Harika! Eline, diline, gönlüne sağlık.
Hoşca kalın
Hayat tüm olumsuzluklara rağmen yaşamaya değer.