Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
Hola, creo que el problema que tiene el amigo no es en el pintado ya que su codigo funciona sino en colocar la condición y que cuando se haga doble click sobre un registro del se pinte.

Como te dijo Crandel necesitas un campo que te haga de condición y que maneje los valores que necesitas, talvez sería bueno que aumentes un campo Estado donde 1 signifique activo y 0 No activo, los que tengas con 0 los pintas del color que quieras, ahora en el evento dobleClick del DbGrid tendrías que modificar el valor de 1 a 0 o de 0 a 1, una vez que se refresque nuevamente el DBGrid con los cambios que acabas de hacer se activara nuevamente el evento OnDrawColumnCell para hacer el repintado.

Código Delphi [-]
procedure TForm1.DBGridDblClick(Sender: TObject);
var
 codigo : String;
begin
 Query.Close;
 Case QueryDBGrid.FieldByName('estado').AsInteger Of
  0 : Query.SQL.Text := 'Update tabla set estado=1 '+
                                 'where codigo='+QueryDBGrid.FieldByName('codigo').AsInteger;
  1:  Query.SQL.Text := 'Update tabla set estado=0 where '+
                                 'codigo='+QueryDBGrid.FieldByName('codigo').AsInteger;
 end;  
 Query.ExecSQL;
 
 QueryDBGrid.Close;
 QueryDBGrid.SQL.Text := 'select * from tabla';
 QueryDBGrid.Open;
end;

Y despues como ya te han indicado preguntarías por ese campo estado.

Código Delphi [-]
procedure TF_VentaPlato.DBG_DetallesPlatoOnDrawColumns(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
 if QueryDBGrid.FieldbyName('estado').AsInteger = 0 then
  begin
   DBG_DetallesPlato.Canvas.Font.Style := DBG_DetallesPlato.Canvas.Font.Style + [fsBold];
   DBG_DetallesPlato.Canvas.Brush.Color := clRed;
   DBG_DetallesPlato.Canvas.FillRect(Rect);
State := [gdSelected, gdFocused];

DBG_DetallesPlato.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #2  
Antiguo 17-09-2008
Memo6015 Memo6015 is offline
Miembro
 
Registrado: ago 2008
Posts: 35
Poder: 0
Memo6015 Va por buen camino
genial, si ese es mi problema la condicion como lo puse el pintado lo hace la cosa es como decirle al programa que pinte cuando le haga doble click, programe ese evento y llamo al procedimiento drawcolumns pero me empieza a pintar todo xDDDD

ok amigo mirare tu codigo y les digo que tal

muchas gracias por la ayuda
Responder Con Cita
  #3  
Antiguo 17-09-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 835
Poder: 24
gatosoft Va camino a la fama
Hola Memo... Creo haber tenido el mismo problema.... Tu das DobleClick en la grilla pero el color no cambia inmediatamente... Cierto?

Pues en tu caso yo lo resolvería poniendo en el evento OnDblClick la sentencia:

Código:
DBGrid1.Repaint;
Este a su vez llama al OnDrawColumGrid y hace el trabajo de pintura... Obviamente para que te coloree la casilla, debes cambiar la condición en la grilla o tabla antes de llamar al RePaint...

Bueno otra técnica para lograr un repaint es llamar al método INVALIDATE:

<TControl>.Invalidate;

Este se aplica bastante cuando estas creando tus propios componentes... Si algo ha cambiado en el componente tu puedes llamr al Invalidate en lugar de esperar que Windows lo haga cuando detecte un cambio...

Saludos,
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hola amigos Caral La Taberna 30 09-03-2008 16:36:12
S.O.S amigos programadores karlaoax La Taberna 19 19-10-2007 19:59:28
Para mis amigos los come uña jhonny La Taberna 8 11-05-2007 04:57:35
Hola amigos... DB-ADO Conexión con bases de datos 5 01-03-2005 14:30:54
Reencuentro de dos amigos. marcoszorrilla Humor 0 09-05-2004 00:38:01


La franja horaria es GMT +2. Ahora son las 08:00:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi