Melhorando o programa

Por:

Agora vamos nos aprofundar mais um pouco… Para começar, o título da janela. Como todo o trabalho pesado é feito pelo componente do IE, você não terá muita dificuldade nem precisará de muitas linhas de código para identificar o título da página atual: o IE pode informar ao programa, e então o programa usa o texto do título onde quiser. Selecione o componente web, e acesse o evento “onTitleChange”. A essa altura isso é moleza para você.

Esse evento, como o nome sugere, será chamado toda vez que o título da página for alterado. Veja a sintaxe dele:

procedure TForm1.webTitleChange(Sender: TObject; const Text: WideString);

Em se tratando de eventos, os valores entre parênteses funcionam de forma parecida com os “parâmetros” passados às funções. Mas aqui, é ao contrário. Em vez de você passar um valor para uma função [como o feito em web.Navigate(pagina…)], é a função que retorna valores para você, e você faz o que quiser com eles. Aqui o “Sender” não interessa, mas sim o “Text”. Ele contém justamente o título da página. Digite, então, nesse evento onTitleChange:

Caption := Text;

Pronto 🙂

Rode o programa e veja, o título da janela será o título da página. Se você quiser incluir o nome do programa também, pode fazer isso:

Caption := Text + ‘ – Meu Navegador’;

Assim o título da janela será o título da página, separado por um traço e o nome do seu programa.

Quando o programa é aberto, nenhuma página está carregada ainda, e o título ficaria o “Form1”, aplicado pelo Delphi ao criar o formulário. Para trocá-lo, basta editar a propriedade “Caption” do formulário. Eis aqui uma outra dica para iniciantes… O formulário tem o painel, alinhado no topo, e o componente do navegador, alinhado no restante da janela. Não há lugar vazio para clicar e selecionar o formulário 🙁 Não se desespere. No Inspetor de Objetos, todos os componentes são listados pelo nome. Clique na listinha dele, localize o formulário (terá o nome “Form1”, se você não alterou), e então altere a propriedade “Caption”.

fig14seleção de qualquer objeto já inserido, pelo Inspetor de Objetos

De forma similar ao título, o IE fornece também o texto desejado para a barra de status, quando ele for alterado. Isso deixa o programa melhor, vamos então colocar uma barra de status 🙂

Selecione o componente “StatusBar” na aba “Win32”, e coloque-o no formulário. Não dá para clicar no formulário porque os outros componentes estão por cima. Não tem problema, pode colocar em cima do componente do IE (o quadro branco). Ele não comporta objetos dentro dele (como faz o painel), então o objeto será inserido no formulário mesmo. A barra de status já se ajusta sozinha na tela, na parte inferior.

fig15o componente “StatusBar”, “barra de status”

Particularmente, a barra de status padrão é dividida em partes, em painéis (quadrinhos). Uma propriedade dela ajusta para que seja dividida em uma parte só, para coisas mais simples, e é o ideal para esse programa. É a propriedade “SimplePanel”. Ela é um valor booleano, que pode ser “sim” ou “não”. Na linguagem do programa, “True” (para sim, verdadeiro) ou “False” (para não, ou falso). Selecione a barra de status que você acabou de inserir, e na aba de propriedades do inspetor de objetos, localize essa propriedade “SimplePanel”. Deixe-a com o valor “True”. Agora vamos definir o texto que deverá aparecer…

Esse texto, como dito, é provido pelo próprio IE, e será atualizado automaticamente (seria o mesmo texto que aparece na barra de status do IE). Selecione o componente do navegador e procure o evento “onStatusTextChange”. Você não terá dificuldades, é basicamente a mesma coisa aplicada para o título, porém, jogando o texto retornado por ele na barra de status:

StatusBar1.SimpleText := Text;

O texto da barra de status é definido pela propriedade “SimpleText”. Se a propriedade “SimplePanel” não estivesse definida para “True”, o texto não apareceria, e o meio de colocá-lo seria outro (usando o índice do quadrinho desejado dela, fica de fora do objetivo desse texto explicar isso).

Falta ajustar uma coisa… Você que navega na Internet já deve ter reparado que os navegadores trocam o texto da barra de endereços conforme mudam de página. No seu programa, você deve ter percebido que o texto não foi alterado, nem depois de dar [enter], nem ao navegar por outras páginas “clicando” nos links. O programa não tem como saber que você quer que ele atualize o endereço, aliás, nem tem como saber qual é o campo de endereço, se você não informá-lo. Isso pode ser obtido com uma propriedade do controle do IE, que retorna o endereço (URL) da página que ele contém. No evento da barra de endereços você fez o navegador abrir o site digitado na mesma. Agora você vai fazer o contrário: forçar o navegador a jogar o endereço da página para a barra de endereços.

Para isso, selecione o controle do IE, e edite o evento “onDownloadComplete”. No código para ele, digite:

Edit1.Text := web.LocationURL;

Você basicamente troca o texto do campo Edit1 (que é o campo da barra de endereço) pelo endereço da página nova, quando ela for carregada. Esse endereço é obtido pela propriedade “LocationURL” do controle do IE.

Veja o programinha como ficou, com um site aberto:

fig16
Para fazer outras coisas, como imprimir, salvar a página, etc… Você deverá estudar mais a fundo o componente compartilhado do IE. Dá um trabalhinho legal, mas certamente é mais simples do que criar um navegador do zero 🙂 E saiba que algumas coisas nem dará para fazer. Isso porque o IE é um programa pronto e fechado, você não tem como modificá-lo. O que você faz com isso, é embutir um quadro do IE pronto, com os recursos que ele provê, e então usá-los para o seu programa. Mas já é um bom começo, tanto para quem não sabia nada de programação até ler este texto, como para quem procurava um meio de embutir páginas HTML dentro dos seus programas.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X