Fórum Ajuda com While Que não Funciona #597023
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
Curtir tópico
+ 0Post 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
Gostei + 1
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;Gostei + 1
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
Gostei + 0
10/09/2018
Bruno Henrique
Grato
Gostei + 0
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;Gostei + 0
11/09/2018
Bruno Henrique
Ainda estou sem solução!!! Alguém poderia me ajudar?
Gostei + 0
11/09/2018
Raimundo Pereira
Chama no skype sac@p2tecnico.com.br
Gostei + 0
12/09/2018
Emerson Nascimento
Gostei + 0
13/09/2018
Bruno Henrique
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)