Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 05-08-2004
Avatar de taita
taita taita is offline
Miembro
 
Registrado: sep 2003
Ubicación: Murcia, San Pedro del Pinatar
Posts: 115
Poder: 21
taita Va por buen camino
Multiselect en DbGrid sin Ctrl ni Alt (sin manos)

Ala!!! estoy aqui de vuelta a ver si alguien sabe cómo hacer esto y me orienta un poquillo:
Anteriormente ya he posteado la misma pregunta y he conseguido resolver algunas cosillas, pero lo principal sigue en el aire. Ahí va la cuestión:
Tengo un DBGrid en el que muestro una consulta de artículos y deseo que cuando se haga 'click' sobre uno de ellos éste quede seleccionado, sin necesidad de mantener pulsada ninguna tecla (en este caso el Ctrl). Además aquellos registros seleccionados anteriormente se deben mantener en la selección.
Ya he probado poniendo el multiselect, con otro tipo de grids (rxGrid), tirándole besitos, diciéndole cosas bonitas como "tú puedes!... sé que puedes!..." y cosas por el estilo, pero nada de nada, se queda ahi quietecita, con sus cuadriculas casi perfectas, pasando de mi y haciendo que a la fuerza no quede más remedio que utilizar la dichosa tecla 'Ctrl'.
Se me había ocurrido también que podría realizar la selección en vez de haciendo 'click' realizando un recuadro.
Bueno, eso es todo.
A ver si algún alma caritativa sabe como orientarme.
Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 05-08-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
bueno, he estado mirando el jodio bookmarklist del dbgrid y esta mas blindao (protected y private) que el banco de españa asi que...

a grandes males grandes remedios, nos vamos a crear nuestro propio bookmarklist, que es mas facil y son 12 lineas de codigo:

sacamos un grid, le ponemos en las options dgRowSelect y NO le ponemos dgMultiselect ^_^

la idea es meter los bookmarks en un stringList y repintar el grid nosotros mismo:

Código Delphi [-]
private
    BookSel:TStringList;
...
 
procedure TForm1.FormCreate(Sender: TObject);
begin
    BookSel:=TStringList.Create;
end;
 
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var l:integer;
begin
    if BookSel.IndexOf(ClientDataSet1.Bookmark)<0 then
          BookSel.Add(ClientDataSet1.Bookmark)
    else BookSel.Delete(BookSel.IndexOf(ClientDataSet1.Bookmark));
    DBGrid1.Invalidate;
end;
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
     if BookSel.IndexOf(ClientDataSet1.Bookmark)>=0 then
     begin
          DBGrid1.Canvas.Brush.Color:=clnavy;
          DBGrid1.Canvas.font.Color:=clwhite;
     end
     else
     begin
          DBGrid1.Canvas.Brush.Color:=clwhite;
          DBGrid1.Canvas.Font.Color:=clblack;
     end;
    DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

Cuando necesites recorrer los registros selecionados solo tendras que recorrer el BookSel. Tambien se podria hacer guardando solo los códigos primarios de la tabla... pero entonces valdria solo para esa tabla/consulata en concreto.

Espero que te ayude .. por cierto ¿no seras lahoz verdad?
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #3  
Antiguo 13-08-2004
Avatar de taita
taita taita is offline
Miembro
 
Registrado: sep 2003
Ubicación: Murcia, San Pedro del Pinatar
Posts: 115
Poder: 21
taita Va por buen camino
Ala!!!!!!!
que bestia!!!. bueno, pero funciona. Gracias RUINA.
Veo que has captado la idea. Lo he modificado para recorrer los índices de la tabla y funciona perfectamente.
Muchas gracias!
Responder Con Cita
  #4  
Antiguo 08-07-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
hola que tal

tengo ese mismo problema

solo que mi intencion es que se auto coloree solo

por ejemplo

tengo mi reporte de articulos

numero , nombre, existencia

no pude adapart ese codigo que cuando existencia este en '0'(cero) me coloree esa fila =S


de hante manos gracias

saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #5  
Antiguo 04-10-2007
rociosescalante rociosescalante is offline
Registrado
 
Registrado: jun 2007
Posts: 1
Poder: 0
rociosescalante Va por buen camino
He probado el código que posteo Ruina y funciona correctamente si al programa lo ejecuto en un windows XP o en en windows 2003; pero cuando ejecuto en un windows 2000 Profesional, no funciona, cuando hago un click sobre algún registro me pinta todos los registros y si hago otro click sobre algún otro registro despinta todos los registros.
Estuve mirando la configuración de las computadoras y del mouse, pero no logro encontrar qué pude ser.
¿Alguien sabe qué puede ser o cómo solucionarlo? Desde ya muchas gracias
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


La franja horaria es GMT +2. Ahora son las 21:26:16.


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