안녕하세요.
고수님들께 허접한 질문 몇가지 드리겠습니다.
현재 delphi 7 을 사용하고 있는데.
1. edit 컴퍼넌트에서 숫자만 입력받고,
2. 숫자입력시 천단위마다 ',' 삽입을 하고,
3. 좌측으로 입력을 받는것
숫자를 한글로 변환하는 함수소스로 아무리 연구를 해도 초보자에겐 무리인것 같습니다.
이왕이면 전체소스파일을 볼수있다면 도움이 많이 될것 같습니다.
장마도 끝나가고 본격적인 무더위가 올것 같습니다.
항상 건강들 하십시요.
*************************************
라벤더님과 김병윤님 가르침 정말 감사합니다.
3. 번은 좌측이 아니고 우측입니다. 죄송합니다.
그리고 이 3가지가 입력시 실시간으로 한번에 작동 해서면 합니다.
그리고 이곳 자료실에 있는 숫자edit 컴퍼넌트는 델7 에서는 컴파일이 안되어 소스분석을 못하겠더군요.
즉 원도우에 있는 계산기처럼 입력을 받으면서 입력커서가 보이면 더욱 좋구요.
너무 많은걸 알려고 하는건 아닌지 모르겠습니다.
<!--CodeS-->
// 숫자만 표현하기 위한 필터링 함수..........................1번 관련
// (다 입력된 내용에서 숫자만 뽑아내기~)
Function FilterNumber(ls_Text: String): String;
var
i : integer;
begin
Result := '';
if Length(ls_Text) > 0 then
begin
for i := 1 to Length(ls_Text) do begin
case ls_Text[i] of
'0'..'9','.','-' : Result := Result + ls_Text[i];
end;
end;
end;
if Result = '' then Result := '0';
end;
procedure TForm1.umEdit1Exit(Sender: TObject);
var ld_Val:Double;
begin
// Edit에 적혀있는 글에서 숫자값만 필터링
ld_Val := StrToFloat(FilterNumber(umEdit1.Text));
// 천단위 마다 콤마 찍어서 보여줌..........................2번 관련
umEdit1.Text := Format('%.0n',[ld_Val]);
end;
procedure TForm1.umEdit1KeyPress(Sender: TObject; var Key: Char);
begin
// Edit의 KeyPress이벤트에서 다음처럼 조건을 주면 숫자관련 값들만 입력이 됩니다.
// (키가 눌러질 때마다 숫자만 뽑아내기~)..........................1번 관련
IF Not(Key IN['0'..'9','.','-']) Then Key := Char(Nil);
end;
<!--CodeE-->
그리고 결정적으로 3번은 일반 컴포넌트에서 우측정렬이 되지 않아서
저는 우측정렬이 가능한 "umEdit" 컴포넌트를 설치해서 사용하고 있습니다.
umedit컴포넌트도 첨부합니다.
※ 마지막으로 아예 폼이 생성될 때 숫자값만 입력 받을 수 있도록 SetWindowLong설정하는 방법 입니다.
(다만 마이너스와 소숫점은 ... 사용할 수 없습니다.)
<!--CodeS-->
procedure TForm1.FormCreate(Sender TObject);
begin
Edit1.Text := '0';
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
end;
<!--CodeE-->
ps. 도움 되셨음 하구요 저도 라벤더님과 같은 생각입니다. 검색해보는 버릇이 많은 도움이 될 것입니다.
(잘못 검색하셔도 얻고자 하는 것 이외의 많은 정보를...^^ 얻을 수 있습니다.)