Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
boton de comando en la celda de un DBGrid

Es posible añadir un boton que aparezca siempre(parecido al botón de los tres puntos (Elypsis) , pero que se pueda poner texto), en una celda de un DBgrid, que al pulsarlo actualice la celda con un valor de tipo string o similar?

Pero que aparezca en todas las celdas de una columna y este siempre visible.

Última edición por alquimista fecha: 05-07-2008 a las 10:27:16.
Responder Con Cita
  #2  
Antiguo 05-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola. Debes usar el evento OnDrawColumnCell o el OnCellDraw

Código Delphi [-]
procedure T_lcli.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
        if (gdSelected in State) and (lowercase(Column.FieldName) = 'nombre')    then
        begin
               BitBtn1.Height := Rect.Bottom - Rect.Top;
               BitBtn1.Width  := BitBtn1.Height;

               BitBtn1.Left := Rect.Right - BitBtn1.Height;
               BitBtn1.Top  := Rect.Top;
        end;
end;

PD: este te lo pone en solo una celda. Necesitaras tantos bitbtns como celdas donde lo quieras, bien creados en tiempo de diseño, bien en tiempo de ejecucion

saludos

Última edición por coso fecha: 05-07-2008 a las 10:51:50.
Responder Con Cita
  #3  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Gracias...
Para poner texto al boton como se haría?

No existe algún componente free que haga
eso?

Al pulsar el botón ¿se utiliza el mismo evento que el botón de 3 puntos?

Gracias
Responder Con Cita
  #4  
Antiguo 05-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Bueno, es un BitBtn normal y corriente... le asignas el evento OnClick a lo que tu quieras y cambias la caption tambien conforme lo que quieras... saludos
Responder Con Cita
  #5  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Lo probare.Gracias por la pronta respuesta
Responder Con Cita
  #6  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Cool

No me funciona. No se que hago mal pero me reduce el DBgrid o algo parecido.

Por si no me he explicado, lo que pretendo es lo siguiente:
______________________________________
I___ID___I_____Columna_Tiempo_______I___
I____1___I___10:23___ I__Botón_Stop__ I___
I____2___I___12:21___ I__Botón_Stop__ I___

Que se muestre un botón en cada columna que haya (Botón Stop) y que al pulsar grabe en el campo , por ejemplo tiempo un valor de un reloj.

Gracias de antemano.

Última edición por alquimista fecha: 05-07-2008 a las 17:23:13.
Responder Con Cita
  #7  
Antiguo 05-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
????? te reduce el dbgrid???
Responder Con Cita
  #8  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Bueno, parece que hace eso me deja un cuadradito o algo parecido al pinchar en la celda de tiempo, da la sensación que reduce el dbgrid..
He hecho un copy,paste cambiando el nombre de la columna por 'tiempo'
en el primer evento, el otro me dice que Tfield no es valido.
Responder Con Cita
  #9  
Antiguo 05-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Creo que deberias entender el codigo. Lo que te he puesto es un ejemplo. Si miras la ayuda de delphi, el evento OnDrawColumnCell, te explicara para que sirve cada argumento, y podras asi adaptar el codigo a tus necesidades.
Responder Con Cita
  #10  
Antiguo 05-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
La verdad es que no entendía mucho el código.
Ok. Lo miraré con mas calma y veré si me vale.
Gracias... tengo un problema de poco tiempo ahora.
por eso me interesaba algo rápido.
Responder Con Cita
  #11  
Antiguo 07-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
No consigo hacerlo funcionar dentro de la columna.
No se si creo bien el componente.

BitBtn2:=TBitBtn.Create(Self);

No se si es correcto. También lo pongo enabled y visible a true
He mirado la ayuda pero no encuentro mucha cosas.
Rect me imagino que es el rectangulo de la columna??

Gracias...
Responder Con Cita
  #12  
Antiguo 07-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Crea el botón en tiempo de diseño, colócalo donde quieras dentro del formulario. Luego en el evento onDrawColumnCell lo cambias de tamaño y posición a tu gusto. En el evento OnClick de ese mismo botón colocas el código que quieras.

Saludos, Tony
Responder Con Cita
  #13  
Antiguo 07-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Ya empiezo a entender algo.

El ejemplo es para colocar un botón encima de la columna del DBGrid.
Yo pensaba que el botón pertenecía a la columna.

Lo que queria es un boton en cada celda.
Si hay n celdas con datos metidos un botón (visible) en cada una de las n celdas en las que pueda pulsar y al pulsar rellenar esa celda con un dato sacado de otro sitio. Por ejemplo una cadena de texto.

Aparte intentaba crear en runtime (seguramente bastante mal) un bitbtn y no me funcionaba.
El problema es que tengo que pinchar en la columna y aparece el botón.
pero como se la referencia de columna relativa y como interacciono para cambiar el dato de esa columna?

He estado buscando por ahí y no encuentro casi nada de botones en columna de DBGrid.

A ver si podeis ayudarme un poco mas, por favor
El problema es que no soy nada experto en Delphi.
Y por este foro parece que hay muchos super expertos.



Muchas gracias.

Última edición por alquimista fecha: 07-07-2008 a las 11:55:22.
Responder Con Cita
  #14  
Antiguo 07-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Yo tampoco soy muy experto ... pero te digo que en vez de utilizar un boton por celda yo utilizaría uno fuera del DBGrid. Y los cambios que quieras hacer sobre el registro seleccionado lo hagas en el evento OnClick de ese boton.

Para saber el registro que esta seleccionado simplemente tienes que ver donde esta el cursor del dataset que estes mostrando en el dbgrid, de manera que si por ejemplo quieres sacar un dato de un campo de ese dataset o modificarlo sería .....

Código:
if table1.state in [dsInsert,dsEdit] then
begin
 Table1.fieldbyname('Apellidos').asstring:='HERNANDEZ FERNANDEZ';
 Table1.post;
end;
Saludos, Tony
Responder Con Cita
  #15  
Antiguo 07-07-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
no depende de mi.

A efectos de insertar en la celda no requiere que primero se seleccione la celda y luego se pulse el botón.
Con un botón por celda es mucho más rápida la inserción de ese campo.

Gracias por la ayuda.
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
valor de una celda de un dbgrid alopete Varios 4 17-10-2007 17:32:46
Insertar ub boton o panel en cada celda de un Stringgrid ingel Varios 1 20-07-2007 23:35:18
Selecionar Celda DBGRID hcalero Varios 2 12-04-2007 17:27:54
Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 20:53:28
Seleccionar una celda de un DBGRID Sandochan Conexión con bases de datos 2 28-05-2003 16:09:37


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


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