DBGrid1.Options:= DBGrid1.Options+[dgMultiSelect]; //先设置DBGrid1的多选属性为True if DBGrid1.SelectedRows.Count>0 then begin with DBGrid1.DataSource.DataSet do for i:=0 to DBGrid1.SelectedRows.Count-1 do begin GotoBookmark(Pointer(DBGrid1.Selected
在实际项目中,偶然遇到需要按下SHIFT键,在DBGrid中进行多选的情况,测试了几种方法,最终确定了一个比较好的解决方法,总结如下: procedure TTestFrame.TestDBGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //实现 Shift+鼠标左键单击 多选 if Button = mbLeft then begin if not FblS
////删除多选记录 procedure THistoryForm.DeleteButtonClick(Sender: TObject);var tempBookMark:TbookMark; i:integer;begin if dbgrid1.SelectedRows.Count <= 0 Then begin MessageBox(Handle,'请选择您要删除的记录','提示',MB_OK); Exit; end; If MessageBox(Handle,'删除后
解决方案 » 有了dbgrid1.options.dgmultiselect:=true;必须按下Ctrl键,才能实现多选, 修改源代码,把以下内容if Select and (ssShift in Shift) then改为if Select then 记住是在DBGRIDS单元里: if ssCtrl in Shift then //这句改为if true then还有把以下这段去掉: if ssCtrl in Shift then Curr
转自:https://zhidao.baidu.com/question/1694035814426308148.html 一般是你鼠标点到哪一行,其DataSet的指针就指到了什么位置你可以直接通过DataSet.Fields[i].Value来得到结果 如果是选择多行的话,可以使用循环来做,加个判断DataSet.First;while not DataSet.Eof dobegin if DBGrid1.SelectedRows.CurrentRowSelected then begin
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin then begin DBGrid1.DataSource.DataSet.DisableControls; DBGrid1.SelectedRows.CurrentRowSelected := True; DBGrid1.DataSource.DataSet.Next; DBGrid1.DataSource.DataSet.EnableControls
在dbgrid中如何多行选中记录(ctl与shift均可用),设置dbgrid的dgmultiselect为true,只有ctl好用而shift不好用,如何使shift也好用 Dbgrid源代码:procedure TCustomDBGrid.KeyDown(var Key: Word; Shift: TShiftState); var KeyDownEvent: TKeyEvent; procedure ClearSelection; begin if (dgMultiSele
1.根据条件更改某一单元格的颜色 procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DM.FirstListStatus.AsString='生产' then begin First_DG.Canvas.Font.Color:=clGreen end els