Q&A

  • stringGrid에서 입력시 현재cell을 벗어날때-꼭
stringGrid에서 입력을 가능하게하려면 option에서 goEDit 를 True로 변경후

수량 단가 금액을 입력한다고 생각한다면



수량을 입력/수정한후

수량을 format에 맞게 변경하고

금액이 값을 구한뒤 다시 금액cell에 뿌리려 합니다

그런데 어떤 이벤트에서 작성을 해야할지 궁금...............

keypress입벤트에서 특정키값을 가지고 하는 것은 알겠는데

그런것말고 tab키나 마우스로 이동했을때 처리하고자 합니다



또하나

tab키시 2칸 건너뛰고 특정셀로 이동하려면.......



아시는 고수님들의 답변 부탁드립니다

3  COMMENTS
  • Profile
    버섯 2001.11.13 20:53
    최월자 wrote:

    > stringGrid에서 입력을 가능하게하려면 option에서 goEDit 를 True로 변경후

    > 수량 단가 금액을 입력한다고 생각한다면

    >

    > 수량을 입력/수정한후

    > 수량을 format에 맞게 변경하고

    > 금액이 값을 구한뒤 다시 금액cell에 뿌리려 합니다

    > 그런데 어떤 이벤트에서 작성을 해야할지 궁금...............

    > keypress입벤트에서 특정키값을 가지고 하는 것은 알겠는데

    > 그런것말고 tab키나 마우스로 이동했을때 처리하고자 합니다

    >

    > 또하나

    > tab키시 2칸 건너뛰고 특정셀로 이동하려면.......

    >

    > 아시는 고수님들의 답변 부탁드립니다



    ondrawcell 에서 하셔도 될거 같네요...



    예제는 아마도 많이 있을것 같은데여..



    즐코하세여~

  • Profile
    최월자 2001.11.13 22:01


    제가 다 살펴봤는데 안되는군요

    혹 제어문을 쓰면 될런지 모르지만

    어떤제어문을 써야 할지





    버섯 wrote:

    > 최월자 wrote:

    > > stringGrid에서 입력을 가능하게하려면 option에서 goEDit 를 True로 변경후

    > > 수량 단가 금액을 입력한다고 생각한다면

    > >

    > > 수량을 입력/수정한후

    > > 수량을 format에 맞게 변경하고

    > > 금액이 값을 구한뒤 다시 금액cell에 뿌리려 합니다

    > > 그런데 어떤 이벤트에서 작성을 해야할지 궁금...............

    > > keypress입벤트에서 특정키값을 가지고 하는 것은 알겠는데

    > > 그런것말고 tab키나 마우스로 이동했을때 처리하고자 합니다

    > > 그리고 FORMAT에 맞게 뿌릴때 우측으로 정렬하여 뿌리고 싶습니다



    > > 또하나

    > > tab키시 2칸 건너뛰고 특정셀로 이동하려면.......

    > >

    > > 아시는 고수님들의 답변 부탁드립니다

    >

    > ondrawcell 에서 하셔도 될거 같네요...

    >

    > 예제는 아마도 많이 있을것 같은데여..

    >

    > 즐코하세여~

  • Profile
    버섯 2001.11.13 22:51
    최월자 wrote:

    >

    > 제가 다 살펴봤는데 안되는군요

    > 혹 제어문을 쓰면 될런지 모르지만

    > 어떤제어문을 써야 할지

    >

    >

    > 버섯 wrote:

    > > 최월자 wrote:

    > > > stringGrid에서 입력을 가능하게하려면 option에서 goEDit 를 True로 변경후

    > > > 수량 단가 금액을 입력한다고 생각한다면

    > > >

    > > > 수량을 입력/수정한후

    > > > 수량을 format에 맞게 변경하고

    > > > 금액이 값을 구한뒤 다시 금액cell에 뿌리려 합니다

    > > > 그런데 어떤 이벤트에서 작성을 해야할지 궁금...............

    > > > keypress입벤트에서 특정키값을 가지고 하는 것은 알겠는데

    > > > 그런것말고 tab키나 마우스로 이동했을때 처리하고자 합니다

    > > > 그리고 FORMAT에 맞게 뿌릴때 우측으로 정렬하여 뿌리고 싶습니다

    >

    > > > 또하나

    > > > tab키시 2칸 건너뛰고 특정셀로 이동하려면.......

    > > >

    > > > 아시는 고수님들의 답변 부탁드립니다

    > >

    > > ondrawcell 에서 하셔도 될거 같네요...

    > >

    > > 예제는 아마도 많이 있을것 같은데여..

    > >

    > > 즐코하세여~





    간단하게 만들어 봤는데.. 쩝.. 되는데여~~~



    제가 질문을 잘 이해를 못했나 -,.-



    unit Unit1;



    interface



    uses

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

    Grids, StdCtrls;



    type

    TForm1 = class(TForm)

    sg: TStringGrid;

    Edit1: TEdit;

    Edit2: TEdit;

    procedure sgDrawCell(Sender: TObject; ACol, ARow: Integer;

    Rect: TRect; State: TGridDrawState);

    procedure sgKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    private

    xx,yy : Integer;

    { Private declarations }

    public

    UpdateString : string;

    Function DeleteCommaString(ss : string) : real;

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    function TForm1.DeleteCommaString(ss: string): real;

    var ii,jj : Integer;

    aa : string[255];

    begin

    jj := 1;

    for ii := 1 to length(ss) do

    begin

    if ss[ii] = ',' then continue;

    aa[jj] := ss[ii];

    inc(jj);

    end;

    setlength(aa,jj-1);



    if strtointdef(aa,-1) = -1 then aa := '0';



    DeleteCommaString := StrTofloat(aa);

    end;



    procedure TForm1.sgDrawCell(Sender: TObject; ACol, ARow: Integer;

    Rect: TRect; State: TGridDrawState);

    begin

    if acol = 0 then exit;

    if arow = 0 then exit;



    if (xx = acol) and (yy = arow) then

    begin

    if UpdateString <> sg.Cells[xx,yy] then

    sg.Cells[xx,yy] :=

    format('%10.0n',[DeleteCommaString(sg.Cells[xx,yy])]);

    UpdateString := sg.Cells[xx,yy];

    end;

    end;



    procedure TForm1.sgKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    xx := sg.Col;

    yy := sg.row;

    edit1.text := inttostr(xx);

    edit2.text := inttostr(yy);

    end;



    end.