Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2014
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
UpperCase en DBGrid

Cordial saludo,

Resulta que necesito que un bsSkinDBGrid (componente de Business Skin Form adquirido hace mas de dos años) me muestre en mayusculas los campos, roman realizo eso pero he tratado de implementarlo para este componente, no se que estare realizando mal, asi que les transmito el codigo fuente y espero alguien me corrija ya que no realiza absolutamente nada.

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, bsSkinCtrls, bsSkinGrids, bsDBGrids,Vcl.Grids,Vcl.StdCtrls,
  Data.DB, FIBDatabase, pFIBDatabase, FIBDataSet, pFIBDataSet;

type
  TDBGrid = class(bsDBGrids.TbsSkinDBGrid)
  protected
    function CreateEditor: TbsSkinInplaceEdit; override;
  end;

  TForm1 = class(TForm)
    bsSkinDBGrid1: TbsSkinDBGrid;
    tbKardex: TpFIBDataSet;
    Database: TpFIBDatabase;
    Transaction: TpFIBTransaction;
    dsKardex: TDataSource;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  THackEdit = class(TCustomEdit);

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TDBGrid }

function TDBGrid.CreateEditor: TbsSkinInplaceEdit;
begin
  Result := inherited CreateEditor;
  THackEdit(Result).CharCase := ecUpperCase;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Database.Connected := True;
  Transaction.StartTransaction;
  tbKardex.Open;
end;

end.

Gracias por su valiosos aportes.
Responder Con Cita
  #2  
Antiguo 11-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Dónde está la consulta select de donde lees los datos?
Responder Con Cita
  #3  
Antiguo 11-09-2014
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
La tengo en tbKardex en su propiedad SelectSQL que es un FIBDataSet, ahi esta una tabla que tiene los campos Fecha,Entrada,Salida,Usuario,Detalle; el campo fecha en el SkinDBGrid esta en formato dd-mmm-yy, ese campo lo deseo en mayusculas ald igual que el campo detalle, por eso en el FormCreate abro la tabla.
Responder Con Cita
  #4  
Antiguo 11-09-2014
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 Jose Roman.

De allí la pregunta de Casimiro ya que, en el caso de las cadenas de caracteres, te conviene traer los datos en mayúsculas diréctamente desde la consulta.

Por ejemplo:
Código SQL [-]
SELECT UPPER(DETALLE), ..., FECHA FROM TU_TABLA
El tema de las fechas es distinto... No tengo el componente TFIBDataSet, sin embargo creo que esto tendría que funcionarte:
Código Delphi [-]
...
implementation

const
  MNAME: array[1..12] of string = ('ENE','FEB','MAR','ABR',
    'MAY','JUN','JUL','AGO','SEP','OCT','NOV','DIC');
var
  AuxMonth: array[1..12] of string;

procedure TForm1.FormCreate(Sender: TObject);
begin
  move(SysUtils.ShortMonthNames, AuxMonth, SizeOf(SysUtils.ShortMonthNames));
  move(MNAME, SysUtils.ShortMonthNames, SizeOf(MNAME));

  TDateField(FibDataSet1.FieldByName('FECHA')).DisplayFormat:= 'dd/mmm/yy';
  FibDataSet1.Open;
end;

//...

procedure TForm1.FormDestroy(Sender: TObject);
begin
  move(AuxMonth, SysUtils.ShortMonthNames, SizeOf(AuxMonth));
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-09-2014 a las 05:11:29. Razón: corregir nombre de campo
Responder Con Cita
  #5  
Antiguo 11-09-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero estamos hablando de cosas distintas. Una cosa es armar la consulta SQL en mayúsculas y otra que al editar el DBGrid sólo se acepten mayúsculas; y esto último es lo que hacía el código al que se refiere Jose Roman, sólo que él utiliza un derivado de TDBGrid que desconozco.

// Saludos
Responder Con Cita
  #6  
Antiguo 11-09-2014
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
Si roman, esa me pareció la finalidad del código del primer mensaje. Sin embargo esta parte del texto no se condecía con él:
Cita:
Resulta que necesito que un bsSkinDBGrid (componente de Business Skin Form adquirido hace mas de dos años) me muestre en mayusculas los campos...
De modo que si era sólo mostrarlos en mayúsuculas bastaba hacerlo desde la consulta. Pero es claro que si necesita pasar a mayúsculas lo que va ingresando no le va a servir mi mensaje...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 11-09-2014
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Gracias a todos por su respuesta, creo que lo de ecfisa me puede servir, les comunicare mi avance, gracias de nuevo.
Responder Con Cita
  #8  
Antiguo 11-09-2014
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Les informo que funciono el codigo sugerido por ecfisa, solo unas modificaciones para aquellos que estamos trabajando con XE en adelante, en vez de SysUtils.ShortMonthNames deben utilizar FormatSettings.ShortMonthNames y la parte donde se busca el campo con la fecha debe declararse despues de abrir la tabla ya que genera un error al no encontrar el campo, entonces el codigo fuente queda asi:
Código Delphi [-]
const
  MNAME: array[1..12] of string = ('ENE','FEB','MAR','ABR',
    'MAY','JUN','JUL','AGO','SEP','OCT','NOV','DIC');
var
  AuxMonth: array[1..12] of string;

procedure TForm1.FormCreate(Sender: TObject);
begin
  move(FormatSettings.ShortMonthNames, AuxMonth, SizeOf(FormatSettings.ShortMonthNames));
  move(MNAME,FormatSettings.ShortMonthNames, SizeOf(MNAME));
  Database.Connected := True;
  Transaction.StartTransaction;
  tbKardex.Open;
  TDateField(tbKardex.FieldByName('ID_FEC')).DisplayFormat:= 'dd/mmm/yy';
end;
Responder Con Cita
  #9  
Antiguo 11-09-2014
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Cita:
Empezado por Jose Roman Ver Mensaje
Les informo que funciono el codigo sugerido por ecfisa, solo unas modificaciones para aquellos que estamos trabajando con XE en adelante, en vez de SysUtils.ShortMonthNames deben utilizar FormatSettings.ShortMonthNames y la parte donde se busca el campo con la fecha debe declararse despues de abrir la tabla ya que genera un error al no encontrar el campo, entonces el codigo fuente queda asi:
Código Delphi [-]
const
  MNAME: array[1..12] of string = ('ENE','FEB','MAR','ABR',
    'MAY','JUN','JUL','AGO','SEP','OCT','NOV','DIC');
var
  AuxMonth: array[1..12] of string;

procedure TForm1.FormCreate(Sender: TObject);
begin
  move(FormatSettings.ShortMonthNames, AuxMonth, SizeOf(FormatSettings.ShortMonthNames));
  move(MNAME,FormatSettings.ShortMonthNames, SizeOf(MNAME));
  Database.Connected := True;
  Transaction.StartTransaction;
  tbKardex.Open;
  TDateField(tbKardex.FieldByName('ID_FEC')).DisplayFormat:= 'dd/mmm/yy';
end;
Ahora me surgio la duda, ¿Y para mostrar AM o PM en lugar de am o pm?
Responder Con Cita
  #10  
Antiguo 11-09-2014
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola a todos.

Si la finalidad es solo visualizar los datos en mayusculas ¿no basta con el evento ongettext?

Saludos
Responder Con Cita
  #11  
Antiguo 11-09-2014
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 Jose Roman.
Cita:
Empezado por Jose Roman Ver Mensaje
Ahora me surgio la duda, ¿Y para mostrar AM o PM en lugar de am o pm?
Estimo que bastaría agregarlo a la cadena de formato:
Código Delphi [-]
 TDateField(FibDataSet1.FieldByName('FECHA')).DisplayFormat:= 'dd/mmm/yy h:m:s AM/PM';
Saludos
__________________
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
UpperCase en DBGrid Phacko Varios 12 23-06-2011 18:10:21
UpperCase en un TDBGRID KAYO Conexión con bases de datos 5 22-09-2008 19:45:24
lo contrario a uppercase federico1 Varios 3 24-11-2007 15:12:13
¿Que es más rápido AnsiUppercase o Uppercase? xander Varios 6 05-10-2007 02:17:35
Activar UpperCase a un DBMemo ElCherchu Varios 1 17-01-2005 16:36:28


La franja horaria es GMT +2. Ahora son las 12:27:19.


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