inputta karakter sınırlaması ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
inputta karakter sınırlaması ?
Merhaba arkadaşlar yardımlarınız için şimdiden teşekkür ederim.
inputbox'a girilen bir değere karakter sınırlaması koymak istiyorum. Yalnız bu 255 karakter yada 25 30 50 karakter olucak diye olan sınırlama değil.
KeyPress ile denemedim ama inputta keypress'i uyduramadım.
Yazlışta şu karakterlerin kabul olmamasını istiyorum. \ / : * ? " > < |
inputbox'a yazılan metinde bu karakterleri pastığı zaman mümkünse key:=#0; yaptırayım. Yada hata mesajı verdireyim ama bunu yapabilirmiyim. Bu karakterleri önleyebilirmiyim.
inputbox'a girilen bir değere karakter sınırlaması koymak istiyorum. Yalnız bu 255 karakter yada 25 30 50 karakter olucak diye olan sınırlama değil.
KeyPress ile denemedim ama inputta keypress'i uyduramadım.
Yazlışta şu karakterlerin kabul olmamasını istiyorum. \ / : * ? " > < |
inputbox'a yazılan metinde bu karakterleri pastığı zaman mümkünse key:=#0; yaptırayım. Yada hata mesajı verdireyim ama bunu yapabilirmiyim. Bu karakterleri önleyebilirmiyim.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: inputta karakter sınırlaması ?
doğrudan inputbox a müdahale edebilirmisiniz bilmiyorum ama inputbox benzeri istediğiniz özeliklerde küçük bi form oluşturup modal olarak gösterebilirsiniz.
hatta kullanım yeri uygunsa bi panel üzerine 1 label 1 edit 2 tane de buton koyup yapabilirsiniz... bu paneli de bir frame içinde oluşturursanız istediğiniz yerde kullanırsınız. form üzerindeki tüm nesneler (bu panel hariç) bir panel içinde olursa, ihtiyacınız halinde bu paneli visible true ve bringtofront deyip diğer bileşenleri içeren panele de enabled false dersiniz...
hatta kullanım yeri uygunsa bi panel üzerine 1 label 1 edit 2 tane de buton koyup yapabilirsiniz... bu paneli de bir frame içinde oluşturursanız istediğiniz yerde kullanırsınız. form üzerindeki tüm nesneler (bu panel hariç) bir panel içinde olursa, ihtiyacınız halinde bu paneli visible true ve bringtofront deyip diğer bileşenleri içeren panele de enabled false dersiniz...
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: inputta karakter sınırlaması ?
Kod: Tümünü seç
function GetAveCharSizeEx(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
function InputQueryEx(const ACaption, APrompt: string;
var Value: string;vMaxLength:integer=0): Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSizeEx(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
Caption := APrompt;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
if vMaxLength>0 then
MaxLength :=vMaxLength
else
MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := Edit.Top + Edit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'Tamam';
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'İptal';
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var s: String;
begin
inputqueryex('Deneme','Deneme mesajı',s,10);
// 10 karakterlik limit
showmessage(s);
end;
Re: inputta karakter sınırlaması ?
unicorn64'ün dediği gibi kendine özgü Form kullanmak en kolay ve mantıklı olan bence. Hatta Dialogs.pas içinde InputBox'a bakarsan orada da basit bir şekilde TForm kullanılarak yapıldığını görürsün.
Karakter sınırlaması için aşağıdaki kod işini görür :
Karakter sınırlaması için aşağıdaki kod işini görür :
Kod: Tümünü seç
const
MaxLengthMessage = WM_USER + 1000;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure InputBoxSetMaxLength(var Msg: TMessage); message MaxLengthMessage ;
public
{ Public declarations }
end;
procedure TForm1.InputBoxSetPasswordChar(var Msg: TMessage);
var
hInputForm, hEdit, hButton: HWND;
begin
hInputForm := Screen.Forms[0].Handle;
if (hInputForm <> 0) then
begin
hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);
SendMessage(hEdit, EM_LIMITTEXT, 10, 0); // Max. 10 karakter girilsin
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Handle, MaxLengthMessage, 0, 0);
InputBox('Başlık', 'Prompt', 'Default');
end;
There's no place like 127.0.0.1
Re: inputta karakter sınırlaması ?
Mesajımın sonunakadar okunmadığını düşünüyorum 
Burada benim inputbox sadece bir örnek olarak sunduğum bir olaydır. Velakin ben karakter sınırlamasını istiyorum karakter sınırlaması olarakta 25 karakter 100 karakter olarak sınırlamak istemiyorum verilen iki kodda bunun kodudur.
\ / : * ? " > < |
Yukarıdaki karakterlerin kullanılmamasını istiyorum. Bu karakterler KeyPress işlemi gördüğü anda Key=#0; yada hata mesajı vermesi.
Karakter sınırlamasından kastım budur..

Burada benim inputbox sadece bir örnek olarak sunduğum bir olaydır. Velakin ben karakter sınırlamasını istiyorum karakter sınırlaması olarakta 25 karakter 100 karakter olarak sınırlamak istemiyorum verilen iki kodda bunun kodudur.
\ / : * ? " > < |
Yukarıdaki karakterlerin kullanılmamasını istiyorum. Bu karakterler KeyPress işlemi gördüğü anda Key=#0; yada hata mesajı vermesi.
Karakter sınırlamasından kastım budur..
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: inputta karakter sınırlaması ?
+1unicorn64 yazdı:inputbox benzeri istediğiniz özeliklerde küçük bi form oluşturup modal olarak gösterebilirsiniz.
Bir kelimenin anlamını öğretsen bile yeter..



Re: inputta karakter sınırlaması ?
+1unicorn64 yazdı:inputbox benzeri istediğiniz özeliklerde küçük bi form oluşturup modal olarak gösterebilirsiniz.
There's no place like 127.0.0.1
Re: inputta karakter sınırlaması ?
SimaWB yazdı:+1unicorn64 yazdı:inputbox benzeri istediğiniz özeliklerde küçük bi form oluşturup modal olarak gösterebilirsiniz.
+
Kod: Tümünü seç
Procedure Edit1onKeyPress ......
const
CharSet = ['.','?','='];
Begin
if Key in Charset then key:=#0;
End;
Re: inputta karakter sınırlaması ?
bence ilk mesajını önce sen tekrar bi oku istersen...ByDeniS yazdı:Mesajımın sonunakadar okunmadığını düşünüyorum
Burada benim inputbox sadece bir örnek olarak sunduğum bir olaydır.
özellikle inputbox ı vurgulamışsın sonra da yanlış anlaşıldı inputbox bir örnekti diyorsun....ByDeniS yazdı: inputbox'a girilen bir değere karakter sınırlaması koymak istiyorum.
inputbox'a yazılan metinde bu karakterleri pastığı zaman mümkünse key:=#0; yaptırayım.
ihtiyacına göre inputbox benzeri ufak bi form oluştur,
yeni formda yada hali hazırda kullandığın formda artık nerde gerekliyse ordaki edite @LostSolul un gönderdiği kodu bir uygula...
yada en azından uygulayıp da çalıştıramadığın kodu gönder nerde hatan var ona bakalım...
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: inputta karakter sınırlaması ?
\ / : * ? " > < |
Yukarıdaki karakterlerin kullanılmamasını istiyorum. Ama verilen kod örnekleri hep 25 karakter 10 karakter sınırı
Mümkünse inputbox mümkün değilse tabikide başka bir örnek. Sınırlamadan kastım yukarıdaki karakterler.
Yukarıdaki karakterlerin kullanılmamasını istiyorum. Ama verilen kod örnekleri hep 25 karakter 10 karakter sınırı

Mümkünse inputbox mümkün değilse tabikide başka bir örnek. Sınırlamadan kastım yukarıdaki karakterler.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: inputta karakter sınırlaması ?
Kod: Tümünü seç
Procedure Edit1onKeyPress ......
const
CharSet = ['.','?','='];
Begin
if Key in Charset then key:=#0;
End;
charset te istemediğin tuşları yaz
if satırında istiyorsan mesaj verdir.