orientação objeto
Oi pessoal,
Alguém sabe como eu posso criar uma nova propriedade para um StringGrid?
Tipo: Grid.Row[i].[b:273e6d5a4d]Drilldown[/b:273e6d5a4d] do tipo boolean, onde ´DrillDown´ seria a propriedade a ser criada...
Até +
Alguém sabe como eu posso criar uma nova propriedade para um StringGrid?
Tipo: Grid.Row[i].[b:273e6d5a4d]Drilldown[/b:273e6d5a4d] do tipo boolean, onde ´DrillDown´ seria a propriedade a ser criada...
Até +
Hellen
Curtidas 0
Respostas
Schwarze
02/05/2003
Crie um objeto descendente do stringgrid. Assim:
type THellenStringGrid = class(TStringGrid) private FDrillDown: boolean; procedure SetDrillDown(Value: boolean); published property DrillDown: boolean read FDrillDown write SetDrillDown; end;
GOSTEI 0
Hellen
02/05/2003
eu devo implementar essas funções? Set e FDrillDown?
e isso, ta certo???:
´procedure Register;
begin
RegisterComponents(´Win32´, [MyGrid]);
end;´
e isso, ta certo???:
´procedure Register;
begin
RegisterComponents(´Win32´, [MyGrid]);
end;´
GOSTEI 0
Schwarze
02/05/2003
Tá certo. SetDrillDown é uma função, FDrillDown é apenas um field, uma variável que a propriedade lê direto. Você não precisa escrever uma função Get, se fizer do jeito que eu mostrei.
Não se esqueça de colocar seu objeto num package, pra torná-lo disponível em tempo de desenho.
:twisted: Ok?
Não se esqueça de colocar seu objeto num package, pra torná-lo disponível em tempo de desenho.
:twisted: Ok?
GOSTEI 0
Hellen
02/05/2003
Valeu mesmo...
funcionou, mas eu esqueci de falar que eu queria essa propriedade booleana dentro de grid.row.drilldown, como eu faço? so mais essa maozinha e eu paro de te encher o saco...
brigadao!
funcionou, mas eu esqueci de falar que eu queria essa propriedade booleana dentro de grid.row.drilldown, como eu faço? so mais essa maozinha e eu paro de te encher o saco...
brigadao!
GOSTEI 0
Schwarze
02/05/2003
A propriedade row do stringgrid é do tipo integer. Se fosse um objeto, você poderia criar um tipo de objeto só para ter essa propriedade. Por exemplo, usando Rows ao invés de Row:
type THellenRows = class(TStrings) private procedure SetDrillDown(Value: boolean); public property DrillDown: boolean read FDrillDown set SetDrillDown; end; THellenStringGrid = class(TStringGrid) private FRows: THellenRows; public property Rows: THellenRows read FRows; end;
GOSTEI 0
Hellen
02/05/2003
obrigado mesmo!!!
GOSTEI 0
Hellen
02/05/2003
minha unit ta assim:
unit MyStrings;
interface
uses
SysUtils, Classes;
type
TMyStrings = class (TStrings)
private
FDrillDown: boolean;
procedure SetDrillDown(Value: boolean);
protected
{ Protected declarations }
public
property DrillDown: boolean read FDrillDown write SetDrillDown;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
[b:3a43d1bc79] RegisterComponents(´Win32´, [TMyStrings]);[/b:3a43d1bc79]end;
procedure TMyStrings.SetDrillDown(Value: Boolean);
begin
if Value=true then Value:=true;
if Value=false then Value:=false;
end;
end.
da um esso nessa linha, q q pode ser?
Incompatible types: ´TComponentClass´ and ´Class reference´
unit MyStrings;
interface
uses
SysUtils, Classes;
type
TMyStrings = class (TStrings)
private
FDrillDown: boolean;
procedure SetDrillDown(Value: boolean);
protected
{ Protected declarations }
public
property DrillDown: boolean read FDrillDown write SetDrillDown;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
[b:3a43d1bc79] RegisterComponents(´Win32´, [TMyStrings]);[/b:3a43d1bc79]end;
procedure TMyStrings.SetDrillDown(Value: Boolean);
begin
if Value=true then Value:=true;
if Value=false then Value:=false;
end;
end.
da um esso nessa linha, q q pode ser?
Incompatible types: ´TComponentClass´ and ´Class reference´
GOSTEI 0
Schwarze
02/05/2003
Você tá tentando registrar os itens do stringgrid, que não são uma classe descendente de TComponent. Você deve criar o descendente de TStringGrid e registrar essa classe, não seus itens.
Você também errou o SetDrillDown. Se você não precisa fazer nada quando o usuário mudar DrillDown para true, pode declarar sua propriedade assim:
property DrillDrown read FDrillDown write FDrillDown;
e remover o SetDrillDown.
Ok?
Você também errou o SetDrillDown. Se você não precisa fazer nada quando o usuário mudar DrillDown para true, pode declarar sua propriedade assim:
property DrillDrown read FDrillDown write FDrillDown;
e remover o SetDrillDown.
Ok?
GOSTEI 0