Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   MultiSelect con maýusculas en DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=65146)

ElDioni 24-11-2009 13:14:46

MultiSelect con maýusculas en DBGrid
 
Buscando por el foro una solución que me gustase para poder seleccionar varios registros en el dbgrid con la tecla shift, todo lo que he encontrado se refería a hacer un stringgrid para tener una copia paralela y poder ir pintando, o cosas por el estilo, asi que he hecho el siguiente código que público por si a alguien le sirve. no está pulido ni se si tendrá otras consecuencias pero de momento me funciona y me hace el apaño.
bueno primero tres variables globales de tipo integer que llamo pulsada, PrimerReg y UltiReg. entones en el metodo onkeydown del formulario hago lo siguiente:
Código Delphi [-]
procedure TFrmListadoArt.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=16 then pulsada:=16;
end;
En el de keyUp lo que sigue:
Código Delphi [-]
procedure TFrmListadoArt.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
pulsada:=0;
end;
en el FormCreate:
Código Delphi [-]
procedure TFrmListadoArt.FormCreate(Sender: TObject);
begin
//se abre el query para conectar con la bbdd
queryproduc.Active:=true;
PrimerReg:=QueryProduc.RecNo;
end;
y entonces en el onmouseup (ya que el onmousedown del dbgrid no hace nada cuando está puesto en multiselect) del dbgrid lo que sigue:
Código Delphi [-]
procedure TFrmListadoArt.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
w:integer;
begin
if pulsada=16 then
  begin
    UltiReg:=queryproduc.RecNo;
    DbGrid1.SelectedRows.Clear;
    for w:=primerReg to ultireg do
      begin
        DbGrid1.DataSource.DataSet.RecNo:=w;
        DbGrid1.SelectedRows.CurrentRowSelected:=true;
      end;
  end
else
  begin
    primerreg:=QueryProduc.RecNo;
  end;
end;
Seguramente se podría hacer mejor o esta forma de conseguirlo no gusta porque es una chapuza, pero ahí la dejo por si a alguien le sirve.
Un saludo.


La franja horaria es GMT +2. Ahora son las 06:22:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi