Whalattax Posted June 12, 2012 at 09:14 AM Report Share #462110 Posted June 12, 2012 at 09:14 AM Olá pessoal. Tenho um Form com uma ListView e um outro Form com TMemo (Aparece no TMemo o que está escrito na ListVew). Era para usar o ciclo Form mas o meu Chefe quer a utilização de Thread. Quando clico no button "Run" aparece me o Form da ListView, escolho um programo e queria que abra 2 processos, 1 para o Form da instalação e outro para o Form do TMemo, ao mesmo tempo. Se escolho mais que uma instalação, deve me aparecer a instalação e o TMemo do primeiro programo e quando acabar, a instalação e o TMemo do segundo programo substitui o primeiro. Código Agradecimento. Link to comment Share on other sites More sharing options...
bsccara Posted June 12, 2012 at 12:20 PM Report Share #462166 Posted June 12, 2012 at 12:20 PM Se percebi minimamente o que queres não precisas de threads para isso; cria um método na TForm com o TMemo para preencher esse componente e chama-a de dentro da TForm com a TListView. Usa o método Show para mostrares as duas forms, em vez do ShowModal. Esta pergunta não apareceu já, à pouco tempo ? Link to comment Share on other sites More sharing options...
Whalattax Posted June 12, 2012 at 01:17 PM Author Report Share #462181 Posted June 12, 2012 at 01:17 PM (edited) Não sei. Mas o método Show permite abrir os dois Form's ao mesmo tempo mas não para funcionar. Quando selecciono um programo a instalar na lista e que clico no button para instalar, devo-me aparecer o Form com dados do programo seleccionado no bloco de nota e o Form que instala o programo seleccionado. Para mais facilidade, coloco aqui o código que tenho neste momento (Ciclio For): procedure TForm1.Button1Click(Sender: TObject); //label erro; var i:integer; begin form7:=Tform7.Create(self); for i := 0 to listview1.Items.Count-1 do if listview1.Items[i].Checked then with Form7 do begin Memo1.Lines.Clear; Memo1.Lines.Add(listview1.Items[i].SubItems[1]); ShowModal; Application.ProcessMessages; end; form7.Free; // goto erro; THREAD_PRIORITY_BELOW_NORMAL; THREAD_PRIORITY_ABOVE_NORMAL; Application.CreateForm(TForm4, Form4); Form4.install; // erro: // ShowMessage('Não foi encontrado o caminho pretendido!!'); //Form1.Hide; ////WinExec('comandos.dll', SW_NORMAL); //Proc := TProcess.Create(nil); //for x in ListView1.Items do // begin // if x.Checked then // begin // Proc.CommandLine := x.SubItems.Strings[0] ; // Proc.Execute; // //Fid(Proc.ProcessID); // //Proc.WaitOnExit; // repeat until ((not Proc.Running) or (button.click)); // if button.click; // Form3. // //DeleteFile('temp.dll') ; // end; // end; //Form1.Show; //WinExec('taskkill /F /IM comandos.dll /T', SW_HIDE); end; Form1 = Form da lista; Form4 = Form de instalação; Form7 = Form Bloco de nota. Obrigado. Edited June 12, 2012 at 02:45 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
bsccara Posted June 12, 2012 at 01:58 PM Report Share #462202 Posted June 12, 2012 at 01:58 PM (edited) Porque é que não fazes : procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin form7:=Tform7.Create(self); try for i := 0 to listview1.Items.Count-1 do begin if listview1.Items[i].Checked then with Form7 do begin Memo1.Lines.Clear; Memo1.Lines.Add(listview1.Items[i].SubItems[1]); Show; Form4 := TForm4.Create(Self); try Form4.Install; // Presumo que só retorna quando a instalação acabar e que processa mensagens do Windows. finally Form4.Free; end; Hide; end; end; finally Form7.Free; end; end; Podes posicionar as forms antes das linhas Form7.Show e Form4.Install. P.S. A edição da mensagem alterou a tabulação do código mas não tenho pachorra para corrigir... Edited June 12, 2012 at 01:59 PM by bsccara Link to comment Share on other sites More sharing options...
Whalattax Posted June 12, 2012 at 02:26 PM Author Report Share #462219 Posted June 12, 2012 at 02:26 PM Pois está a funcionar mas não funciona bem quando selecciono mais que um programa. Quando selecciono dois programas e clico no button para instalar, aparece-me o primeiro programa e primeiro bloco de nota do primeiro programas mas quando passa pela segunda instalação é que está mal. Tipo, está a me instalar os 2 programas seleccionados duas vezes. Não sei, se vocês vão perceber, se não percebem, eu irei tentar explicar melhor. Link to comment Share on other sites More sharing options...
bsccara Posted June 12, 2012 at 11:19 PM Report Share #462390 Posted June 12, 2012 at 11:19 PM Se está a instalar duas vezes o mesmo programa o problema estará no método Install da Form4, pois o ciclo percorre os elementos da listview, um a um e apenas uma vez cada. Link to comment Share on other sites More sharing options...
Whalattax Posted June 13, 2012 at 08:13 AM Author Report Share #462413 Posted June 13, 2012 at 08:13 AM Não, é quando estou a instalar 2 programas diferentes. Link to comment Share on other sites More sharing options...
bsccara Posted June 14, 2012 at 12:13 AM Report Share #462608 Posted June 14, 2012 at 12:13 AM Tá bem, mas se quando tentas instalar dois programas diferentes são executadas quatro instalações... Link to comment Share on other sites More sharing options...
Whalattax Posted June 14, 2012 at 08:11 AM Author Report Share #462615 Posted June 14, 2012 at 08:11 AM A é? Não sabia, então está tudo a funcionar, né? Obrigado. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now