Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
lml.lucas

[Resolvido] Alterando valor de radio bottun

Recommended Posts

Pessoal, estou tentar fazer com que o delphi clique automaticamente em radio button, mas ta difícil... n consigo de nenhuma maneira..

Estou usando webbrowser, no delphi xe2

Tentei usar inumeros codigos, nenhum deu certo

E esse é o codigo do html, no caso eu quero selecionar o ultimo check

<label> <input type="radio" class="radio" name="c" value="2"
checked="checked" />
Check 1 </label>
<br /> <label> <input type="radio" class="radio" name="c"
value="3" />
Check 2 </label> <br /> <label> <input type="radio" class="radio" name="c"
value="4" />
Check 3 </label>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pessoal, estou tentar fazer com que o delphi clique automaticamente em radio button, mas ta difícil... n consigo de nenhuma maneira..

Estou usando webbrowser, no delphi xe2

Tentei usar inumeros codigos, nenhum deu certo

E esse é o codigo do html, no caso eu quero selecionar o ultimo check

<label> <input type="radio" class="radio" name="c" value="2"
checked="checked" />
Check 1 </label>
<br /> <label> <input type="radio" class="radio" name="c"
value="3" />
Check 2 </label> <br /> <label> <input type="radio" class="radio" name="c"
value="4" />
Check 3 </label>

Olá,

O que você se refere a "clicar"? É no sentido de marcar, algo como "posição padrão"?

Eu não manjo muito de Delphi, mas se for um "objeto", tente ver se tem um atributo que serve para identificar qual radio está marcado ou algo do tipo, ou seja, "ao clicar no radio, qual resultado é encontrado??? daí faça "esse resultado" manualmente!"...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, acho que o problema ta em identificar o objeto

No meu caso eu tenho tentei identificar primeiro ele com o name, e depois do o value ( até por que é o unico atributo que difere os radio buttons)

Mas não consegui... quando eu coloco no delphi ele da erro no value

E o que eu quero fazer... é selecionar o check 3... Na pagina da web ta selecionado o check 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas,

Pessoal, estou tentar fazer com que o delphi clique automaticamente em radio button, mas ta difícil... n consigo de nenhuma maneira..

Estou usando webbrowser, no delphi xe2

Tentei usar inumeros codigos, nenhum deu certo

E esse é o codigo do html, no caso eu quero selecionar o ultimo check

<label> <input type="radio" class="radio" name="c" value="2"
checked="checked" />
Check 1 </label>
<br /> <label> <input type="radio" class="radio" name="c"
value="3" />
Check 2 </label> <br /> <label> <input type="radio" class="radio" name="c"
value="4" />
Check 3 </label>

Cara, já faz um bom tempo que não mexo com esses recursos do Delphi, mas vamos lá, recordar é viver.. :lol:

Para interagir via código com objetos da página HTML vinculada ao WebBrowser, você vai precisar lançar mão do OLE (Object Linking and Embedding), e para tanto, usando a propriedade OleObject do TWebBrowser.

Os objetos que podem ser acessados estão aqui: http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser_properties.aspx

Só que você precisa adicionar id's aos controles de rádio do seu formulário para que possam ser referenciados individualmente. Ficariam assim:

<label><input [B]id="rd1"[/B] type="radio" class="radio" name="c" value="2" checked="checked" />Check 1</label>
<br />
<label><input [B]id="rd2"[/B] type="radio" class="radio" name="c" value="3" />Check 2</label>
<br />
<label><input [B]id="rd3"[/B] type="radio" class="radio" name="c" value="4" />Check 3</label>

No seu código Delphi, você vai fazer isto:

WebBrowser1.OleObject.Document.All.rd3.Checked := True;

O terceiro rádio será selecionado.

É apenas uma amostra do que pode ser feito. Os objetos (cor, altura, tamanho, etc) da página podem ser modificados programaticamente. Esses objetos são indexados (podem também ser referenciados por índices, como um vetor).

O Help do Delphi do XE2 deve ter isso explicado.

[]'s

LNW

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O hmtl eu não posso modificar.. n posso colocar os Ids :/

tenho que tentar identificar de outra maneira

Esse aqui é a parte do html mais completo...

com o nome do div...

talvez tenha como identificar pelo nome do div

 <div class="option">
<label> <input type="radio" class="radio" name="c" value="2"
checked="checked" />
check 1 </label>
<br /> <label> <input type="radio" class="radio" name="c"
value="3" />
check 2 </label> <br /> <label> <input type="radio" class="radio" name="c"
value="4" />
check 3 </label>

</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas,

O hmtl eu não posso modificar.. n posso colocar os Ids :/

tenho que tentar identificar de outra maneira

OK.

Dá pra selecionar os elementos pela tag e depois acessá-los por um índice.. Você tem muitos controles de entrada de dados (input)?

Aqui, você retorna na variável inteira i a quantidade de elementos de entrada (inputs) encontrados no formulário:

i := WebBrowser1.OleObject.Document.All.Tags('input').Length;

Para o seu trecho de código acima, ele retornaria o valor 3. Os elementos são referenciados através de índices que começam em 0 (zero). No seu caso, de 0 a (i - 1), ou seja, 0 a 2. Valeu? Então, para acessá-lo você faria:

WebBrowser1.OleObject.Document.All.Tags('input').Item(i-1).Checked := True;

Se quisesse, poderia especificar o valor do índice diretamente: Item(2); só não pode extrapolar os limites, por exemplo, meter um Item(3).

Os índices dos elementos correspondem à ordem em que aparecem no formulário. Portanto, o primeiro elemento input tem índice 0, o segundo índice 1, e assim por diante.

Bom, dado o exemplo que você apresentou acima, essa poderia ser uma solução.

[]'s

LNW

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×