Default properties: como definir
26/12/2007
0
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
Posts
26/12/2007
Powerlog Tecnologia
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;
26/12/2007
José Cordeiro
[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
27/12/2007
Jessedelsole
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.
27/12/2007
Jessedelsole
que se vc digitar memo.Add não vai funcionar.!
07/02/2023
Wesley Rocio
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.
Clique aqui para fazer login e interagir na Comunidade :)