Q&A

  • StringGrid에서 Cell에 입력제한하는 방법
Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다.

예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다.

방법을 아시는 분 도움 부탁드립니다.

1  COMMENTS
  • Profile
    김영대 1999.06.24 23:52
    이상준 께서 말씀하시기를...

    > Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다.

    > 예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다.

    > 방법을 아시는 분 도움 부탁드립니다.



    아래 source는 말씀하신 기능을 하는 예제는 아니지만

    처리하는 방법만 참고하시라고 올려둡니다



    // 수치자료를 다루는 StringGrid이므로 right aligned, floating point,

    // editable grid 가 가능합니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Grids;



    type

    TForm1 = class(TForm)

    StringGrid1: TStringGrid;

    procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;

    Rect: TRect; State: TGridDrawState);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    tmpText, cellText: String;

    i, X, Y: Integer;



    // StringGrid1의 프로퍼티 setting

    // DefaultDrawing := True

    // Options에 goEditing 추가



    implementation

    {$R *.DFM}



    procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;

    Rect: TRect; State: TGridDrawState);

    begin

    if (Row > 0) and (Col > 0) and (StringGrid1.Cells[Col, Row] <> '') then

    begin

    cellText := '';

    tmpText := StringGrid1.Cells[Col, Row];

    for i := 1 to Length(tmpText) do

    if tmpText[i] in ['0'..'9','-','+','.'] then

    cellText := cellText + tmpText[i];



    try

    {cell의 값을 floating point 으로 변환}

    if cellText <> '' then

    cellText := FloatToStrF(StrToFloat(cellText),

    ffNumber,13,2); // 소숫점을 없애려면 2->0 으로

    except on EConvertError do

    begin

    cellText := '';

    end;

    end;



    if cellText = '' then

    begin

    {Set font}

    StringGrid1.Canvas.Font.Color := clRed; {잘못된 수치는 빨강}

    StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2,

    StringGrid1.Cells[Col,Row]);

    end

    else

    begin

    {cell이 수치이므로 오른쪽 right-justified}

    X := Rect.Right - StringGrid1.Canvas.TextWidth(cellText);



    {cell의 수치를 bottom과 top에 대한 중앙으로}

    Y := Rect.Top + ((Rect.Bottom - Rect.Top -

    StringGrid1.Canvas.TextHeight(cellText)) div 2);

    StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style - [fsBold];



    // 오른쪽 margin을 주기위해 왼쪽으로 2 pixels 만큼 이동

    Dec(X, 2);



    StringGrid1.Canvas.TextRect(Rect, X, Y, cellText);

    end;

    end;

    end;



    end.



    • 정남용
    • 1999.04.16 01:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김정선
      1999.04.23 00:51
      저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
    • 이정욱
      1999.04.17 02:26
      저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
    • 김정선
      1999.04.16 22:56
      저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
    • 이주흥
    • 1999.06.25 04:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.06.25 11:50
      100% VCL 이라면 따로 배포할 필요가 없습니다. 모든것은 생성된 EXE파일안데 들어가게 됩니다. 100% VCL...
    • 하명훈
    • 1999.06.25 04:17
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 문창완
      1999.04.17 00:42
      네모나 이미지의 각꼭지를 적당하게 라운드 처리하고싶습니다. 도와주세요... 멘날 질문만 하는 사람입...
    • 안치봉
      1999.04.17 01:17
      문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
    • 문창완
      1999.04.17 01:49
      안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
    • 안치봉
      1999.04.17 02:14
      문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
    • 문창완
      1999.04.17 03:07
      정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
    • 문창완
    • 1999.04.17 00:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.17 01:17
      문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
    • 문창완
      1999.04.17 01:49
      안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
    • 안치봉
      1999.04.17 02:14
      문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
    • 문창완
      1999.04.17 03:07
      정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
    • 변상준
    • 1999.06.25 01:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 행인1
      1999.06.25 02:10
      변상준 께서 말씀하시기를... > 컴포넌트명 앞의 'T'의 의미는 무엇입니까 ? "델파이에서는 일반적으로...
    • 신인재
      1999.06.25 02:06
      음냐.... T는 컴포넌트라기보다는 델파이의 클래스명을 정의할때 전통적으로 쓰이는 것이지요. 이...
    • 엠마
    • 1999.04.17 00:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 07:08
      엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
    • bluepine
      1999.04.17 01:37
      엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
    • 경험자
      1999.06.25 04:34
      이수진 께서 말씀하시기를... > 퀵리포트를 미리보기 하지않고 바로 프린터로 출력할때 생기는 문제입니다...
    • 하남수
      1999.06.25 02:28
      사용은 안해봤지만 다음 프러퍼티를 사용하면 되지 않을까요... QuickRep1.PrinterSettings.LastPage
    • 구창민
      1999.04.16 07:33
      이순희 wrote: > 안녕하세요... 또 질문 올리네요.. > 저번 답변 고마웠습니다.. 그런데.. 근본적인 문제...
    • bluepine
      1999.04.17 01:23
      구창민 wrote: > 이순희 wrote: > > 안녕하세요... 또 질문 올리네요.. > > 저번 답변 고마웠습니다.. ...
    • 이상준
    • 1999.06.24 22:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.24 23:52
      이상준 께서 말씀하시기를... > Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다. ...
    • 이순희
      1999.04.15 08:34
      안녕하세요... 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. 두개의 필드에 대해 (끝시간...
    • bluepine
      1999.04.17 01:18
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 글쎄요.
      1999.04.15 19:02
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 양윤호
    • 1999.06.24 21:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.25 02:42
      양윤호 께서 말씀하시기를... > 윈도우즈 95와 98의 CD를 넣은 상태에서 직접 전화접속 어댑터와 전화접속...
    • 문창완
    • 1999.04.17 00:42
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.24 21:30
      preview화면에서 괜찮은데 인쇄를 하면은, 글자가 가로고 커져 나옵니다. 항상 그런것은 아니고 특정...
    • 안치봉
      1999.04.17 01:17
      문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
    • 문창완
      1999.04.17 01:49
      안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
    • 안치봉
      1999.04.17 02:14
      문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
    • 문창완
      1999.04.17 03:07
      정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
    • bds
    • 1999.06.24 20:27
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 하늘
    • 1999.04.16 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.17 00:47
      글쎄요... 광고/홍보란에 한번 써보세요. 하늘 wrote: > 안녕하세요... > 델파이로 만든 가계부 프...
    • heewoony
    • 1999.06.24 20:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하남수
      1999.06.25 00:05
      heewoony 께서 말씀하시기를... > 퀵레포트에서 라벨을 출력하려구합니다. > 근데. 출력 용지는 연속연...
    • 하남수
      1999.06.25 00:05
      heewoony 께서 말씀하시기를... > 퀵레포트에서 라벨을 출력하려구합니다. > 근데. 출력 용지는 연속연...
    • 엠마
    • 1999.04.17 00:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 07:08
      엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
    • bluepine
      1999.04.17 01:37
      엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...