Q&A

  • StringGrid에서 특정 col만 Editing안되게 하는 방법.....
고수님들의 많은 조언 부탁해요..

6  COMMENTS
  • Profile
    솔뫼마당 2001.03.28 01:25
    여러방법들을 많이들 제시하셨는데....

    좋은 방법은 아닌 듯 합니다.

    말 그대로 특정 컬럼만 편집이 안 되면 되니까 두가지 방법이 있습니다.

    첫째는 OnKeyPress 이벤트에서 처리하는 것이고,

    다른 하나는 Options를 변경하면 됩니다.



    첫째, OnKeyPress 처리방법

    if StringGrid1.Col = 2 then Key := #0;



    들째, Options 변경방법

    OnSelectCell 이벤트에

    if StringGrid1.Col = 2 then

    StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,

    goRangeSelect]

    else

    StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,

    goRangeSelect,goEditing];



    chobl wrote:

    > 고수님들의 많은 조언 부탁해요..

  • Profile
    홍동훈 2001.03.23 22:57
    chobl wrote:

    > 고수님들의 많은 조언 부탁해요..



    안녕하세요. ^^;

    스트링그리드의 이벤트에 OnClick 을 이용하면 되죠.

    예로 스트링그리드의 이름이 SGrid1이라면

    if SGrid1.Col=3 <-- 입력을 원치않는 col then SGrid1.Col:=4; <-- 원래위치하는 Col

    한번해보세요.

    즐코하세요. ^^



  • Profile
    설창원 2001.03.23 23:20
    이 방법도 괜찮지만 그래도 이렇게 하면 보기에 안좋겠네요. 클릭을 했는데

    다른 셀로 옮겨가 버리니까요.

    그리고 클릭이 아니라 키보드 방향키로 이 컬럼에 들어가면 처리를

    어떻게 하죠? 역시 좋은 방법이 아닙니다.

    그럼 즐거운 하루 되시길....



    홍동훈 wrote:

    > chobl wrote:

    > > 고수님들의 많은 조언 부탁해요..

    >

    > 안녕하세요. ^^;

    > 스트링그리드의 이벤트에 OnClick 을 이용하면 되죠.

    > 예로 스트링그리드의 이름이 SGrid1이라면

    > if SGrid1.Col=3 <-- 입력을 원치않는 col then SGrid1.Col:=4; <-- 원래위치하는 Col

    > 한번해보세요.

    > 즐코하세요. ^^

    >

  • Profile
    홍동훈 2001.03.24 01:07
    클릭도 되구요 키보드 방향키로 옮겨도 먹히거든요.

    그런데 키에 널값을 넣으라고 했는데요 어떤값인지? 제가 해봤는데 안되더라구요.

    답변주면 고맙겠네요. ^^;





    설창원 wrote:

    > 이 방법도 괜찮지만 그래도 이렇게 하면 보기에 안좋겠네요. 클릭을 했는데

    > 다른 셀로 옮겨가 버리니까요.

    > 그리고 클릭이 아니라 키보드 방향키로 이 컬럼에 들어가면 처리를

    > 어떻게 하죠? 역시 좋은 방법이 아닙니다.

    > 그럼 즐거운 하루 되시길....

    >

    > 홍동훈 wrote:

    > > chobl wrote:

    > > > 고수님들의 많은 조언 부탁해요..

    > >

    > > 안녕하세요. ^^;

    > > 스트링그리드의 이벤트에 OnClick 을 이용하면 되죠.

    > > 예로 스트링그리드의 이름이 SGrid1이라면

    > > if SGrid1.Col=3 <-- 입력을 원치않는 col then SGrid1.Col:=4; <-- 원래위치하는 Col

    > > 한번해보세요.

    > > 즐코하세요. ^^

    > >

  • Profile
    설창원 2001.03.24 01:33
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

    var blockcol: Integer;

    begin

    blockcol:= 2;

    if stringgrid1.col <> blockcol then begin

    StringGrid1.Cells[stringgrid1.col, stringgrid1.row]:= StringGrid1.Cells[stringgrid1.col, stringgrid1.row] + key;

    if key = #8 then

    StringGrid1.Cells[stringgrid1.col, stringgrid1.row]:= Copy(StringGrid1.Cells[stringgrid1.col, stringgrid1.row], 1, Length(StringGrid1.Cells[stringgrid1.col, stringgrid1.row]) - 2);

    end;

    end;

    좋은 답인지 모르겠네요.........

    홍동훈 wrote:

    > 클릭도 되구요 키보드 방향키로 옮겨도 먹히거든요.

    > 그런데 키에 널값을 넣으라고 했는데요 어떤값인지? 제가 해봤는데 안되더라구요.

    > 답변주면 고맙겠네요. ^^;

    >

    >

    > 설창원 wrote:

    > > 이 방법도 괜찮지만 그래도 이렇게 하면 보기에 안좋겠네요. 클릭을 했는데

    > > 다른 셀로 옮겨가 버리니까요.

    > > 그리고 클릭이 아니라 키보드 방향키로 이 컬럼에 들어가면 처리를

    > > 어떻게 하죠? 역시 좋은 방법이 아닙니다.

    > > 그럼 즐거운 하루 되시길....

    > >

    > > 홍동훈 wrote:

    > > > chobl wrote:

    > > > > 고수님들의 많은 조언 부탁해요..

    > > >

    > > > 안녕하세요. ^^;

    > > > 스트링그리드의 이벤트에 OnClick 을 이용하면 되죠.

    > > > 예로 스트링그리드의 이름이 SGrid1이라면

    > > > if SGrid1.Col=3 <-- 입력을 원치않는 col then SGrid1.Col:=4; <-- 원래위치하는 Col

    > > > 한번해보세요.

    > > > 즐코하세요. ^^

    > > >

  • Profile
    설창원 2001.03.23 22:57
    편한 방법중 그리드에 입력이 일어날때 키다운이나 키프레스에서

    에디트 되는 셀을 체크한후 에디트를 막고 싶은 셀이라면 키를 널로 만들면

    쉽게 해결되죠....

    그럼 안녕히...

    chobl wrote:

    > 고수님들의 많은 조언 부탁해요..