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".
- 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.
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.
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.