terça-feira, 29 de maio de 2007

Capturando objetos da GS

Um exercício interessante para quem está começando a se aventurar no mundo da OO é modificar a aparência de alguns objetos na tela, através dos métodos que cada um deles oferece. Quem utiliza o Dialog System pode capturar os objetos da GS através de um simples procedimento. Vamos, por exemplo, capturar um botão da GS, passo a passo:

- Temos que definir a classe PushButton na Class-Control, no início do programa, logo depois do Program-ID:

program-id. Teste.
class-control
.
....PushButton is class "pushbutt".

- No fonte cobol, defina duas variáveis que vão servir de referência ao objeto. São os "handles".
Defina também a variável que vai receber o objeto "pushbutton".

working-storage section.
77 handle8 pic 9(08) comp-x value zeros.
77 handle9 pic 9(09) comp-5 value zeros.
77 umBotao object reference value null.

- Levando-se em consideração que estamos utilizando vocabulários, vamos pegar o "handle" do botão e a partir dele, criar um objeto utilizando o método da classe PushButton:

PegarObjetoBotao section.
...move-object-handle PB-GRAVAR handle8
...move handle8 to handle9
...invoke PushButton "fromHandleWithClass" using handle9 PushButon
..........returning umBotao


- A partir daí, nós temos um botão da GS na variável umBotao, como um objeto. Com esse objeto em mãos, podemos invokar quaisquer métodos para manipular o comportamento e o visual do botão, sem recorrer aos comandos do Dialog System. Utilize, por exemplo, o método a seguir:

invoke umBotao "hide"

- É um método simples, que vai fazer desaparecer o botão. Para mostrá-lo novamente, utilize o método "show":

invoke umBotao "show"

Esse exemplo pode ser utilizado também para outros objetos da GS, como window, selectionbox, listbox, etc. Não esqueça que para cada um desses objetos, a definição das classes correspondentes deve ser feita no início do programa, na class-control. Consulte os arquivos de ajuda (MFNXCL30.chm ou MFNXCL31.chm) para conhecer os métodos que podem ser utilizados para cada classe.

2 comentários:

Anônimo disse...

Muito bom este recurso. Apenas tenho uma dúvida, quando utilizo este recurso os eventos definidos no dialogo do entry-field no funcionam mais. Porque ?

Anônimo disse...

É Sempre bom lembrar que você necessita não só gerar o Vocabulary dele como tbm deve fazer um copy em seu programa.... ^^ isso ajuda um pouco...