Q&A

  • 디비그리드에 콤보박스 올리는방법(하나으 셀)
또다시 왕초보입니다.

음..디비그리드에서...콤보박스를 이요할려구해요..

그런데 아래와 같은 방버을 사용하라고 하는데..

봐두 모르겠네요..^^이걸 뭐 어쩌란거죠??

디비그리드 에다가 디비룩업콤보박스를 올려놓고 하는거죠>

그럼 어느위치에다가 놓죠?

제가 4번째..부분의 셀에 콤보박스를 놓고 싶거든요..





procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

if ( gdFocused in State ) then begin

if ( Column.FieldName = DBLookupComboBox1.DataField

) then begin

with DBLookupComboBox1 do begin

Left := Rect.Left + DBGrid1.Left;

Top := Rect.Top + DBGrid1.Top;

Width := Rect.Right - Rect.Left;

Visible := True;

end;

end;

end;

end;





차근찬근..설명해주세요...

감사합니다..

지도 부탁드립니다..



1  COMMENTS
  • Profile
    노력하는이 1999.08.14 01:11
    왕초보 께서 말씀하시기를...

    > 또다시 왕초보입니다.

    > 음..디비그리드에서...콤보박스를 이요할려구해요..

    > 그런데 아래와 같은 방버을 사용하라고 하는데..

    > 봐두 모르겠네요..^^이걸 뭐 어쩌란거죠??

    > 디비그리드 에다가 디비룩업콤보박스를 올려놓고 하는거죠>

    > 그럼 어느위치에다가 놓죠?

    > 제가 4번째..부분의 셀에 콤보박스를 놓고 싶거든요..

    >



    안녕하세여~ ^_^



    변변찮은 실력이지만 제가한번 분석해볼께요...



    이 이벤트는 DBGrid를 그릴때 셀마다 실행됩니다.



    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumn;

    State: TGridDrawState);

    begin

    if ( gdFocused in State ) then begin

    포커스를 가진 셀만 콤보박스를 위치시킵니다.



    if (Column.FieldName = DBLookupComboBox1.DataField) then begin

    현재의셀과 콤보박스에 지정한 필드가 일치한지 검사합니다.

    즉, 4번째에 위치 시키려면 콤보박스의 DataField를 그리드의

    4번째필드와 같게 설정하면 됩니다.



    with DBLookupComboBox1 do begin

    Left := Rect.Left + DBGrid1.Left; //위치를 바꿔주는 부분들

    Top := Rect.Top + DBGrid1.Top;

    Width := Rect.Right - Rect.Left;

    Visible := True; // 콤보를 보여줍니다.

    콤보박스는 처음에 안보이도록 Visible을 false로 설정하세요.

    그리고 위치는 아무곳이나 상관없습니다.

    end;

    end;

    end;

    end;



    좋은하루 되세요....