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

 
 
Herramientas Buscar en Tema Desplegado
  #13  
Antiguo 02-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
El Evento OnGetText en C++ Builder 6

En C++ Builder 6, el evento OnGetText sí existe para los objetos TField, pero no está disponible directamente en componentes como TQuery o TTable. Sin embargo, puedes usarlo a nivel de los campos individuales que forman parte del conjunto de datos.

El evento OnGetText se utiliza cuando necesitas personalizar la representación de un campo en un componente visual (por ejemplo, mostrar un formato especial o una conversión). Este evento es útil cuando necesitas modificar cómo se muestran los valores de un campo en controles como un DBGrid, sin modificar el valor subyacente en la base de datos.

Cómo utilizar el evento OnGetText en C++ Builder 6
Pasos para usar OnGetText:
Agrega los campos a tu conjunto de datos (ya sea un TQuery, TTable, o cualquier componente de acceso a datos). Esto puede hacerse de manera visual en tiempo de diseño o en código.

Asigna el evento OnGetText a los campos específicos.

Ejemplo paso a paso:
Crear los campos del conjunto de datos:

En el IDE de C++ Builder 6, selecciona tu componente TQuery o TTable.
Haz clic derecho en el componente y selecciona "Fields Editor".
En la ventana de Fields Editor, haz clic derecho y selecciona "Add all fields" para crear los campos asociados a las columnas de tu consulta.
Asignar el evento OnGetText:

Selecciona el campo en el Fields Editor.
En el inspector de objetos, localiza el evento OnGetText y haz doble clic para generar el manejador del evento.
Escribir el código en el manejador del evento OnGetText: En este manejador, puedes personalizar cómo se muestra el valor de este campo en los controles visuales.

Ejemplo de Código:
Imagina que tienes un campo numérico, pero quieres mostrarlo siempre con dos decimales en el DBGrid sin alterar su valor en la base de datos.

Código:
void __fastcall TForm1::Query1NUMEROGetText(TField *Sender, AnsiString &Text, bool DisplayText)
{
    if (!Sender->IsNull)
    {
        // Formatear el número con dos decimales
        Text = FormatFloat("0.00", Sender->AsFloat);
    }
    else
    {
        // Si el campo es NULL, mostramos un texto vacío
        Text = "";
    }
En este ejemplo, el evento OnGetText del campo NUMERO se encarga de formatear el valor del campo para que siempre se muestre con dos decimales, independientemente de cómo esté almacenado en la base de datos.

El nombre de la función generada para el evento OnGetText no necesariamente tiene que seguir el nombre del campo o consulta. De hecho, puedes usar cualquier nombre válido para el manejador del evento, como OnGetText, o puedes seguir la convención de nombrarlo más específicamente para saber a qué campo corresponde (por ejemplo, Query1NUMEROGetText).

El nombre TForm1::Query1NUMEROGetText en mi primer ejemplo fue solo una convención que hace referencia al campo NUMERO de la consulta Query1. Sin embargo, puedes cambiarlo por un nombre más general como TForm1::OnGetText, o cualquier otro nombre descriptivo.

Ejemplo corregido:
Si prefieres usar OnGetText como nombre del manejador, aquí tienes el código:

Código:
void __fastcall TForm1::OnGetText(TField *Sender, AnsiString &Text, bool DisplayText)
{
    if (!Sender->IsNull)
    {
        // Formatear el número con dos decimales
        Text = FormatFloat("0.00", Sender->AsFloat);
    }
    else
    {
        // Si el campo es NULL, mostramos un texto vacío
        Text = "";
    }
}
Luego, asignas este manejador al evento OnGetText del campo correspondiente:

En tiempo de diseño (usando el Fields Editor):

Haz doble clic en el evento OnGetText del campo deseado en el Inspector de Objetos, y selecciona OnGetText (o el nombre que hayas definido).
En tiempo de ejecución (si decides asignarlo manualmente):


Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    TFloatField *field = dynamic_cast<TFloatField*>(Query1->FieldByName("NUMERO"));
    
    if (field != NULL)
    {
        field->OnGetText = OnGetText;  // Asignando el manejador del evento
    }
}

Resumen:
El evento OnGetText está disponible a nivel de los campos individuales de un conjunto de datos.
Puedes usarlo para personalizar la manera en que se muestra el valor de un campo en un control visual sin alterar el valor real en la base de datos.
Necesitas definir los campos en el Fields Editor o en tiempo de ejecución para acceder a este evento.

Última edición por navbuoy fecha: 02-10-2024 a las 16:42:53.
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
Caracteres extraños en un Memo Sr.Scorpion Varios 1 23-10-2008 19:54:59
Caracteres extraños en un Memo Sr.Scorpion Varios 6 23-10-2008 14:47:05
Caracteres extraños (#$D#$A) Iuconlas Varios 2 23-09-2005 17:09:05
caracteres extraños en reportes Tangela Conexión con bases de datos 0 21-01-2004 19:56:22
Caracteres extraños Germi Conexión con bases de datos 1 14-10-2003 15:26:18


La franja horaria es GMT +2. Ahora son las 14:59:54.


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