Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
2 Dudas con DBGrid. Bloquear, Modificar = Color

hola Nuevamente..

Tenga Dos Dudas con respecto al DBGrid.

1. El DBGrid esta conectado con el DataSource --> Query --> DataBase

Me permite Modificar Los datos, etc.
pero quisiera q si se modifico alguna celda al salir de ella esta cambie el color de la Fuente.

ejemplo en la Comuna1, Celda3 la consulta muestra '123' lo modifican a '321' al salir de la Celda cambien el color de la fuente a 'Rojo'.

Es posible??

ahi la Primera duda..
---------------------------------------

2. Como puedo Bloquear una columna del DBGrid ????

es decir el Mismo DBGrid muestra informacion en 4 Columnas asi q la idea es la Siguiente:

evitar q puedan acceder a la Columna 4. es decir q esta sea solo de Consulta miestras q en las demas si se pueda editar.

---------------------------------------------------------

Les agradeseco de antemano la antecion prestada

Saludos..
Responder Con Cita
  #2  
Antiguo 10-04-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, sobre la segunda duda lo puedes hacer asi:

Código Delphi [-]
DBGrid1.Columna[1].enabled := False;

o

DBGrid1.Columns[1].ReadOnly := True;

Sobre la primera duda debes jugar con los eventos onColEnter, OnColExit y OnDrawColumnCell.

Espero te sirva.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 10-04-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Gracias por responder Enecumene.

con respecto a la Segunda duda seguie el ejemplo de este hilo

q funciono en gran manera.

Pero con respecto a la primera Duda..

no se como validar q los datos de la celda an sido modificados. encontre el siguiente ejemplo:

Código Delphi [-]
 
if (Column.Index = 2) and (Column.Field.Dataset.FieldbyName('PESO').AsInteger < 100) then       
if (gdFocused in State) then
     Begin
         DBGrid1.canvas.brush.color := clBlue;
     end
     else
     Begin
         DBGrid1.Canvas.Font.Color := clRed; 
         DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
     end;

el cual es colocado en el evento OnDrawColumnCell del DBGrid hace exactamente lo q necesito pero el detalle es q se hace la validacion con un Numero determinado.

Código Delphi [-]
if (Column.Index = 2) and (Column.Field.Dataset.FieldbyName('PESO').AsInteger < 100) then  .........

y yo necesito es validarlo contra lo q trajo el Query asi q no es adecuado.

e intentado modificar la condicion pero no e podido dar con la Solucion

si alguien me puede ayudar se les agradecera en gran manera

Saludos..
Responder Con Cita
  #4  
Antiguo 10-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola georgejg

Dejame entender lo que estas comentando, lo que necesitas es que cuando se modifique la columna1 cambie el color de la fila o solo cambie el color de la celda que se modificó ???

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 10-04-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
No sé si estoy entendiendo. De alguna forma tú lo que quieres es marcar los registros o campos que han sido modificados para que visualmente sea fácil distinguirlos. Pero una vez que te mueves de registro, los cambios se mandan a la base, de manera que realmente ya no hay cambios. Entonces, quizá la opción sería retrasar el envío de cambios usando CachedUpdates o un ClientDataset. En ese caso me parece que puedes hacer uso de las propiedades OldValue y NewValue del TField correspondiente. Si no coinciden es porque el campo se ha modificado. Coincidirán de nuevo una vez que uses ApplyUpdates.

Bye
Responder Con Cita
  #6  
Antiguo 10-04-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Gracias por responder ahora les detallo mas la intencion:

tengo un Database --> un Query --> DataSource --> DBGrid conectados.

ahora usando el Query realizo una consulta de los campos PESO, CANTIDAD, PRECIO, TIPO, (a la Tabla1) de mi Base de Datos

El resultado de la consulta me la muestra en DBGrid1 y lo q quiero como dije en el ejemplo (ejemplo en la Comuna1, Celda3 la consulta muestra '123' lo modifican a '321' al salir de la Celda cambien el color de la fuente a 'Rojo'.)

es lo siguiente (Paso a Paso):

1. Genero la Consulta
2. La consulta me Muestra:

Ejemplo....
Columna1 - Columna2 - Columna3 - Columna4

PESO --- CANTIDAD --- PRECIO --- TIPO
12 ------- 210 ----- ---- 23500 ---- 1
15 ------- 120 ----- ---- 4520 ----- 2
18 ------- 31 ----------- 1200 ----- 1
20 ------- 15 ----------- 800 ------ 2

3. Digamos (Ejemplo) q quiero modificar la celda 2 de la columna3 (PRECIO) es decir (4520)

4. Cambio el 4520 por 777 (Es Decir estoy dentro de la Celda)

5. Al Salir de la Celda ya sea usando TAB, el Mouse, El Teclado..etc. quiero q se cambie el color de la fuente a 'Rojo'.
Pero Solo de la Celda que modifique. Las q no e modificado deben quedar con el mismo color q biene por defecto (Negro).

esto como dice keyboy "marcar los registros o campos que han sido modificados para que visualmente sea fácil distinguirlos"

6. Al Darle Clic en el Botton "Guardar Cambios" me guarda los cambios en la BD y me quita el color "Rojo" de los campos editados.

Esto es Basicamente lo q se pretende.

ahora el unico ejemplo q e encontrado con algo mas o menos parecido esta en este hilo que e intentado adecuarlo pero no lo e logrado.

Les agradesco una pronta respuesta

Saludos.

Última edición por georgejg fecha: 11-04-2008 a las 15:56:28.
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
Modificar el color de fuente de un tmemo solo en determinadas lineas gaz-g7 Varios 3 28-06-2007 00:33:44
Modificar color de un dbedit molina669 OOP 2 23-11-2005 11:23:09
DbGrid en color ramonibk Varios 3 13-01-2005 13:23:58
Dudas con DBGRID Mario1980 Varios 5 19-10-2004 18:34:42
como bloquear un registro en un dbgrid marcelofabiani Conexión con bases de datos 5 02-10-2003 21:04:01


La franja horaria es GMT +2. Ahora son las 01:26:55.


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