procedure TDBGridEx.WMLButtonDown( var message:TWMLButtonDown); var MMaxRecNo,MMinRecNo,i:Integer; begin if CheckDataSource then FLastRecNo1:=DataSource.DataSet.RecNo; inherited; if (not (dgMultiSelect in Options)) or not CheckDataSource then Exit; FLastRecNo2:=DataSource.DataSet.RecNo; MMaxRecNo:=Max(FLastRecNo1,FLastRecNo2); MMinRecNo:=Min(FLastRecNo1,FLastRecNo2); if not IsKeyPress(VK_SHIFT) then Exit; for i:=MMinRecNo to MMaxRecNo do begin with DataSource.DataSet do begin DisableControls; RecNo:=i; SelectedRows.CurrentRowSelected:=True; EnableControls; end; end; DataSource.DataSet.RecNo:=FLastRecNo2; DataSource.DataSet.EnableControls; end;
好象DBGIRD自己会判断的
var
MMaxRecNo,MMinRecNo,i:Integer;
begin
if CheckDataSource then
FLastRecNo1:=DataSource.DataSet.RecNo;
inherited;
if (not (dgMultiSelect in Options)) or not CheckDataSource then
Exit;
FLastRecNo2:=DataSource.DataSet.RecNo;
MMaxRecNo:=Max(FLastRecNo1,FLastRecNo2);
MMinRecNo:=Min(FLastRecNo1,FLastRecNo2);
if not IsKeyPress(VK_SHIFT) then Exit;
for i:=MMinRecNo to MMaxRecNo do
begin
with DataSource.DataSet do
begin
DisableControls;
RecNo:=i;
SelectedRows.CurrentRowSelected:=True;
EnableControls;
end;
end;
DataSource.DataSet.RecNo:=FLastRecNo2;
DataSource.DataSet.EnableControls;
end;