Fórum Problemas com criacao de componentes... #258680
16/11/2004
0
Olá galera..
Estou tentando criar um componentes pela primeira vez para facilitar algumas funcoes que sempre utilizo.
estou tentand criar um componente derivado do TStringGrid que execute alguns comandos nos eventos. Naum quero criar evento propriedades.. soh quero executar alguns comandos por exemplo no OnSelectCell, ou no On KeyPress do StringGrid..
No codigo que montei o evento KeyPress esta funcionando belezinha!!!
Agora preciso executar comandos tb no OnGetEditMask. Qdo coloco a funcao no secao PROTECTED. me retorna a seguinte mensagem de [b:de46cfb4b2]erro [/b:de46cfb4b2]:
[color=red:de46cfb4b2]Declaration of ´GetEditMask´ differs from previuos declaration.[/color:de46cfb4b2]
O que to fazendo de errado????
Segue o codigo abaixo
Valew galera
Abracos
Gustavo
Estou tentando criar um componentes pela primeira vez para facilitar algumas funcoes que sempre utilizo.
estou tentand criar um componente derivado do TStringGrid que execute alguns comandos nos eventos. Naum quero criar evento propriedades.. soh quero executar alguns comandos por exemplo no OnSelectCell, ou no On KeyPress do StringGrid..
No codigo que montei o evento KeyPress esta funcionando belezinha!!!
Agora preciso executar comandos tb no OnGetEditMask. Qdo coloco a funcao no secao PROTECTED. me retorna a seguinte mensagem de [b:de46cfb4b2]erro [/b:de46cfb4b2]:
[color=red:de46cfb4b2]Declaration of ´GetEditMask´ differs from previuos declaration.[/color:de46cfb4b2]
O que to fazendo de errado????
Segue o codigo abaixo
Valew galera
Abracos
Gustavo
unit StringGridAcesso;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids,Mask;
type
TCellsType = (ctNone, ctInteger, ctNumeric, ctDate, ctString);
TStringGridColItens = record
ColType : TCellsType;
MaxLen : Integer;
MaskEdit : String;
CanSelect : Boolean;
end;
TStringGridColDetail = array [0..9999] of TStringGridColItens;
TStringGridAcesso = class(TStringGrid)
private
{ Private declarations }
protected
{ Protected declarations }
procedure KeyPress(var Key: Char); override;
******* O ERRO ESTA AQUI ******************
procedure GetEditMask(ACol, ARow: Longint; var Value: String); ******* O ERRO ESTA AQUI ******************
override;
public
{ Public declarations }
ColDetails: TStringGridColDetail;
constructor Create (AOwner : TComponent); Override;
destructor Destroy; override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Novos´, [TStringGridAcesso]);
end;
constructor TStringGridAcesso.Create(AOwner: TComponent);
var FCont:integer;
begin
inherited;
for FCont:=0 to 9999 do
begin
ColDetails[FCont].CanSelect := True;
ColDetails[FCont].ColType := ctNone;
ColDetails[FCont].MaskEdit := ´´;
ColDetails[FCont].MaxLen := 0;
end;
end;
destructor TStringGridAcesso.Destroy;
begin
inherited;
end;
procedure TStringGridAcesso.GetEditMask(ACol, ARow: Longint; var Value: String);
begin
{mask cell se for do tipo Tdate}
case ColDetails[Col].ColType of
ctDate : Value := ´!99/99/0000;1; ´;
end;
end;
procedure TStringGridAcesso.KeyPress(var Key: Char);
begin
{Filtrar digitacao de acordo com o tipo do campo}
case ColDetails[Col].ColType of
ctDate,ctInteger : if (key in [´0´..´9´,8,13]) then Key := Key
else Key := 0;
ctNumeric : if (key in [´0´..´9´,´,´,8,13]) then Key := Key
else Key := 0;
ctNone,ctString : Key := Key;
end;
{limitar digitacao dos campos}
if not (key in [8, 13]) then
if (ColDetails[Col].MaxLen > 0) and
(Length(Cells[Col,Row]) > ColDetails[Col].MaxLen) then
key := 0;
inherited;
end;
end.Gustavo M
Curtir tópico
+ 0
Responder
Posts
17/11/2004
Massuda
O problema é que a classe TStringGrid já possui uma [b:354281ba9c]função[/b:354281ba9c] de nome GetEditMask, declarada como
Mude sua procedure GetEditText para uma função conforme a declaração acima.
TStringGrid = class(... function GetEditText(ACol, ARow: Longint): string; override; ...
Mude sua procedure GetEditText para uma função conforme a declaração acima.
Responder
Gostei + 0
17/11/2004
Paulo_amorim
Olá
O problema ocorre pois o evento OnGetEditMask eh do tipo TGetEditEvent...
No caso, vc se esqueceu do parâmetro
Espero que ajude
Até+
O problema ocorre pois o evento OnGetEditMask eh do tipo TGetEditEvent...
type TGetEditEvent = procedure (Sender: TObject; ACol, ARow: Longint; var Value: String) of object;
No caso, vc se esqueceu do parâmetro
Sender: TObject
Espero que ajude
Até+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)