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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-06-2011
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
Solo un campo en mayusculas

Hola hay forma de adaptar este codigo a un solo campo y no a todo el dbgrid?

Código Delphi [-]
Uses
...
type
 {Truco para que Convierta de Minúsculas a Mayúsculas en las Celdas
  del dbGrid}
  TDBGrid = class(DBGrids.TDBGrid)
  protected
    function CreateEditor: TInplaceEdit; override;
  end;
public
....
end;
  THackEdit = class(TCustomEdit);
var
...

implementation
//Convierte de Minúsculas a Mayúsculas en Celdas del dbGrid
function TDBGrid.CreateEditor: TInplaceEdit;
begin
  Result := inherited CreateEditor;
  THackEdit(Result).CharCase := ecUpperCase;
end;

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 23-06-2011
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
Cita:
Empezado por makina Ver Mensaje
Hola hay forma de adaptar este codigo a un solo campo y no a todo el dbgrid?
Podemos intentar algo, pero tiene sus bemoles.

Primero creas el derivado de TDBGrid como antes, redefiniendo su método CreateEditor y también creas un derivado de TInplaceEdit para redefinir su método UpdateContents:

Código Delphi [-]
type
  TDBGrid = class(DBGrids.TDBGrid)
  protected
    function CreateEditor: TInplaceEdit; override;
  end;

  TInPlaceEditEx = class(TInplaceEdit)
  protected
    procedure UpdateContents; override;
  end;

UpdateContents se llama cada vez que se muestra el editor, así que es el que aprovechamos para actualizar la propiedad CharCase.

La implementación de ambos métodos sería así:

Código Delphi [-]
function TDBGrid.CreateEditor: TInplaceEdit;
begin
  Result := TInplaceEditEx.Create(Self);
end;

procedure TInplaceEditEx.UpdateContents;
begin
  CharCase := TEditCharCase((Grid as TDBGrid).SelectedField.Tag);
end;

Es decir, asignamos CharCase, según el valor de la propiedad Tag del campo activo (0-ecNormal, 1-ecUpperCase, 2-ecLowerCase). Normalmente, esta propiedad será igual a 0, por lo que todo queda igual.

Pero si en el editor de campos del dataset seleccionas el campo requerido, puedes asignarle 1 a la propiedad Tag y con ello dicho campo se editará en mayúsculas.

Pero, como dije, este método tiene sus bemoles, según comento aquí.

// Saludos
Responder Con Cita
  #3  
Antiguo 23-06-2011
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
wOW

wOW. Sorprendente. muchas gracias voy a probarlo y regreso con mis comentarios.
Muchas Gracias.
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


La franja horaria es GMT +2. Ahora son las 02:59:22.


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