Enviar Item de ListBox para ListView com o comando FOR
olá, Estou desenvolvendo um sisteminha que faz uma busca em determinada pasta, e adiciona todos os arquivos [*.mp3] em um ListBox. Até esta parte tudo é feito rápido e sem travar.
Apos isso, ou passo item por item, com o comendo "for", no ListBox, e adiciono no ListView, sendo que para cada item eu pego o nome do artista, album e nome da musica, com o Componente ID3Tag da JediVCL, e esta parte se torna muito demorada já que na pasta existe mais de 1000 arquivos, e enquanto o comando for está sendo executado o programa trava, e não da para fazer nada.
pergunta:
Existe alguma maneira de exucutar esse comando For em "segundo plano" ou algo assim, de modo que não trave o programa?
O codigo que eu uso para Pegar as musicas é esse:
Apos isso, ou passo item por item, com o comendo "for", no ListBox, e adiciono no ListView, sendo que para cada item eu pego o nome do artista, album e nome da musica, com o Componente ID3Tag da JediVCL, e esta parte se torna muito demorada já que na pasta existe mais de 1000 arquivos, e enquanto o comando for está sendo executado o programa trava, e não da para fazer nada.
pergunta:
Existe alguma maneira de exucutar esse comando For em "segundo plano" ou algo assim, de modo que não trave o programa?
O codigo que eu uso para Pegar as musicas é esse:
procedure TForm1.Button2Click(Sender: TObject);
var
i,f,a:integer;
item:TListItem;
tagid3:ID3Struct;
begin
ListView2.Clear;
TabSheet4.TabVisible:=true;
PageControl1.ActivePage:=TabSheet4;
for i:=0 to ListView1.Items.Count-1 do
if ListView1.Items.Item[i].Checked then
begin
ListBox1.Clear;
listbox1.Items.BeginUpdate;
FileSearch(ListView1.Items.Item[i].SubItems[0],'*.mp3',listbox1,(LowerCase(ListView1.Items.Item[i].SubItems[1])=LowerCase('sim')));
listbox1.Items.EndUpdate;
for a:=ListBox1.Items.Count-1 downto 0 do
for f:=0 to ListBox2.Items.Count-1 do
If Pos(LowerCase(ListBox2.Items[f]),LowerCase(ListBox1.Items[a]))>0 then
ListBox1.Items.Delete(a);
for a:=0 to ListBox1.Items.Count-1 do
if FileExists(ListBox1.Items[a])=true then
begin
Item:=ListView2.Items.Add;
ID3.Active:=false;
ID3.FileName:=ListBox1.Items[a];
ID3.Active:=true;
item.Caption:=RemoveExt(nome(ListBox1.Items[a]));
item.SubItems.Add(RemoveExt(nome(ListBox1.Items[a])));
item.SubItems.Add(ID3.SongName);
item.SubItems.Add(ID3.Artist);
item.SubItems.Add(ID3.Album);
item.SubItems.Add(ListBox1.Items[a]);
end;
end;
TabSheet4.TabVisible:=False;
PageControl1.ActivePage:=TabSheet2;
Label5.Caption:='Total :'+IntToStr(ListView2.Items.Count);
end;
Jackson Veiga
Curtidas 0
Respostas
Jackson Veiga
13/08/2011
Ninguém?????
GOSTEI 0
Marco Salles
13/08/2011
Ninguém?????
Pesquise por THread .. Ha vários exemplos e ate mesmo vídeos sobre o assunto
GOSTEI 0