Criação de Componentes TdataSource e TFields

22/09/2016

0

Gostaria de criar um componente que contenha a propriedade TDataSource e um lista de Fields. Quando o datasource for vinculado ao componente o mesmo irá carregar nas propriedades fields a lista de campos ligados ao DataSource.DataSet.Fields[0].AsString. A rotina será parecida com a função que existe no DBGrid. A minha duvida é o seguinte: Como criar uma Lista no estilo ComboBox com base no resultado de um dataset, pois consigo criar essa lista da forma de enum (campos fixos) gostaria que fossem dinamicos.
Lj Sistemas

Lj Sistemas

Responder

Posts

23/09/2016

Jones Granatyr

Olá,

Não entendi muito bem a dúvida, mas dê uma olhada na seguintes edições da Clube Delphi: 53, 71, 72 e 98. Lá tem alguns artigos sobre criação de componentes que talvez possa ajudar :)

Jones
Responder

23/09/2016

Hélio Devmedia

Faz assim:

type
TPDDEditFilter = class(TMaskEdit)
private
FDataLink: TDataLink;
public
constructor Create (AOwner: TComponent); override;
property DataField: string read GetDataField write SetDataField;
property DataSource: TDataSource read GetDataSource write SetDataSource;
end;

constructor TPDDEditFilter.Create(AOwner: TComponent);
begin
inherited;
FDataLink := TFieldDataLink.Create;

FDataLink.Control := Self;
end;

function TPDDEditFilter.GetDataField: string;
begin
Result := FDataLink.FieldName;
end;

procedure TPDDEditFilter.SetDataField(const Value: string);
begin
FDataLink.FieldName := Value;
end;

function TPDDEditFilter.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;

procedure TPDDEditFilter.SetDataSource(const Value: TDataSource);
begin
FDataLink.DataSource := Value;
end;
Responder

23/09/2016

Lj Sistemas

Obrigado Jones Granatyr, irei dar uma olhada nas edições.
Responder

23/09/2016

Lj Sistemas

HÉLIO CARLOS, consegui fazer da forma que você me passou e funcionou legal, só que quando eu levei a property DataField: string read GetDataField write SetDataField; para dentro de uma coleção, lá não listou os campos da mesma forma que havia listado quando as property DataField e a property DataSource estavam na mesma coluna de propriedades do objeto inspector. Estou querendo fazer da mesma forma que funciona o DBGrid, ligo o datasource ao component (meu componente), depois vou na propriedade colunas, adiciono uma nova coluna e seleciono a propriedade DataField contendo a lista de fields que estão vinculados pelo datasource.
Responder

27/09/2016

Hélio Devmedia

No caso você precisa na verdade, é criar um editor de propriedades com um listBox, mas os nomes tem que serem guardados como string, e referenciando Fields em uma coleção.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar