Default properties: como definir
Boa tarde, senhores(as)!
Partindo de um exemplo: um componente TMemo aceita a sintaxe Memo1.Clear ou Memo1.Lines.Clear. Ou seja: a classe TMemo tem a propriedade Lines como default.
Pergunta: como fazer para definir propriedades default em classes que estamos criando?
Partindo de um exemplo: um componente TMemo aceita a sintaxe Memo1.Clear ou Memo1.Lines.Clear. Ou seja: a classe TMemo tem a propriedade Lines como default.
Pergunta: como fazer para definir propriedades default em classes que estamos criando?
José Cordeiro
Curtidas 0
Respostas
Powerlog Tecnologia
26/12/2007
Veja se o exemplo abaixo te ajuda em alguma coisa ...
procedure LimpaTela(xForm: TForm;xUpper:boolean=false); var I : integer; xName: string; begin with xForm do begin for I := ComponentCount - 1 downto 0 do begin xName := Components[I].Name; try if (Components[I] is TDateEdit) then TDateEdit(Components[I]).Date := date else if (Components[i] is TEdit) then begin TEdit(Components[i]).Clear; if xUpper then TEdit(Components[i]).CharCase := ecUpperCase; end else if Components[i] is TMemo then TMemo(Components[i]).Lines.Clear else if (Components[I] is TCustomEdit) then TCustomEdit(Components[I]).Clear else if (Components[I] is TCheckRadioBox) then TCheckRadioBox(Components[I]).Checked := false else if (Components[I] is TStdLabel) and (TStdLabel(Components[I]).Tag = 9) then TStdLabel(Components[I]).Caption := ´´ else if (Components[I] is TComboBox) then TComboBox(Components[I]).ItemIndex := -1 else if (Components[I] is TPasswordEdit) then TPasswordEdit(Components[i]).Clear else if (Components[I] is TScrollBar) then TScrollBar(Components[I]).visible := true; except on E: Exception do MessageDlg(´Erro LimpaTela: ´+xName+´ ´+chr(13)+E.Message, mtError, [mbOk], 0); end; end; end; end;
GOSTEI 0
José Cordeiro
26/12/2007
Não é isso, Gladstone. O código enviado [u:94450aa30a]atribui valores default[/u:94450aa30a] a propriedades de componentes. Desejo [u:94450aa30a]definir uma propriedade como default[/u:94450aa30a] de uma classe que estou criando. Por exemplo:
[i:94450aa30a]type
TExemplo = class(TObject)
private
protected
constructor Create(const pCfgFileName, pMainSectionName: string);
destructor Destroy;
public
FCampo1: string;
FCampo2: Integer;
FCampo3 TStrings;
end;[/i:94450aa30a]
Desejo definir FCampo3 como default de TExemplo. Desta forma, poderia escrever Exemplo1.FCampo3.Clear ou Exemplo1.Clear (como no caso de TMemo).
Grato pela atenção. Continuo aguardando.
Henrique
[i:94450aa30a]type
TExemplo = class(TObject)
private
protected
constructor Create(const pCfgFileName, pMainSectionName: string);
destructor Destroy;
public
FCampo1: string;
FCampo2: Integer;
FCampo3 TStrings;
end;[/i:94450aa30a]
Desejo definir FCampo3 como default de TExemplo. Desta forma, poderia escrever Exemplo1.FCampo3.Clear ou Exemplo1.Clear (como no caso de TMemo).
Grato pela atenção. Continuo aguardando.
Henrique
GOSTEI 0
Jessedelsole
26/12/2007
Isso que vc quer fazer não tem como,
oq tem como é criar uma propriedade (property) do tipo index e definir ela como default da classe, como acontece com a Propriedade FieldValues do ClientDataSet :
vc pode escrever tanto :
[i:b849694b24]ClientDataSEt.fieldValues[/i:b849694b24][´campo´]
[i:b849694b24]ClientDataSet[´campo´][/i:b849694b24]
Agora oq acontece com o memo.lines.clear e memo.clear é que são dois métodos diferentes!
espero ter ajudado.
oq tem como é criar uma propriedade (property) do tipo index e definir ela como default da classe, como acontece com a Propriedade FieldValues do ClientDataSet :
property FieldValues[const FieldName: string]: Variant read GetFieldValue write SetFieldValue; default;
vc pode escrever tanto :
[i:b849694b24]ClientDataSEt.fieldValues[/i:b849694b24][´campo´]
[i:b849694b24]ClientDataSet[´campo´][/i:b849694b24]
Agora oq acontece com o memo.lines.clear e memo.clear é que são dois métodos diferentes!
espero ter ajudado.
GOSTEI 0
Jessedelsole
26/12/2007
Tanto que lines não é a propriedade default do memo,
que se vc digitar memo.Add não vai funcionar.!
que se vc digitar memo.Add não vai funcionar.!
GOSTEI 0
Wesley Rocio
26/12/2007
Tem como sim!
veja o artigo abaixo:
https://www.oreilly.com/library/view/delphi-in-a/1565926595/re61.html#:~:text=The%20default%20property%20lets%20you,is%20a%20shorthand%20for%20List.
veja o artigo abaixo:
https://www.oreilly.com/library/view/delphi-in-a/1565926595/re61.html#:~:text=The%20default%20property%20lets%20you,is%20a%20shorthand%20for%20List.
GOSTEI 0