Cita:
Empezado por makina
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