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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-03-2018
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 10
wilcg Va por buen camino
LookupDataset en DBGrid y DrawColumnCell

Buen día,
Quisiera que me ayudaran con este codigo.
Tengo un DBGrid con los campos ID_CONFIG, ID_SUCURSAL. en este ultimo quiero mostrar el nombre de la sucursal mediante un LookupDataset, realizo la configuracion
y enlazo a un Query que contiene la informacion ID_SUCURSAL y NOMBRE. El programa funciona bien. Lo que sucede es que quiero usar este codigo que se muestra abajo,
en el evento DrawColumnCell y no me trae el nombre de la sucursal correctamente, me toma el primer nombre para todos los registros.

Código Delphi [-]
const
  // Windwos classic
  CtrlState: Array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or
  DFCS_CHECKED);
  // Windows xp
  CtrlStateXP: Array [Boolean] of TThemedButton = (tbCheckBoxUncheckedNormal,
  tbCheckBoxCheckedNormal);
var
  R      : TRect;
  uFormat: LongWord;
  currFld: string;
  Details: TThemedElementDetails;
begin
  uFormat := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS;
  case Column.Alignment of
    taLeftJustify : uFormat := uFormat or DT_LEFT;
    taRightJustify: uFormat := uFormat or DT_RIGHT;
    taCenter      : uFormat := uFormat or DT_CENTER;
  end;

  with TDBGridEh(Sender) do
  begin
    if gdSelected in State then
    begin
      Canvas.Brush.Color := $00BC7D00;
      Canvas.Font.Color := clWhite;
      Canvas.Font.Name := 'Tahoma';
      Canvas.Font.Size := 9;
    end
      else
    begin
      Canvas.Font.Color := $00646464;
      Canvas.Font.Name := 'Tahoma';
      Canvas.Font.Size := 8;
    end;

    currFld := column.Field.AsString;

    if column.FieldName = 'id_config' then
      if Length(Trim(column.Field.AsString)) > 0 then
        currFld := FormatFloat('000000',column.Field.Value);
    if column.FieldName = 'id_sucursal' then
      if Length(Trim(column.Field.AsString)) > 0 then
          currFld := ' '+column.Field.LookupDataSet.FieldByName('nombre').AsString;

    R := Rect;
    Canvas.FillRect(R);
    DrawText(Canvas.Handle, PChar(currFld), -1, R, uFormat);

    if Column.Field.DataType = ftBoolean then
    begin
      Canvas.FillRect(Rect);
      if ThemeServices.ThemesEnabled then
      begin
        Details := ThemeServices.GetElementDetails(CtrlStateXP[Column.Field.AsBoolean]);
        ThemeServices.DrawElement(Canvas.Handle, Details, Rect);
      end else
      begin
        R.Left   := Rect.Left + 2;
        R.Right  := Rect.Right - 2;
        R.Top    := Rect.Top + 2;
        R.Bottom := Rect.Bottom - 2;
        DrawFrameControl(Canvas.Handle, R, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
      end;
    end;
  end;

que es lo que falta para que funcione correctamente.
Responder Con Cita
 


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
Pasar registros de una DBGrid a otra Dbgrid usando multiselect Soa Pelaez Varios 4 08-03-2017 13:41:28
Pasar registros desde un dbgrid a otro dbgrid con botones.. Vales08 Varios 17 21-11-2011 20:27:50
Access Violation en LookupDataSet Viky Varios 0 21-11-2008 22:39:06
Memoria virtual DrawcolumnCell dbgrid pinkpanter Varios 1 14-04-2008 15:37:46
Problemas con el Medoto DrawColumnCell fmonte Varios 1 26-09-2004 04:10:13


La franja horaria es GMT +2. Ahora son las 20:26:16.


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