Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 05-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 borlandpablo.

No comentaste que condición debe cumplirse para que la celda se pinte. Pero por tu código del mensaje #5, deduzco que es cuando la fecha que está en la celda del StringGrid es igual (exíste) en determinado campo de la tabla en que realizas la búsqueda.

Si es así, de este modo hará lo que buscas:
Código:
...
#define COL_DATE 0  // Columna correspondiente a la fecha

...

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State) {
  TCanvas *CV = static_cast<TCanvas*>(StringGrid1->Canvas);
  TDate FechaCell;

  if (ACol == COL_DATE && TryStrToDate(StringGrid1->Cells[COL_DATE][ARow],FechaCell)) {
    QryTmp->Close();
    QryTmp->SQL->Text = "SELECT FECHA FROM TABLA WHERE FECHA = :VALUE";
    QryTmp->ParamByName("VALUE")->AsString = StringGrid1->Cells[COL_DATE][ARow];
    QryTmp->Open();
    if (!QryTmp->IsEmpty()) {
      CV->Brush->Color = clLime;
      CV->FillRect(Rect);
      CV->TextOut(Rect.Left+1 ,Rect.top+1, StringGrid1->Cells[ACol][ARow]);
    }
  }
}
En la consulta SQL tenes que cambiar "TABLA" por el nombre de tu tabla y "FECHA" por el nombre del campo a consultar.
La sintáxis del query (QryTmp) puede variar de acuerdo a los componentes que estas usando y que desconozco por que tampoco encontré mención a ellos en tus mensajes.

Revisando a fondo el código del mensaje #5, no sólo recorre la tabla por cada celda ¡ Sino que por cada celda recorre todas las celdas leyendo secuencialmente la tabla cada vez ! de allí que el programa se volvía "loco"...

Este código sólo realiza una consulta (muchísimo mas veloz que una busqueda secuencial) cuando se va a pintar una celda de la columna COL_DATE (fecha) y su contenido es una fecha válida.
De todas formas no es lo óptimo, pienso que un TDBGrid cumpliría mejor con el cometido... pero para asegurarlo tendría que entender bién la lógica de lo que estas intentando hacer.

Saludos.
__________________
Daniel Didriksen

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



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
Conectar base de datos Firebird con base de datos Oscommerce 2.3.3 Adriadob Firebird e Interbase 11 31-10-2012 11:28:46
Ordenar datos en un StringGrid gilberto_1126 Varios 2 22-12-2010 18:34:29
StringGrid rellenar rapidamente. byfali Varios 10 25-03-2008 00:25:19
Rellenar una grilla con datos generados por el usuario maco2007 .NET 11 05-12-2007 02:53:00
Rellenar datos de tablas sur-se Firebird e Interbase 1 11-11-2004 11:14:44


La franja horaria es GMT +2. Ahora son las 08:55:58.


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