FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
DBGrid+checkbox
hola,
a ver os cuento. Resulta que tengo implementado un DBgrid con un checkbox que funciona correctamente, el checkbox asociado a un campo logico. Va bien, es decir, cuando marca la 'celda' del checkbox me modifica en la tabla el estado logico del campo. Mi problema es que solo quiero que se modifique cuando pincho en el checkbox no en la celda completa. ¿Me explico? Muchisimas gracias. |
#3
|
||||
|
||||
Dependerá de cómo lo hayas implementado.
Seguro que en algun sitio has programado el cambio del campo segun el checkbox, ¿Puedes poner ese código (como mínimo)? Si no comprenderás que es casi imposible responderte.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
Este es el metodo que lo dibuja el check
procedure TWVentana.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Check: Integer; R: TRect; XVentana:TRecVentana; begin if Column.FieldName = 'L_SEL_REM' then //indico la columna donde lo quiero poner begin DBGrid1.Canvas.FillRect(Rect);//Rellenas en el drid un rectangulo Check := 0; if FTBVentana.FindField('L_SEL_REM').AsBoolean = true then Check := DFCS_CHECKED; R:=Rect; // InflateRect(R,-2,-2); //Disminuye el tamaño del CheckBox DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check); end; end; y este es el metodo de cambio de estado del check procedure TWventana.DBGrid1CellClick(Column: TColumn); var Xventana:TRecventana; begin FTBVentana.DisableControls; try if Column.FieldName = 'L_SEL_REM' then begin FTBVentana.edit; try if FTBVentana.FieldByName('L_SEL_REM').AsBoolean = true then FTBVentana.FieldByName('L_SEL_REM').AsBoolean := false else FTBVentana.FieldByName('L_SEL_REM').AsBoolean := true finally FTBVentana.Commit; end; Dbgrid1.Refresh; // quizás más bien un Repaint.... pero en fin. end; finally FTBVentana.EnableControls; end; end; entonces si yo pincho con el raton en cualquier parte de la celda donde esta el checkbox me cambia el estado, y solo quiero que me cambie el estado cuando pincho justamente en el checkbox. Gracias |
#5
|
||||
|
||||
Antes de nada te recomiendo que utilices TAG's en los mensajes. Puedes empezar por editar el de arriba y añadirlas.
En cuando al problema, está claro que para detectar si haces un click dentro del recuadro, debes tener las coordenadas X e Y; Para eso tal vez deberás utilizar algun otro evento combinado con el que ya utilizas. Prueba con el OnMouseDown; Y a ver si a a partir de ese eres capaz de obtener las coordenadas relativas a la celda. Revisa, haz alguna pruba y ya dirás...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 25-07-2006 a las 12:05:33. |
#6
|
|||
|
|||
hola ya consegui hayar las coordenadas y todo va casi perfecto.
Resulta que cuando tengo la celda con el check marcado y ademas la celda seleccionada y quiero desmarcar ese check no me deja, se deja de visualizar el check y sale a la izquierda de la celda la palabra true o false segun este marcado o desmarcado. La unica manera de marcar o desmarcar es quitando la seleccion de la celda. No tengo ni idea porque me pasa esto. ¿Alguien sabe? Gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Checkbox en un dbgrid | el_barto | OOP | 7 | 25-08-2005 10:08:21 |
DBGrid con CheckBox | lgarcia | OOP | 2 | 03-03-2005 22:15:30 |
DBgrid y Checkbox | santi | Varios | 2 | 24-01-2005 18:25:53 |
DBGrid y CheckBox | seb@ | OOP | 2 | 17-10-2003 15:04:54 |
CheckBox en un DBGrid | DJ VMan | MySQL | 4 | 26-06-2003 17:05:26 |
|