펑션함 만들어 봤습니다. 어떤 님이 길이를 직접 읽어서 컨트롤 한다해서...
그냥 쓰기에 넘 부족한점이 많아서 여러분들의 추가 기술을 요청합니다.
감사합니다.
function TForm1.Get_Edit_Length(str,EditL:string):Boolean;
var Gstr, Astr, Hstr : string;
i : Integer;
k : Double;
begin
Result := True;
Gstr := str;
if Gstr = '' then Exit;
Astr := '';
Hstr := '';
for i := 1 to length(Gstr) do begin
if ord(Gstr[i]) < 161 then
Astr := Astr + Gstr[i] else
Hstr := Hstr + Gstr[i];
end;
k := length(Astr)+ (length(Hstr));
if StrToInt(EditL) < k then begin
Result := False;
end;
end;
procedure TForm1.Edit2Change(Sender: TObject);
var i : integer;
begin
if not Get_Edit_Length(TEdit(Sender).Text,inttostr(TEdit(Sender).MaxLength)) then begin
i := TEdit(Sender).SelStart;
TEdit(Sender).SelStart := 0;
TEdit(Sender).Text := Copy(TEdit(Sender).Text,0,TEdit(Sender).MaxLength);
TEdit(Sender).SelStart := TEdit(Sender).MaxLength;
//TEdit(Sender).SelStart := TEdit(Sender).SelStart+1;
end;
end;
문제:
Tedit의 maxLength := 10 일때
'우리나라대' 에서 우리 뒤에 '의'를 넣고자하면 안됩니다. '우리의나라'가 어렵네요..
영문인경우 'abcdefghij'의 경우 b 뒤에 다른 문자가 안됩니다.