Ajuda com While Que não Funciona
10/09/2018
0
Tenho um dbgrid aonde eu seleciono o números de telefone, quero que quando, eu clicar no botão abrir navegador, ele executa o shellexecute(abre o navegador faz o que está no timer, fecha o navegador e passa para o próximo número de telefone), só que no while ele executa só o último registro e se eu mudo o shellexecute para dentro do while, ele abre todos os contatos de uma vez, se eu tiver 10 contatos, ele abre os 10 ou seja abre 10 navegadores, eu não quero isso, quero que abre um por vez, só passar para o próximo assim que fechar o navegador,ai sim ele passa para o próximo.
procedure TForm1.Button1Click(Sender: TObject); begin Clipboard.AsText := memoMensagem.Text; begin cdsGrid.Filter := ''''''''SELECIONA = '''''''' + QuotedStr(''''''''S''''''''); // filtra os registros selecionados cdsGrid.Filtered := True; // ativa o filtro cdsGrid.First; // posiciona o cursor no primeiro registro while not cdsGrid.Eof do begin while not cdsGrid.Eof do begin cdsGrid.Edit; edtNumero.Text := cdsGrid.FieldByName(''''''''TELEFONE'''''''').AsString; timerBtnAbrirNavegador.Interval := 20500; timerBtnAbrirNavegador.Enabled := True; timerBtnFecharNavegador.Interval := 30000; timerBtnFecharNavegador.Enabled := True; cdsGrid.Next; end; ShellExecute(Handle,''''''''Open'''''''',''''''''firefox.exe'''''''',PChar(edtUrl.Text + edtNumero.Text),''''''''C:\\\\\\\\\\\\\\\\Arquivos de programas\\\\\\\\\\\\\\\\Mozilla Firefox'''''''', SW_SHOWNORMAL); cdsGrid.Next; end; end; end;
Bruno Henrique
Post mais votado
10/09/2018
tente assim:
procedure TForm1.Button1Click(Sender: TObject); begin Clipboard.AsText := memoMensagem.Text; cdsGrid.Filter := 'SELECIONA = ' + QuotedStr('S'); // filtra os registros selecionados cdsGrid.Filtered := True; // ativa o filtro cdsGrid.First; // posiciona o cursor no primeiro registro while not cdsGrid.Eof do begin edtNumero.Text := cdsGrid.FieldByName('TELEFONE').AsString; timerBtnAbrirNavegador.Interval := 20500; timerBtnAbrirNavegador.Enabled := True; timerBtnFecharNavegador.Interval := 30000; timerBtnFecharNavegador.Enabled := True; ShellExecute(Handle,'Open','firefox.exe',PChar(edtUrl.Text + edtNumero.Text),'C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Arquivos de programas\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Mozilla Firefox', SW_SHOWNORMAL); cdsGrid.Next; end; end;
Emerson Nascimento
Mais Posts
10/09/2018
Emerson Nascimento
procedure TForm1.Button1Click(Sender: TObject); begin Clipboard.AsText := memoMensagem.Text; cdsGrid.Filter := 'SELECIONA = ' + QuotedStr('S'); // filtra os registros selecionados cdsGrid.Filtered := True; // ativa o filtro cdsGrid.First; // posiciona o cursor no primeiro registro timerBtnAbrirNavegador.Interval := 20500; timerBtnAbrirNavegador.Enabled := True; timerBtnFecharNavegador.Interval := 30000; timerBtnFecharNavegador.Enabled := True; while not cdsGrid.Eof do begin edtNumero.Text := cdsGrid.FieldByName('TELEFONE').AsString; // esta linha é realmente necessária? ShellExecute(Handle,'Open','firefox.exe',PChar(edtUrl.Text + edtNumero.Text),'C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Arquivos de programas\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Mozilla Firefox', SW_SHOWNORMAL); cdsGrid.Next; end; end;
10/09/2018
Bruno Henrique
edtNumero.Text := cdsGrid.FieldByName('TELEFONE').AsString; // esta linha é realmente necessária?
Então, como são vários números e eles estão em um clientdataset, para ir abrindo no navegador, foi o único que achei de jogar no edit, tem outro jeito???
Grato
11/09/2018
Bruno Henrique
Então, ainda estou sem solução!O while não deu certo, e continua executando apenas um registro, ele não passa para o próximo, faz a ação só no primeiro registro, fiz como orientado mas não deu certo.Qual ajuste posso fazer?
procedure TForm1.Button1Click(Sender: TObject); begin Clipboard.AsText := memoMensagem.Text; cdsGrid.Filter := 'SELECIONA = ' + QuotedStr('S'); // filtra os registros selecionados cdsGrid.Filtered := True; // ativa o filtro cdsGrid.First; // posiciona o cursor no primeiro registro while not(cdsGrid.eof) do begin cdsGrid.Edit; edtNumero.Text := cdsGrid.FieldByName('TELEFONE').AsString; ShellExecute(Handle,'Open','firefox.exe',PChar(edtUrl.Text + edtNumero.Text),'C:\\Arquivos de programas\\Mozilla Firefox', SW_SHOWNORMAL); cdsGrid.Next; cdsGrid.Last; end; timerBtnAbrirNavegador.Interval := 30000; timerBtnAbrirNavegador.Enabled := True; timerBtnFecharNavegador.Interval := 45000; timerBtnFecharNavegador.Enabled := True; end;
11/09/2018
Bruno Henrique
Ainda estou sem solução!!! Alguém poderia me ajudar?
12/09/2018
Emerson Nascimento
13/09/2018
Bruno Henrique
Desculpa, vacilei com o cdsGrid.Last, agora deu certo, funcionou como eu queria.Muito Obrigado pela atenção!!!
Abraços
Clique aqui para fazer login e interagir na Comunidade :)