Fórum TFields of a TDataSet #533088

29/09/2015

0

Gostaria de adicionar novas propriedades nos TFields (TStringField,TIntegerField etc) que fica no arquivo db.pas. É simples alterar o arquivo, mas como faço para compilar o pacote para que funcione na IDE do delphi já mostrando as novas propriedades que criei?
Rodrigo Silva

Rodrigo Silva

Responder

Posts

29/09/2015

Raimundo Pereira

var TABLE_TMP : TClientDataSet;

begin
TABLE_TMP := TClientDataSet.Create(Self);
TABLE_TMP.Close;
TABLE_TMP.FieldDefs.Clear;
TABLE_TMP.FieldDefs.add(´CODIGO´,ftInteger);
TABLE_TMP.FieldDefs.add(´NOME´,ftString,50);
TABLE_TMP.CreateDataSet;

end;
Responder

Gostei + 0

29/09/2015

Ronaldo Filho

Rodrigo, boa tarde grande.

Nesse teu caso seria mais interessante você criar um tipo que implementa a classe DBSystem, por que essa alteração sendo realizada diretamente no componente pode acarretar algum erro por conta do restante do pacote distribuído que vai ser compilado. No caso o que te aconselho é criar um tipo mesmo, essa propriedade vai precisar ser preenchida no Form de tua aplicação ou pode ser preenchida em tempo de execução? Por que se for algo que realmente necessite ser preenchido no Form, realmente é mais interessante que um informação estática seja criada e apresentada durante a execução como uma mensagem, porém é mais interessante usar tipagem em caso que não precisamos colocar configuração em componentes, operações ou informações simples.
Responder

Gostei + 0

29/09/2015

Rodrigo Silva

Bom Ronaldo, na minha aplicação eu tenho um controle que habilita ou não os campos quando em inclusão ou alteração. Criei um componente herdado do ClientDataSet e coloquei uma propriedade nova que é o modo de pesquisa. Dessa forma na própria tela de cadastro que é usado para incluir e alterar também uso para pesquisa(Filtro). A minha intensão é para cada campo mostrado na tela eu defino em tempo de projeto se permite inclusão, alteração ou pesquisa (se o campo só permite inclusão por exemplo, quando o usuário for fazer uma alteração, o campo em questão vai ser mostrado, mas vai está desabilitado). Hoje eu controlo com a propriedade tag, mas eu gostaria que ao adicionar fields(TStringField, TIntegerField etc) seja no ClientDataSet ou em uma Query, aparecesse no object inspector novas propriedades como (incluir, alterar, pesquisar) e aí definir se é true ou false. Ficaria mais intuitivo para o programador. Já vi isto ser feito, uma empresa em que trabalhei faz assim. Se alterar o Db.pas na classe TField pode funcionar , mas eu não sei como compilar este novo db.pas para que a IDE no Delphi passa a enxergar, ou se tem outra maneira. desde agradeço
Responder

Gostei + 0

29/09/2015

Ronaldo Filho

Ok entendi direito agora. No caso se você já fez a alteração, no projeto que você alterou deve conter um arquivo com a extensão .groupproj, para compilar basta abrir esse arquivo pelo Delphi, irá aparecer uma tela pequena com os componentes daquele grupo listados, basta clicar duas vezes no componente que você alterou e clicar em construir ou clicar com o botão direito e executar a operação de construção, após isso basta clicar em instalar. Geralmente quando preciso fazer isso com algum componente proprietário da empresa onde trabalho, eu desinstalo o componente e depois realizo esse procedimento que descrevi.
Responder

Gostei + 0

29/09/2015

Ronaldo Filho

Só continuando, se por acaso o Delphi em que você esteja trabalhando for o 7, só muda que a extensão do arquivo é .dpk e você terá que selecionar o o arquivo de pacotes que você fez a alteração. Pro exemplo fiz uma alteração gráfica e na pasta existem os arquivos core.dpk e design.dpk, o que eu vou ter que abrir e compilar é o design.dpk.
Responder

Gostei + 0

30/09/2015

Rodrigo Silva

Não funcionou meu amigo. É que os TFields não são componentes. eles são mostrados quando você os adiciona dentro do tClientDataSet ou uma TQuery. O TClientDataSet aí sim, que é um componente, é fácil adicionar novas propriedades. O db.pas pertence ao delphi e não sei como modificá-lo. De qualquer forma muito obrigado mesmo!!
Responder

Gostei + 0

01/10/2015

Ronaldo Filho

Boa tarde grande, realmente peço desculpa, não tinha percebido que o que você queria alterar era o TField, esse componente realmente não pode ser alterado, a compilação dele é diferente da dos componentes distribuídos por terceiros (instaláveis), no caso o que oriento a fazer é o mesmo que falei anteriormente, criar um tipo herdando do TField onde você poderá adicionar a propriedade que deseja e na hora de usar vc pode fazer um cast em execução do tipo que a query usa para esse tipo que você criou e trabalhar com ele. Peço desculpas novamente n]ao havia percebido onde seria realizada a alteração.
Responder

Gostei + 0

01/10/2015

Rodrigo Silva

Que isso amigo, sem problemas, valeu mesmo
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar