Propriedade TCollection com colunas editáveis
-
21-09-2019 - |
Pergunta
Para meu próprio descendente de tcollection, quero estender o editor de propriedades da coleção. Quero ver mais colunas para outras propriedades do meu tcollectionItem. E eu tenho uma sorte porque é muito fácil. A única coisa que quero fazer foi substituir esses três métodos
TAttributeList = class(TOwnedCollection)
private
...
protected
function GetAttrCount: Integer; override;
function GetAttr(Index: Integer): string; override;
function GetItemAttr(Index, ItemIndex: Integer): string; override;
public
...
end;
Para recuperar o número de colunas, o título de uma coluna e o valor de uma coluna para um item da coleção.
Agora eu quero editar as células do atributo. É divertido parar aqui e escrevi um editor de coleção completo sozinho (talvez como uma cópia ou descrito do TCollectionEditor na unidade colnedit.pas)?
Espero que haja algo mais simples, mas, caso contrário, é interessante em exemplos de construção de um complexo TCollectionEditor.
Ciao Heinz Z.
Solução
A intenção aqui é fornecer esses atributos de coluna extra como propriedades publicadas sobre os próprios tcollectionItem. Portanto, quando você seleciona o item, ele é selecionado no inspetor de objeto, onde você pode editar e alterar os valores.
Basta criar um descendente de tcollectionItem e publicar as propriedades que representam os atributos extras que você deseja ser editável. Certifique -se de que, ao construir o descendente do TCollection, você especifica seu tipo tcollectionItem para instanciar.