Q&A

  • 특정셀을 Edit 하고 시포요....
안녕하세요..

제가 하려는 수작은 다름이 아니오라....

StringGrid를 상속받아서 새로운 그리드 컴포넌트를 만들었습니다...

그리하여 결국엔 그걸 가지고 ActiveX 컨트롤을 만들려는 것이지요...

근데 그리드의 특정 셀을 Edit 가능하게 하고 시포요...

물론 그냥 어플리케이션에선 OnSelectCell 이벤트에다가 걸면 되겠지요...

헌데...

전 위에서도 말씀드렸다시피 고걸 가지고 컴포넌트 만들기 -> ActiveX 컨트롤 만들기를

하려고 합니다요...

OnSelectCell 이벤트를 오버라이드해서 하려구 했는데도 잘 안되네요...

부디 여러분들의 따뜻한 조언 부탁드립니다...

그럼 한단계 더 강한 내공을 얻을것 같군요...

감사합니다..



---- 답변을 기다리다 목이 메인 초보공주 --------

2  COMMENTS
  • Profile
    홍성락 2001.08.30 04:15
    초보공주... wrote:

    > 안녕하세요..

    > 제가 하려는 수작은 다름이 아니오라....

    > StringGrid를 상속받아서 새로운 그리드 컴포넌트를 만들었습니다...

    > 그리하여 결국엔 그걸 가지고 ActiveX 컨트롤을 만들려는 것이지요...

    > 근데 그리드의 특정 셀을 Edit 가능하게 하고 시포요...

    > 물론 그냥 어플리케이션에선 OnSelectCell 이벤트에다가 걸면 되겠지요...

    > 헌데...

    > 전 위에서도 말씀드렸다시피 고걸 가지고 컴포넌트 만들기 -> ActiveX 컨트롤 만들기를

    > 하려고 합니다요...

    > OnSelectCell 이벤트를 오버라이드해서 하려구 했는데도 잘 안되네요...

    > 부디 여러분들의 따뜻한 조언 부탁드립니다...

    > 그럼 한단계 더 강한 내공을 얻을것 같군요...

    > 감사합니다..

    /////////////////////////////////////////////////////////

    새로만든 컴포넌트 속성은 잘 모르겠으나 원상속자가 스트링그리드라면 아래처럼 한번해보세요.MouseToCell로 마우스 좌표로 셀을 선택해 편집케하였습니다.

    procedure TForm1.StringGrid1MouseDown(Sender: TObject;

    Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

    var

    S_row , S_col : integer;

    begin

    StringGrid1.MouseToCell(x,Y,S_col,S_row);

    if (S_row=2)and(S_col=2)then begin //특정셀[2,2]일때만 편집가능

    StringGrid1.Row := S_row;

    StringGrid1.Col := S_col;

    StringGrid1.EditorMode := True;

    end

    else StringGrid1.EditorMode := False;

    end;

    ------------------------------------------------------

    이때 스트링그리드의 Options에는 goEditing도 선택되있어야합니다 아니면

    StringGrid1.EditorMode변경전에 Options설정을 추가하시면되구요

    StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine

    ,goHorzLine,goRangeSelect,goEditing];





  • Profile
    초보공주... 2001.08.30 04:36
    답변 감사합니다...

    그런데 테스트 해봤는데 ... 안된던걸요.... 이상하다??

    글구요...

    MouseDown 이벤트에 코딩하셨는데... 그럴꺼면 SelectCell 이벤트에 코딩하는거랑

    별반 다를게 없는것 같아요...

    왜냐면 최종적으론 C++에서 ActiveX 등록해서 쓸 거거든요...

    암튼 답변 주셔서 감사하구요...

    다른 방법이 있음 부탁드립니다...