Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Intraweb TIWDBGrid no muestra los DisplayLabels de los campos (https://www.clubdelphi.com/foros/showthread.php?t=65505)

fcios 20-12-2009 19:35:42

Intraweb TIWDBGrid no muestra los DisplayLabels de los campos
 
Hola y gracias de antemano

Tengo Intraweb 9.0.42 y al mostrar el IWDBGrid no me muestra los Display Labes que configuré en el componente Query, si no que me muestra el mismo nombre del campo como título, es como que no me toma lo que yo configuré en los DisplayLabels

Si en el IWDBGrid le doy doble click a la propiedad Columns y agrego los campos y los configuro, los titulos aparecen ok.

¿ Hay que setear algo para que tome los DisplayLabels de los campos automáticamente ?


Gracias

jhonny 21-12-2009 04:14:39

A la DBGrid que viene con Intraweb, sinceramente le falta mucho... a menos de que algún otro compañero haya encontrado una buena solución a esto que mencionas... me temo que habrá que seguirlo haciendo manualmente.

fcios 22-12-2009 04:45:17

Bueno ya lo hice

Código Delphi [-]
procedure TIWForm1.SetTitleColumnsOfIWDBGrid(myIWDBGrid :TIWDBGrid);
var n:byte; // maximo 255 campos
begin
  if myIWDBGrid.Columns.Count = 0 then begin
    myIWDBGrid.CreateImplicitColumns; // The first time .Count = 0, Why ?
    if myIWDBGrid.Columns.Count = 0 then Exit;
  end;

  for n:=0 to myIWDBGrid.Columns.Count -1 do begin
    TIWDBGridColumn(myIWDBGrid.Columns.Items[n]).Title.Text :=
      myIWDBGrid.DataSource.DataSet.FieldByName(
       TIWDBGridColumn(myIWDBGrid.Columns.Items[n]).DataField).DisplayLabel;
  end;
end;

o puedes cambiar el IWDBGrids.pas, pero necesitarás recompilar, si luego actualizas la versión también hay que cambiarlo de nuevo
  // ES LA ULTIMA LINEA

  // Update Column titles with field.DisplayName
  for i := 0 to Columns.Count - 1 do begin
    if (FDataSource <> nil) and (FDataSource.DataSet <> nil) then
      if 
(FDataSource.DataSet.FindField(TIWDBGridColumn(Columns.Items[i]).DataField) 
<> nil) and
        (TIWDBGridColumn(Columns.Items[i]).Title.Text = '') then
        TIWDBGridColumn(Columns.Items[i]).Title.Text := 
FDataSource.DataSet.FieldByName(TIWDBGridColumn(Columns.Items[i]).DataField).DisplayLABEL;// Name;

Muchas Gracias


La franja horaria es GMT +2. Ahora son las 19:32:38.

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