Wagner,
Esta dificil fazer isto funcionar :)
A unica coisa que me falta em todo o sistema é a ligacao entre TBlob e TBitmap de uma TListView em todo o sistema. Sei que fica fora do escopo do suporte, mas se voce conseguir alguma dica a mais para eu terminar isto vai fazer uma diferenca enorme no meu sistema. Que é todo basado em TListViews e Livebinding com o TAUreliusDataset. Esta tudo funcionando, porem fica um vazio nas listas por falta da imagem.
No momento eu nao tenho uma propriedade mapeada para BD, estou usando a qualidade do aurelius dele criar campos no TAureliusDataset the propriedades nao mapeadas. Muito util para ser usado como um tipo de campo calculado.
O que pretendo fazer eh o seguinte:
De acordo com alguma informacao da entidade eu seleciono um certo recurso e carrego ele para ser devolvido como TBlog.
Neste momento estou fazendo isto:
function TNaharEntity.GetImage: TBlob;
begin
if FImage.IsNull then
AssignResource('default', FImage);
result := FImage;
end;
onde:
procedure TNaharEntity.AssignResource(AName: String; ABlob: TBlob);
var
InStream: TResourceStream;
begin
try
InStream := TResourceStream.Create(HInstance, AName, RT_RCDATA);
try
if Assigned(InStream) then
ABlob.LoadFromStream(InStream);
finally
InStream.Free;
end;
except
end;
end;
Estou dentro do contexto do scope do Firemonkey.
A Imagem carregada dos recursos é um PNG.
Esta imagem eu uso para ligar via LiveBinding com a TListView. Estou usando a TListView com uma customizacao como se encontra na demo:
C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\Object Pascal\Mobile Samples\User Interface\ListView
projeto SampleListViewMultiDetailAppearanceProject
porem tem que instalar antes o SampleListViewMultiDetailAppearancePackage que se encontra no mesmo diretorio.
Esta listview mostra uma customizacao que eu uso em todas minhas listas onde mostra uma imagem e 4 items ao lado da imagem. Que podem ser conectada via live binding.
Eu uso isto em tudo no sistema, e o Aurelius me ajuda muito nisto pois eu criei as seguintes propriedades na minha classe base da entidade:
property ITEMTEXT : string read GetItemText;
property ITEMDETAIL1 : string read GetItemDetail1;
property ITEMDETAIL2 : string read GetItemDetail2;
property ITEMDETAIL3 : string read GetItemDetail3;
property ITEMIMAGE : TBlob read GetImage;
E elas sao expostas pelo Aurelius no DataSet. Entao cada entidade faz um override e atribui um valor apropriado para cada. Na view fica muito simples, pois basta sempre fazer as mesmas conexoes entre BindSource e TListView sem pensar em nada. A propria entidade ja determinar o que vai ser apresentado. Simples facil e radido
Mas a ligacao do TBlob com o TBitmap da TListView nao funciona.
O codigo que voce compartilhou nao teve jeito de eu adaptar e fazer funcionar. Na realidade nem este codigo acima consegui fazer ele ser chamado para a solucacao proposta, é como se nao tivesse sido registrado (e foi).
Entao, se voce souber alguma coisa a mais, ou alguem da equipe saber um pouco sobre como fazer esta ligacao entre o TBlob do Aurelius com o LiveBinding eu agradeceria muito.
Obrigado