edit창에서 2자리의 정수로 입력을 받으려고합니다.
책자를 보니 입력받은 데이타의 길이를 length로 구해
하라고 하는데 그것보다 어디 프로그램에서 보니까
커서가 2자리를 넘어가니까 움직이지 않게 하는 방법이 있더군요...
그 프로그램의 소스에는 그런 내용이 없는 것 보니까
오브젝트 인스텍터의 caption이나 event에서 지정해
줄수 있나요...?
그리고 그리드에 출력을 할 때 데이터를 가운데로 정렬할 수 있는
방법은 있나요?
부탁드립니다...
^.^
> edit창에서 2자리의 정수로 입력을 받으려고합니다.
>
> 책자를 보니 입력받은 데이타의 길이를 length로 구해
> 하라고 하는데 그것보다 어디 프로그램에서 보니까
> 커서가 2자리를 넘어가니까 움직이지 않게 하는 방법이 있더군요...
>
> 그 프로그램의 소스에는 그런 내용이 없는 것 보니까
> 오브젝트 인스텍터의 caption이나 event에서 지정해
> 줄수 있나요...?
>
> 그리고 그리드에 출력을 할 때 데이터를 가운데로 정렬할 수 있는
> 방법은 있나요?
>
> 부탁드립니다...
1.Edit에서 자릿수 제한
-MaxLength를 2로 하면됩니다.
2.정수로 입력받는 방법
-몇가지가 있기는 한데...
-마스크를 이용하는 방법이 있기는 하지만 한글상태로 놓고
편집을 하다보면 프로그램이 다운되는 현상이 여전히 수정되지 않았군요
-해서 제일 간편하면서 좋은 방법은 숫자전용입력 콤포넌트를 이용하는 방법입니다.
자료실에 찾아 보면 있을 겁니다.
3.그리드에서 정렬
-OnDrawCell 이벤트에서 해주시면 됩니다.
-아래는 구창민님의 팁백과에서 발췌한 것입니다. 이것을 응용하시면
가능합니다.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
var
Save_OldAlign: word;
begin
if (Row = 0) or (Col = 0) then
begin // Column과 Row의 각 title은 굵은 폰트로
StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style + [fsBold];
StringGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col, Row]);
end
else // 금액은 오른쪽 정렬
begin
{새롭게 정렬(TA_RIGHT)하고 이전 정렬상태를 저장(Save_OldAlign)
Save_OldAlign := SetTextAlign(StringGrid1.Canvas.Handle, TA_RIGHT);
StringGrid1.Canvas.TextRect(Rect, Rect.Right-2, Rect.Top+2, StringGrid1.Cells[Col, Row]);
{이전 정렬상태를 복구(타이틀이나 기타 다른 Cell은 왼쪽 정렬일 수 있으므로)}
SetTextAlign(StringGrid1.Canvas.Handle, Save_OldAlign);
end;
end;