請問,如何進入dbgrid某一列后,游標直接顯示閃動狀態,其它效果一概不要,即選哪個單元格,滑鼠在哪,游標直接在那閃動就行,請問該如何設定。
uj5u.com熱心網友回復:
設定dgAlwaysShowEditor為True,滑鼠點擊進去即為編輯狀態:DBGrid1.Options := DBGrid1.Options + [dgAlwaysShowEditor];
uj5u.com熱心網友回復:
feiba7288的方法還是不行,點進單元格后,單元格的文本還是處于被選擇狀態,不是滑鼠點哪,就直接停哪的那種uj5u.com熱心網友回復:
dbgrid就只能是這樣的,要想更細的設定,還是用第三方的grid吧,例如 cxDbGrid。或者使用俺這種方式模擬
首先還是要設定
dbgrid1.Options := dbgrid1.Options + [dgAlwaysShowEditor];
然后在dbgrid1的OnCellClick事件中用按鍵模擬:
procedure TForm1.dbgrid1CellClick(Column: TColumn);
begin
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), 0, 0);
keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), KEYEVENTF_KEYUP, 0);
end;
uj5u.com熱心網友回復:
下面的代碼可以,但一定要放在OnMouseUp事件里面才會回應!!!
procedure TfmMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
hEdit: THandle;
begin
hEdit := FindWindowEx(DBGrid1.Handle, 0, 'TDBGridInplaceEdit', nil);
if hEdit <> 0 then
begin
//SendMessage(hEdit, EM_SETSEL, 0, 0);//將游標移到最前
SendMessage(hEdit, EM_SETSEL, $7FFFFFFF, Longint($FFFFFFFF));//將游標移到末尾
end;
end;
uj5u.com熱心網友回復:
這個依然要這么設定!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132829.html
標籤:VCL組件開發及應用
