Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 04-11-2016
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.

No uso los componentes que mencionas pero tal vez esta opción, que almacena y por tanto "recuerda" el último formato elegido, te podría ser útil:
Código Delphi [-]
unit uCurrFormat;

interface

uses Classes;

type
  TCurrFormat  = class
  private
    FIniFileName  : string;
    FDefaultFormat: string;
    FGlobalFormat : string;
    function  GetGlobalFormat: string;
    procedure SetGlobalFormat( const StrFormat: string );
  public
    constructor Create;
    procedure SetDisplayFormat( TC: TComponent );
    property Format: string read FGlobalFormat write SetGlobalFormat;
  end;

var
  CurrFormat: TCurrFormat;

implementation

uses SysUtils, Forms, TypInfo, IniFiles, DB;

constructor TCurrFormat.Create;
begin
  FIniFileName   := ExtractFilePath(Application.ExeName) + 'IniFile.ini';
  FDefaultFormat := '#,##0.0000';
  FGlobalFormat  := GetGlobalFormat;
end;

function TCurrFormat.GetGlobalFormat: string;
var
  ini : TIniFile;
begin
  ini := TIniFile.Create( FIniFileName );
  try
    if not FileExists( FIniFileName ) then
    begin
      Result := FDefaultFormat;
      ini.WriteString( 'DisplayFormat', 'Format', Result );
    end
    else
      Result := ini.ReadString( 'DisplayFormat', 'Format', '' );
  finally
    ini.Free;
  end;
end;

procedure TCurrFormat.SetGlobalFormat( const StrFormat: string );
var
  ini : TIniFile;
begin
  ini := TIniFile.Create( FIniFileName );
  try
    FGlobalFormat := StrFormat;
    if not FileExists( FIniFileName ) then
      ini.WriteString( 'DisplayFormat', 'Format', FDefaultFormat )
    else
      ini.WriteString( 'DisplayFormat', 'Format', FGlobalFormat );
  finally
    ini.Free;
  end;
end;

procedure TCurrFormat.SetDisplayFormat( TC: TComponent );
var
  i, j: Integer;
  fld : TField;
  pNfo: PPropInfo;
begin
  for i := 0 to TC.ComponentCount-1 do
  begin
    if TC.Components[i] is TDataSet then
    begin
      for j := 0 to TDataSet( TC.Components[i] ).FieldCount-1 do
      begin
        fld := TDataSet( TC.Components[i] ).Fields[j];
        if fld is TCurrencyField then
          TCurrencyField(fld).DisplayFormat := FGlobalFormat;
      end;
    end
    else
    begin
      pNfo := GetPropInfo( TC.Components[i], 'DisplayFormat' );
      if Assigned( pNfo ) then
        SetStrProp( TC.Components[i], pNfo, FGlobalFormat );
    end;
  end;
end;

initialization
  if not Assigned ( CurrFormat ) then
    CurrFormat := TCurrFormat.Create;

finalization
  CurrFormat := nil;
end.

Ejemplo del uso:

DataModule,
Código Delphi [-]
unit Unit2;
...
implementation

uses uCurrFormat;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  DataSet.Open;
  CurrFormat.SetDisplayFormat(DataModule1); // (*)
end;

Form,
Código Delphi [-]
...
var
  MainForm: TMainForm;

implementation

uses Unit2{ DataModule }, uCurrFormat;

procedure TMainForm.Button1Click(Sender: TObject);
var
  peso: string;
begin
  if CheckBox1.Checked then
    peso := '$ '
  else
    peso := '';
  CurrFormat.Format := peso +'#,##0.' + StringOfChar('0', SpinEdit1.Value);
  CurrFormat.SetDisplayFormat(DataModule1);
end;
...

Vista del ejemplo:


(*) En esta línea se aplica el formato almacenado a los componentes del contenedor (form, datamodule, ) , por lo que tendrías que usarla en todas aquellas unidades en que desees visualizar el formato.

Saludos

Pd: (Si tenes alguna dificultad para implementarlo, avisame y te adjunto el código fuente del ejemplo)
__________________
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
Asignar dinámicamente valores a propiedades sin conocer previamente cuáles Leviatan OOP 4 31-01-2012 00:34:59
La propiedad DisplayFormat gcaffe Varios 1 25-12-2009 15:18:01
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo jzginez OOP 5 22-06-2007 21:40:51
Asignar evento on exit y otros a varios labeledit creados dinamicamente cotoprix OOP 2 08-01-2004 23:05:53
asignar evento a control creado dinamicamente jorgeganc Varios 4 17-12-2003 02:47:51


La franja horaria es GMT +2. Ahora son las 11:47:31.


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