또다시 왕초보입니다.
음..디비그리드에서...콤보박스를 이요할려구해요..
그런데 아래와 같은 방버을 사용하라고 하는데..
봐두 모르겠네요..^^이걸 뭐 어쩌란거죠??
디비그리드 에다가 디비룩업콤보박스를 올려놓고 하는거죠>
그럼 어느위치에다가 놓죠?
제가 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;
차근찬근..설명해주세요...
감사합니다..
지도 부탁드립니다..
> 또다시 왕초보입니다.
> 음..디비그리드에서...콤보박스를 이요할려구해요..
> 그런데 아래와 같은 방버을 사용하라고 하는데..
> 봐두 모르겠네요..^^이걸 뭐 어쩌란거죠??
> 디비그리드 에다가 디비룩업콤보박스를 올려놓고 하는거죠>
> 그럼 어느위치에다가 놓죠?
> 제가 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;
좋은하루 되세요....