Ver Mensaje Individual
  #12  
Antiguo 14-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Reputación: 20
keyboy Va por buen camino
Te la pongo más fácil:

Crea una nueva unidad, ExStringGrid.pas, con el siguiente código:

Código Delphi [-]
unit ExStringGrid;

interface

uses
  StdCtrls, Grids;

type
  TStringGrid = class(Grids.TStringGrid)
  protected
    function GetEditLimit: Integer; override;
    function CreateEditor: TInplaceEdit; override;
  end;

implementation

type
  TExInplaceEdit = class(Grids.TInplaceEdit);

{ TStringGrid }

function TStringGrid.CreateEditor: TInplaceEdit;
begin
  // Creamos el objeto original
  Result := inherited CreateEditor;

  // Ponemos el objeto creado en mayúsculas
  TExInplaceEdit(Result).CharCase := ecUpperCase;
end;

function TStringGrid.GetEditLimit: Integer;
begin
  // Si estamos en la columna 2 ...
  if Col = 2 then
    Result := 5
  else
    Result := inherited GetEditLimit;
end;

end.

que incluye toda la implementación de la clase derivada.

Luego, en tu formulario principal (o donde tengas el StringGrid), incluye la unidad:

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExStringGrid;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

El único requisito es que ExStringGrid debe aparecer después de la unidad Grids, de lo contrario no funciona.

Bye
Responder Con Cita