Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2011
Kalondro Kalondro is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: Barcelona - España
Posts: 5
Poder: 0
Kalondro Va por buen camino
Acceder a DisplayFormat en tiempo de Ejecución

Buenas,

Estoy intentando acceder a la propiedad DisplayFormat sobre campos que se creen dinamicamente de la siguiente forma:

Código:
static_cast<TFloatField>(Temporal->FieldByName("Campo"))->DisplayFormat = "#,##0.00;;#";
Pero el compilador me da los siguientes errores

Código:
[BCC32 Error] Modulo1.cpp(358): E2459 VCL style classes must be constructed using operator new 
[BCC32 Error] Modulo1.cpp(358): E2288 Pointer to structure required on left side of -> or ->*
¿ Estoy haciendo algo mal ?

Uso el Builder 2009

Un saludo.
Responder Con Cita
  #2  
Antiguo 30-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 Kalondro.

No sé con que BD estés trabajando pero te hago un ejemplo con la propiedad DisplayFormat sobre un campo calculado por si te sirve de ayuda:
Código:
...
{
  Temporal->Close();
  TFloatField *NewField = new TFloatField(Temporal);
  NewField->FieldName = "CAMPO";
  NewField->DataSet = Temporal;
  NewField->FieldKind = fkCalculated;
  NewField->DisplayFormat = "#,##0.00;;#";
  Temporal->Open();
  Temporal->Edit();
  Temporal->FieldByName("CAMPO")->Value = "33.255";
}
Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 30-10-2011
Kalondro Kalondro is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: Barcelona - España
Posts: 5
Poder: 0
Kalondro Va por buen camino
Hola ecfisa, gracias por la respuesta.

Uso tablas Paradox y las creo de la siguiente forma

Código:
#include <memory>
... 
std::auto_ptr<TTable> Temporal1(new TTable(NULL));
Temporal1->DatabaseName = "";
Temporal1->TableType    = ttParadox;
Temporal1->TableName    = "TmpArticulos";
Temporal1->FieldDefs->Add("Contador",          ftAutoInc,  0, False);
Temporal1->FieldDefs->Add("Paso",              ftInteger,  0, False);
Temporal1->FieldDefs->Add("TipoPaso",          ftInteger,  0, False);
Temporal1->FieldDefs->Add("ReferenciaInterna", ftString,  20, False);
Temporal1->FieldDefs->Add("Referencia",        ftString,  20, False);
Temporal1->FieldDefs->Add("Denominacion",      ftString,  50, False);
Temporal1->FieldDefs->Add("TipoMaterial",      ftFloat,    0, False);
Temporal1->FieldDefs->Add("Lote",              ftFloat,    0, False);
Temporal1->FieldDefs->Add("Peso",              ftFloat,    0, False);
Temporal1->FieldDefs->Add("Unidades",          ftFloat,    0, False);
Temporal1->FieldDefs->Add("Almacen",           ftString,  10, False);
Temporal1->FieldDefs->Add("Seleccionado",      ftBoolean,  0, False);
Temporal1->IndexDefs->Add("", "Contador", TIndexOptions() << ixPrimary);
Temporal1->IndexDefs->Add("TmpReferencia", "ReferenciaInterna;Referencia", TIndexOptions() << ixCaseInsensitive);
Temporal1->CreateTable();
Esto me lo hace sin problemas y me la crea en el directorio del ejecutable.
Después asigno la tabla a un componente TTable de la siguiente manera.

Código:
tbTmpArticulos->DatabaseName = "";
tbTmpArticulos->TableName    = "TmpArticulos.db";
tbTmpArticulos->IndexName    = "TmpReferencia";
tbTmpArticulos->Active       = true;
Y por último más adelante es cuando quiero aplicar el DisplayFormat a cualquier campo del tipo Float de la siguiente manera

Código:
static_cast<TFloatField>(tbTmpArticulos->FieldByName("Lote"))->DisplayFormat = "#,##0.00;;#"
El ejemplo que has puesto tu (si no me equivoco) es para añadir un nuevo campo a una tabla ya creada, y lo he probado de la siguiente manera y no me funciona

Código:
TFloatField *NewField = new TFloatField(tbTmpArticulos->FieldByName("Peso"));
NewField->DisplayFormat = "#,##0.00;;#";
Un saludo.
Responder Con Cita
  #4  
Antiguo 31-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
prueba es cast de esta manera:
Código:
static_cast<TFloatField*>(tbTmpArticulos->FieldByName("Lote"))->DisplayFormat = "#,##0.00;;#"

Saludos.
Responder Con Cita
  #5  
Antiguo 31-10-2011
Kalondro Kalondro is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: Barcelona - España
Posts: 5
Poder: 0
Kalondro Va por buen camino
Muchas gracias escafandra.

Funciona perfectamente, un pequeño detalle (o no tan pequeño) que me estaba volviendo loco.

Muchas gracias a los dos.
Responder Con Cita
  #6  
Antiguo 31-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 Kalondro.
Cita:
El ejemplo que has puesto tu (si no me equivoco) es para añadir un nuevo campo a una tabla ya creada
Si así es, sinceramente no tenía en muy en claro entonces como era la situación.

Otra opción puede ser:
Código:
  ((TFloatField*)(tbTmpArticulos->FieldByName("Peso")))->DisplayFormat = "#,##0.00;;#";
Pero es mucho más aconsejable usar la sugerencia del amigo escafandra.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
coneccion en tiempo de ejecucion. pabloloustau Conexión con bases de datos 2 23-09-2010 21:48:57
Displayformat en un ClientDataSet creado en ejecución ? David Varios 1 22-10-2008 17:18:18
Acceder a propiedades de (TChartSeriesList) en tiempo de diseño papulo Gráficos 1 22-05-2006 21:06:55
DisplayFormat en tiempo de ejecución? mguixot OOP 4 01-06-2004 11:38:19
Tiempo de ejecucion? st7 Varios 3 11-05-2004 22:03:28


La franja horaria es GMT +2. Ahora son las 00:57:50.


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