Q&A

  • edit창에서 입력제한을 하려고 하는데요...
edit창에서 2자리의 정수로 입력을 받으려고합니다.



책자를 보니 입력받은 데이타의 길이를 length로 구해

하라고 하는데 그것보다 어디 프로그램에서 보니까

커서가 2자리를 넘어가니까 움직이지 않게 하는 방법이 있더군요...



그 프로그램의 소스에는 그런 내용이 없는 것 보니까

오브젝트 인스텍터의 caption이나 event에서 지정해

줄수 있나요...?



그리고 그리드에 출력을 할 때 데이터를 가운데로 정렬할 수 있는

방법은 있나요?



부탁드립니다...



^.^

1  COMMENTS
  • Profile
    강호규 2000.08.16 19:22
    델왕초보 wrote:

    > 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;