0
Good morning, I’m trying to add items to a listview at runtime. In this item to a text and an image, the text part worked normal, but the image does not, it is added normally, but is made for all other items, it had to be equal to the text, each item with its own. Follow the code:
anitem : TListViewItem;
txt : TListItemText;
img : TListItemImage;
begin
with FrmMain do
begin
anitem :=Listview1.items.add;
with anitem do
begin
txt := TListItemText(Objects.FindDrawable('Text1'));
txt.Text := S.Nome;
//the image part
img := TListItemImage(Objects.FindDrawable('Image2'));
img.Bitmap := s.Icone;
end;
end;
//A rotina que estava com problema:
procedure TfrmMain.crialista;
var
Aux1 : TStringDynArray; // Usado para trocar o nome.exe por nome_Icon
icone : string; // Recebe o caminho completo para pegar o icone
Programa : Tprograma; // Contem todas as informações do programa , é passado para cada item da listbox.
Path : string; //acho que não serve de nada
// tb não usa pra nada
Aux : integer;
ARPrograma : array of TPrograma ;
searchaux: string;
Contador : integer;
begin
listview1.Items.clear;
TThread.CreateAnonymousThread(procedure
begin
QryEIS.Close;
QryEIS.open;
Contador:= 0 ;
SetLength(ARPrograma, QRyEIS.RecordCount );
QryEIS.First;
while not QryEIS.Eof do
begin
QryDiretorio.Close;
QryDiretorio.ParamByName('NomeDoSistema').Value:= QryEIS.FieldByName('DescricaoEIS').Value;
QryDiretorio.Open;
// Pegando o Icone do programa...
if QryDiretorio.RecordCount = 0 then //escrever o erro aqui
else
begin
aux1 := splitString( QryDiretorio.FieldByName('Sistema').Value, '.') ;
icone := 'F:\Sistemas\Icones\Launcher\' +aux1[0]+'_Icon.ico';
// ImageList1.AddMasked(Bmp,clFuchsia);
imagecontrol1.LoadFromFile(icone);
ARPrograma[Contador].Icone := imagecontrol1.bitmap;
ARPrograma[Contador].Nome:= QryDiretorio.FieldByName('NomeDoSistema').Value;
ARPrograma[Contador].NomeExe := QryDiretorio.FieldByName('Sistema').Value;
ARPrograma[Contador].SingleUser := QryDiretorio.FieldByName('SingleUser').Value ;
// Caminho da unidade C (PathC) e da unidade F (Path)
if QryDiretorio.FieldByName('SingleUser').Value = 'T' then
begin
ARPrograma[Contador].path := trim(QryDiretorio.FieldByName('Origem').Value)+'\'+trim(QryDiretorio.FieldByName('Sistema').Value);
ARPrograma[Contador].pathC := trim(QryDiretorio.FieldByName('destino').Value)+'\'+qryNome.FieldByname('NomeUsuario').Value+'\'+trim(QryDiretorio.FieldByName('Sistema').Value);
ARPrograma[Contador].DiretorioUser := trim(QryDiretorio.FieldByName('destino').Value)+'\'+qryNome.FieldByname('NomeUsuario').Value;
ARPrograma[Contador].Diretorio :=trim(QryDiretorio.FieldByName('destino').Value);
ARPrograma[Contador].SingleUser := QryDiretorio.FieldByName('SingleUser').Value ;
end
else
begin
ARPrograma[Contador].path := trim(QryDiretorio.FieldByName('Origem').Value)+'\'+trim(QryDiretorio.FieldByName('Sistema').Value);
ARPrograma[Contador].pathC := trim(QryDiretorio.FieldByName('destino').Value)+'\'+trim(QryDiretorio.FieldByName('Sistema').Value);
ARPrograma[Contador].Diretorio := trim(QryDiretorio.FieldByName('destino').Value);
end ;
aux := fileage(ARPrograma[Contador].path);
ARPrograma[Contador].DataMod := FileDateToDateTime(aux);
ARPrograma[Contador].Versao := Sto_GetFmtFileVersion(Programa.path , '');
if Programa.Versao <> '' then
begin
aux1 := splitString (Programa.Versao , '.');
ARPrograma[Contador].iVer[1] := strtoint(aux1[0]);
ARPrograma[Contador].iVer[2] := strtoint(aux1[1]);
ARPrograma[Contador].iVer[3] := strtoint(aux1[2]);
ARPrograma[Contador].iVer[4] := strtoint(aux1[3]);
end;
if fileExists(programa.pathC) then
begin
ARPrograma[Contador].VersaoC := Sto_GetFmtFileVersion(Programa.pathC , '');
if Programa.VersaoC <> '' then // Mesma coisa do comentario do F:
begin
aux1 := splitString (Programa.VersaoC , '.');
ARPrograma[Contador].iVerC[1] := strtoint(aux1[0]);
ARPrograma[Contador].iVerC[2] := strtoint(aux1[1]);
ARPrograma[Contador].iVerC[3] := strtoint(aux1[2]);
ARPrograma[Contador].iVerC[4] := strtoint(aux1[3]);
end;
end ;
// Here i call the CriaFrama.
criaframa(ARPrograma[Contador], Contador);
contador := Contador +1;
end;
QryEIS.Next;
end;
TThread.Synchronize(nil, procedure
begin
// some visual thing....
end);
end).Start;
end;
This code gives error or does not show the image?
– Tiago Rodrigues
So , it shows an image, in fact the same image stop all items, but should show several images. The person from the forum in English replied. I will just finish here and I will put the answer here too
– Matheus Anselmo