Hola nuevamente amigos,
Quizas es algo simple pero lo que he intentando no me ha funcionado.
Les explico lo que estoy realizando antes de ir al inconveniente
En esta ocación estoy tratando de realizar sumas parciales en una factura, para ello activo la propiedad multiselect del dbgrid y realizo el total parcial de la columna deseada como sigue.
Código Delphi
[-]function GetSumSeleted(GD: TDBGrid; Campo: string): Currency;
var
I: Integer;
Sum: Currency;
begin
Sum := 0;
if (GD.SelectedRows.Count>0) then
begin
with GD.DataSource.DataSet do
begin
for I := 0 to GD.SelectedRows.Count-1 do
begin
GotoBookmark(GD.SelectedRows.Items[i]);
Sum := Sum + GD.DataSource.DataSet.FieldByName(Campo).AsFloat;
end;
end;
end
else
ShowMessage('No hay registros seleccionados en el Grid');
Result := Sum;
end;
Hasta ahi todo bien, ahora lo que me falta para que sea manejable:
Con Ctrl + Clic se seleccionan las filas que el usuario desea, lo que me interesa es que si el registro en el dbgrid esta seleccionado y vuelvo de nuevo a hacer Ctrl + Clic esta se
deSeleccione y así solo sume las que queden seleccionadas.
He intentado hacer lo siguiente en el evento
onCellClick del dbGrid pero no funciona
Código Delphi
[-] if (HiWord(GetKeyState(VK_CONTROL)) <> 0) and
DBGrid.SelectedRows.CurrentRowSelected then
begin
DBGrid.SelectedRows.CurrentRowSelected:=False
end;
Saludos,