Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

Definição de Caixas de Diálogo

Os comandos da linguagem OpusWin, que permitem iniciar e terminar a definição de uma Caixa de Diálogo são: Dialog e EndDialog.

Comando DIALOG

O comando DIALOG serve para:

Sintaxe

DIALOG <xy, yi, xl, yl> [chars | units]

Onde:

As coordenadas e os tamanhos são parâmetros numéricos, com valor inicial a partir de zero. Podem ser especificados em "chars" (default da OpusWin) ou em "units" ("Dialog units").

Na falta de especificação, a linguagem OpusWin assume que, tanto as coordenadas que indicam a posição inicial, como os tamanhos de largura e altura das Caixas de Diálogo e dos controles, estão expressos em caracteres (opção chars).

Assim sendo, a sintaxe do comando, quando não informada a unidade de medida, assume-se como:

Dialog <coluna-inicial, linha-inicial, qtde-colunas, qtde-linhas> chars

O padrão chars da OpusWin permite maior compatibilidade com a programação OPUS para ambientes não gráficos e maior facilidade migração a partir de aplicativos com interface caractere.

A unidade de medida default é estabelecida através da opção (explícita ou implícita) [CHARS | UNITS] no comando Dialog, aplicando-se à Caixa de Diálogo como um todo, assim como a cada um dos controles nela incluídos. Porém, é possível especificar coordenadas e/ou tamanhos em unidades de medida diferentes do default estabelecido no comando Dialog, bastando especificar os valores numéricos (referentes a coordenadas e tamanhos), precedidos do sinal negativo. Esta facilidade permite uma maior precisão e flexibilidade na especificação das unidades de medida e, em conseqüência, uma apresentação visual mais correta.

Exemplo

Dialog 5,10,-80,-10

Observação

Neste exemplo, utilizamos o padrão OpusWin (chars). Assim sendo, a Caixa de Diálogo será posicionada na coluna 5 com linha 10 (a partir de zero), tendo 80 "Dialog units" (mais ou menos 20 colunas) de largura e 10 "Dialog units" de altura. O tipo e o tamanho da fonte especificados na opção font determinam, também, as dimensões reais da Caixa de Diálogo assim como o número de colunas e linhas.

Exemplo

O exemplo a seguir mostra como codificar uma Caixa de Diálogo e seus controles, utilizando a unidade de medida "chars", como default, porém utilizando, também, a unidade de medida "units" para especificar as coordenadas e tamanhos. Após o exemplo, explicaremos melhor as unidades de medida relacionadas às Caixas de Diálogo.

$nolib

prog

campo1, campo2 = ""

botao = -1

Dialog 5,10,36,08

  caption "DialogBox com CHARS/UNITS"

  style WS_OVERLAPPEDWINDOW

  ltext "Título 01:" NULL 01,02,10,01

  EditText NULL campo1 12,02,-80,01

  ltext "Título 02:" null 01,04,10,01

  EditText NULL campo2 12,04,-80,01

  DefPushButton "&Ok" botao 12,06,08,-12 IDOK

  PushButton "&Quit" NULL 22,06,08,-12 IDOK

EndDialog

return

Veja como vai ser apresentado na tela o exemplo acima:

Observação

Quando especificada a opção "units", as coordenadas e tamanhos estão baseados em unidades de medida lógicas, não reais. As funções gráficas e de texto do Windows operam sobre unidades lógicas, que são traduzidas em unidades físicas (pixels) quando o objeto é efetivamente exibido na tela. Ocorre, então, um mapeamento, executado pelo Windows. O tipo de mapeamento (existem vários) utilizado altera a maneira como as unidas lógicas ("Dialog units") são traduzidas em unidades físicas ("pixels"), que dependem, por exemplo, das características do monitor utilizado pelo usuário. Desta forma, o programa OpusWin se torna, de alguma maneira, independente das características físicas dos dispositivos de exibição utilizados, podendo ser utilizado em qualquer ambiente e configuração Windows.

Para compreender um pouco melhor este assunto, podemos estabelecer os seguintes conceitos básicos:

Exemplo

Dialog 20,80,160,88 units

Observação

No exemplo acima, usamos a opção units. Assim, para essa Caixa de Diálogo em particular, o canto superior esquerdo está, mais ou menos, a 5 caracteres da esquerda da área do usuário na janela principal e a 10 caracteres, mais ou menos, do alto. A caixa de diálogo tem 40 colunas de largura e 11 linhas de altura.

O exemplo a seguir mostra como codificar uma Caixa de Diálogo e seus controles utilizando a opção units, especificando as coordenadas e tamanhos em unidades lógicas, ou seja, "unidades de diálogo".

Exemplo

$nolib

prog

decl vetc[6]=space(40)

campo1, campo2 = ""

botao = -1

Dialog 20,40,256,70 units

  caption "Exemplo de Caixa de Diálogo com a opção UNITS"

  style WS_POPUP WS_CAPTION WS_SYSMENU DS_CONTEXTHELP

  ltext "Título um:" NULL 4,12,48,8

  ComboBox vetc campo1 56,08,160,8

  ltext "Título dois:" null 4,28,48,8

  ComboBox vetc campo2 56,24,160,8

  DefPushButton "&Ok" botao 56,48,24,16 IDOK

  PushButton "&Quit" NULL 84,48,24,16 IDOK

  PushButton "&Browse" NULL 220,08,32,12 IDOK

EndDialog

return

Observação

Veja como vai ser apresentado na tela o exemplo acima:

Comando EndDialog

O comando EndDialog serve para terminar a definição de um Quadro de Diálogo.

Sintaxe

EndDialog

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!