Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2009
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contenido de un DBGrid en MultiSelect mrnovice OOP 7 20-01-2009 19:34:30
MultiSelect en DBGrid con Shift gluglu OOP 0 01-06-2007 03:22:04
Dbgrid y Multiselect jorge_mosquera OOP 3 26-04-2007 04:22:41
Multiselect con celdas en DBGrid??? Jonnathan OOP 0 26-09-2006 21:38:02
Multiselect en DbGrid sin Ctrl taita Varios 6 03-08-2004 12:16:11


La franja horaria es GMT +2. Ahora son las 10:54:44.


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
Copyright 1996-2007 Club Delphi