Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2010
Avatar de sisne
sisne sisne is offline
Miembro
 
Registrado: mar 2010
Posts: 71
Poder: 15
sisne Va por buen camino
Busqueda y visualizacion en DBGrid seleccionado solo Fila

Hola!
Tengo un formulario en el cual esta la Ttabla de tados de universitario con los campos IdE, NumeroRegistro, carnet Identidad, Nombres, apellidos, fechas, edades, etc...Tinscripcion.

Esto lo puse en el Form1(=Facademico) en un DBgrid1, y por medio de un boton llamo a otro form2(Finscripcion) donde ingreso los datos del universitario y realizo las demas opciones sin problem.
Ahora en lo que tengo problemas es...
Necesito realizar una busqueda , este boton lo tengo en el Form1(Facademico) la busqueda quiero que lo realice por cualquier medio de los campos de Universitario, si lo encuentro quiero que en el DBgrid1 me lo "seleccione". Cabe mensionar que el DBgrid , solo es visualizacion, ya que las modificaciones lo puedo hacer en el Form2(Finscripcion.). Solo quiero que me lo seleccione toda la fila del DBgridsi es que encuentro el dato buscado.

La busqueda lo estuve haciendo por medio de otro Form3(Fbusqueda). Ya que con esta buscqueda puedo saber si fue inscrito o aun no. Y si esta inscrito pues quiero saber sus otras dependencias.
Me explico, Tuniversitario lleva varias materias de varios semestres o años. Ejemplo. Juan Perez, llevaria Programacion I del 1º semestre, Fisica II del 2º semestre, ingles del 1º semestre, etc...de una carrera en especifico. Y asi sucesivamente...
Es decir en Facademico, tengo DbGrid1(visualizo los inscritos universitario), en el DBgrid1, que tb se encuentra en el mismo Facademico, se visualiza las materias que llevara, ingreso las materias a través de otro Form4...

Bueno una vez encontrado al Universitario que fue inscrito, pues tambien debo buscar por decir, ejemplo: Por medio de su CodigoMateria o NombreMateria, etc y si lo encuentra pues quiero que tb en el DBGrid2 [b]me lo seleccione solo la fila y de esta manera poder realizar las modificaciones o simplemente imprimir sus campos de esa materia con el nombre del Universitario etc....
Estoy usando SQL server 2000 y Delphi.
Si usaria StringGrid su codigo lo hice asi...Pero yo quiero que en el DBgrid2 solo me seleccione...
Ejemplo, si buscaria por medio de su Carnet Identidad:

procedure TFacademico.BuscarClick(Sender: TObject);
begin
if not (DM.Tinscripcion.Locate('CiE',Edit1.Text,[loPartialKey,loCaseInsensitive])) and not(Edit1.Text = ' ') then
if messageDlg('No se encontro el registro..Buscar de nuevo?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then Edit1.SetFocus
else close;
if DM.Tinscripcion.Locate('CiE',Edit1.Text,[loPartialKey,loCaseInsensitive]) then
begin
sg.Cells[1,1]:=DM.Tinscripcion['NumReg'];
sg.Cells[1,2]:=DM.Tinscripcion['CiE'];
sg.Cells[1,3]:=DM.Tinscripcion['NomE';
sg.Cells[1,4]:=DM.Tinscripcion['FinscripcionE'];
sg.Cells[1,5]:=DM.Tinscripcion['CarreraE'];
sg.Cells[1,6]:=DM.Tinscripcion['TiempoE'];
sg.Cells[1,7]:=DM.Tinscripcion['ModalidadE'];
sg.Cells[1,8]:=DM.Tinscripcion['estadoE'];
sg.Cells[1,9]:=DM.Tinscripcion['DeptoE'];
sg.Cells[1,10]:=DM.Tinscripcion['LugarE'];
sg.Cells[1,11]:=DM.Tinscripcion['CalleE'];
end
else
begin
sg.Cells[1,1]:= '';
sg.Cells[1,2]:= '';
sg.Cells[1,3]:= '';
sg.Cells[1,4]:= '';
sg.Cells[1,5]:= '';
sg.Cells[1,6]:= '';
sg.Cells[1,7]:= '';
sg.Cells[1,8]:= '';
sg.Cells[1,9]:= '';
sg.Cells[1,10]:= '';
sg.Cells[1,11]:= '';
end;
end;

Aqui me visualiza en una columna sus datos, pero yo quiero que me seleccione/visualice en el DBGrid2 en la fila, cabe mensionar que tengo vaaarios universitarios registrados.
Disculpen que sea tan extensa.Gracias!

Última edición por sisne fecha: 21-03-2010 a las 20:37:12. Razón: No salude y me disculpo. Lo siento
Responder Con Cita
  #2  
Antiguo 21-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Hola.
Te recomiendo que leas cómo usar las etiquetas vB para que nos sea más fácil entenderte. No es difícil.
Otro tip muy bueno (para el foro y la vida real) es decir Hola cuando quieras hablar con alguien.
Saludos!
Responder Con Cita
  #3  
Antiguo 21-03-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola sisne.

Si tenes conectada la busqueda al mismo DataSource que el DBGrid, en este tendría que quedar seleccionada la fila elegida en la búsqueda.

Ahora si como decis lo único que queres es que se seleccione la fila entera y no sólo una columna en el DBGrid, tenes que poner:
DBGrid1.Options.dgRowSelect:= True; (lo podes hacer desde el Object inspector)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-03-2010 a las 01:36:33.
Responder Con Cita
  #4  
Antiguo 22-03-2010
Avatar de sisne
sisne sisne is offline
Miembro
 
Registrado: mar 2010
Posts: 71
Poder: 15
sisne Va por buen camino
Hola!
Tengo una Form1 principal y otro Form2 de busqueda.
En el principal esta un DBgrid1 donde estan se visualizan todos los datos y en sus opciones tb lo active para que toda la fila se seleccione.
Entonces voy al Form2 donde realizo una busqueda, digamos por medio de CarnetIdentidad y quiero que una vez encontrado el dato quiero que en el Form1 en el DBgrid1 me visualice en toda la fila el dato encontrado y si se pudiese colocar de otro color, ya que por defecto es de color azul seleccionado.
Responder Con Cita
  #5  
Antiguo 23-03-2010
Avatar de sisne
sisne sisne is offline
Miembro
 
Registrado: mar 2010
Posts: 71
Poder: 15
sisne Va por buen camino
Holas!
Creo que no fui muy clara....
Comentarles que ya encontré la solución, coloque el sigte codigo después de realizar la búsqueda respectiva, al momento de volver al FormPrincipal y me selecciona toda la fila del DBgrid:
Código:
  Facademico.DBGrid.Fields[1].focuscontrol;
Solo quiero saber si puede colorearse solo una fila de un DBGrid?????

Graaaacias por su cooperación!

Última edición por sisne fecha: 23-03-2010 a las 22:56:08. Razón: Dudas sobre colorear una fila..
Responder Con Cita
  #6  
Antiguo 25-03-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Tal como te dije anteriormente, para que se 'pinte' sólo una fila, tenés que poner a True la propiedad dgRowSelect, lo que hace que la fila seleccionada esté coloreada.

Ahora para cambiar el color de la selección colocá este código en el evento DrawColumnCell del DBGrid:
Código:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
                         DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if gdSelected in State then
  with DBGrid1 do
  begin
     Canvas.brush.Color:= clRed; // Fondo rojo ...
     Canvas.Font.Color:= clWhite; // Texto blanco...
     DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 26-03-2010
Avatar de sisne
sisne sisne is offline
Miembro
 
Registrado: mar 2010
Posts: 71
Poder: 15
sisne Va por buen camino
Hola!
ecfisa te cuento que ya tenia activado True la propiedad dgRowSelect, y pues como decia antes, me seleccionaba de color azul por defecto.
Y con el código que me diste, si me pinto de otro color, me selecciono de color rojo cuando realizaba la busqueda (perfecto!).

El problema es que me selecciona ahora dos filas, una por defecto de color azul y la otra de color rojo (con esta ultima estoy de acuerdo)
Quisiera saber como puedo hacer desaparecer la seleccionada por defecto de color azul(que antes de realizar la busqueda estuvo seleccionada), y solo quisisera que me aparezca una seleccionada, es decir solo la de color rojo, que es cuando me lanza como resultado a la busqueda y se me pinta de color rojoa la encontrada.
Espero haber sido clara...
Gracias!
Responder Con Cita
  #8  
Antiguo 26-03-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola sisne.

Lo único que se me ocurre es que tengas activada la opcion dgMultiSelect.

probá de poner este código antes de la entrada al DBGrid:
Código:
  DBGrid1.Options:= DBGrid1.Options - [dgMultiSelect];
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 26-03-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Pensando un poco más... esto sólo se podría dar si:

1) Tenés la opcion dgMultiSelect activada (y la estás usando... ).
2) El evento OnDrawColumnCell lo asignas mediante código, por ej:
DBGrid1.OnDrawColumnCell := DBGrid1DrawColumnCell;
3) Esta última asignación la haces después de llamar a otro Form.

De este modo cuando cerras el segundo Form, en el Form inicial te queda una fila en azul y otra en rojo.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 26-03-2010
Avatar de sisne
sisne sisne is offline
Miembro
 
Registrado: mar 2010
Posts: 71
Poder: 15
sisne Va por buen camino
Hola!

Esta bien, lo voy a probar.
Gracias!

Última edición por sisne fecha: 26-03-2010 a las 22:29:31. Razón: Funciona lo que me dijiste ecfisa GRAAAACIAS
Responder Con Cita
Respuesta



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
Renglon seleccionado en DBGRID advancexz Gráficos 1 28-06-2008 00:53:45
¿Como Eliminar de la Bd el item seleccionado en un DbGrid? day_eli Conexión con bases de datos 1 09-02-2007 16:36:33
como imprimir solo una fila de una tabla?? ing.cagn Impresión 4 17-01-2006 00:21:21
Busqueda segun radiobutton seleccionado JoanKa Varios 11 25-01-2005 18:31:48


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


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