수고하십니다. *^^*
dbgrid에서 특정키가 눌리면 현재 줄 전체를 바탕색 or 글자색을 바꾸고 싶습니다.
DrawDataCell이벤트를 이용해서 바꾸면 될것 같은데...
KeyDown이벤트에서는 DrawDataCell에서 필요로 하는 파라미터를 얻을 수 없잖아여.
(ex. Rect, Field, State)
KeyDown이벤트에서 DrawDataCell이벤트를 어떻게 호출하져?
파라미터 주는것을 모르겠음
KeyDown이벤트에서...
if 특정키 then
begin
DrawDataCell(nil, nil, nil, nil);
end;
했더니 안되더라구여... 쩝
이 방법이 아니면, KeyDown이벤트에서 직접 색을 바꿀 수 있나여?
있다면 방법좀....
> 수고하십니다. *^^*
>
> dbgrid에서 특정키가 눌리면 현재 줄 전체를 바탕색 or 글자색을 바꾸고 싶습니다.
>
> DrawDataCell이벤트를 이용해서 바꾸면 될것 같은데...
>
> KeyDown이벤트에서는 DrawDataCell에서 필요로 하는 파라미터를 얻을 수 없잖아여.
> (ex. Rect, Field, State)
>
> KeyDown이벤트에서 DrawDataCell이벤트를 어떻게 호출하져?
> 파라미터 주는것을 모르겠음
>
> KeyDown이벤트에서...
> if 특정키 then
> begin
> DrawDataCell(nil, nil, nil, nil);
> end;
> 했더니 안되더라구여... 쩝
>
> 이 방법이 아니면, KeyDown이벤트에서 직접 색을 바꿀 수 있나여?
>
> 있다면 방법좀.
/////////////////////////////////////////////////////////////////////////
아래와 같은방법도 있습니다 조금 수정해가며 사용해보세요
예로 'Alt+A'를 누를때입니다.
---------------------------------------
//DrawDataCell이벤트
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if SelectedRows.CurrentRowSelected then begin //현선택된줄만 색칠하기
Canvas.Brush.Color := clRed;
Canvas.Font.Color := clWhite;
Canvas.FillRect(Rect);
canvas.TextRect(Rect, Rect.Left, Rect.Top, Field.AsString);
end;
end;
end;
---------------------------------------------------------------------
//KeyDown이벤트
//멀티선택안되며
//Options에는 현재선택한것중 dgRowSelect와 dgEditing의 교체가 가장중요함
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
DBGrid1.SelectedRows.Clear; //선택된 줄 초기화(따라서 멀티선택은 안됨)
if (Key = 65) and (Shift = [ssAlt]) then begin
DBGrid1.Options := [dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit];
DBGrid1.SelectedRows.CurrentRowSelected := True;
end
else begin
DBGrid1.Options := [dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
end;
end;
-------------------------------------------------------
//CellClick이벤트, 이는 마우스로 다른곳 클릭시 원상복귀임
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
DBGrid1.SelectedRows.Clear;
DBGrid1.Options := [dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
end;