Programando quadros de diálogo. A linguagem DCL. Códigos fonte de exemplos diversos, começando com quadros muito simples até os mais complicados... |
Em DCL, todas as palavras reservadas devem estar em minúsculas.
|
dup1_01 : dialog
{
label = "E.Fernal Software";
initial_focus = "ins-val";
: edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; }
ok_cancel_help;
}
dup1_02 : dialog
{ label = "E.Fernal Software";
initial_focus = "ins-val";
: edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; }
: radio_row { label = "Unidade métrica";
: radio_button { label = "Milímetros"; key = "mm"; value = 1; }
: radio_button { label = "Centímetros"; key = "cm"; }
: radio_button { label = "Metros"; key = "me"; }
}
: spacer { width = 0.75; }
ok_cancel_help;
}
dup1_03 : dialog
{ label = "E.Fernal Software";
initial_focus = "ins-val";
: edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; }
: radio_row { label = "Unidade métrica";
: radio_button { label = "Milímetros"; key = "mm"; value = 1; }
: radio_button { label = "Centímetros"; key = "cm"; }
: radio_button { label = "Metros"; key = "me"; }
}
: spacer { width = 0.75; }
: row
{
: button { label = "Layer >"; key = "la"; fixed_width = true; }
: text { label = ""; key = "LA"; width = 35; }
}
: spacer { width = 0.75; }
ok_cancel_help;
}
;|
INÍCIO DE COMENTÁRIOS
'dup1_03' é o nome do quadro de diálogo. Este nome deverá ser digitado, em sua
rotina AutoLISP, exatamente como está neste arquivo dcl, no trecho
(NEW_DIALOG "dup1_03" dcl_id)
Caso contrário, o carregamento deste quadro de diálogo fracassará.
'initial_focus' ativa o campo 'edit_box' cuja 'key' é "ins-val". Ao ser lançado,
o usuário poderá imediatamente digitar o valor deste campo.
'radio_row' abre uma caixa para uma linha de radio_buttons. Neste caso, inserimos
3 destes componentes. Eles são excludentes : sòmente um poderá estar assinalado.
O retorno é "1" para assinalado e "0" para vasio. Neste caso poderemos também
atribuir à uma variável, no caso 'unidade_metrica', a chave do componente assinalado
EXEMPLO :
(FOREACH x '("mm" "cm" "me")
(ACTION_TILE x "(SETQ unidade_metrica $key)")
)
Colocamos um espaçamento de 0.75 simplesmente por motivos estéticos...
'row' nos permite colocar uma série de componentes em uma linha: neste caso,
temos um 'button' e um 'text'.
Finalmente, usamos um componente definido no arquivo "BASE.DCL" do AutoCAD©,
neste caso 'ok_cancel_help', que insere um botão "OK", cuja chave é "accept", um botão
"Cancel", cuja chave é "cancel" e, finalmente, um botão "Help", cuja chave é "help"
FIM DE COMENTÁRIOS
|;
Palavras chave da linguagem DCL
Em AZUL, palavras reservadas que indicam componentes
Em VERMELHO, palavras reservadas que indicam atributos dos componentes
@include
diretiva de inclusão, permite que você defina clusters em um arquivo à parte,
e o inclua em todas os demais arquivos .DCL
SINTAXE @include "c:\\curso\\dcl\\base.dcl"
alignment
define o alinhamento de componentes de quadros de diálogo.
EXEMPLO : text { label = "Componente 'text' com alinhamento normal"; }
: text { label = "Componente 'text' com alinhamento 'centered'";
alignment = centered; }
: text { label = "Componente 'text' com alinhamento 'right'";
alignment = right; }
O default é alinhamento pela esquerda.

allow_accept
propriedade dos tiles tipo 'edit_box', 'image_button' e 'list_box'
ativa o botão cuja propriedade 'is_default' seja 'true', quando um
destes componentes, com 'allow_accept = true', for selecionado
EXEMPLO : edit_box { label = "Digite texto";
key = "texto"; edit_width = 40; edit_limit = 55;
allow_accept = true;
}
aspect_ratio
define a proporção entre largura e altura de um componente 'image' ou
'image_button'
SINTAXE : image { key = "i1"; width = 40; aspect_ratio = 0.75; }
big_increment
aplica-se ao componente do tipo 'slider' e define o menor valor incremental
ao se deslizar o botão interno deste componente
EXEMPLO : slider { key = "Temperatura"; min_value = 0;
max_value = 100; small_increment = 1;
big_increment = 10;
}
boxed_column
abre uma caixa de enquadramento para uma coluna de componentes diversos,
permitindo um rótulo.
SINTAXE : boxed_column { label = "Lineweights";
[...demais componentes aqui...]
}

boxed_radio_column
abre uma caixa de enquadramento para uma coluna de 'radio_button',
permitindo um rótulo.
SINTAXE : boxed_radio_column { label = "Caixa de enquadramento";
[...demais componentes aqui...]
}

boxed_radio_row
abre uma caixa de enquadramento para uma coluna de 'radio_button'
SINTAXE : boxed_radio_row { label = "Iso&metric Snap/Grid";
: radio_button { label = "&left"; key = "left"; }
: radio_button { label = "&Top"; key = "top"; }
: radio_button { label = "&right"; key = "right"; }
}

boxed_row
abre uma caixa de enquadramento para uma linha de componentes diversos
SINTAXE : boxed_radio_row { label = "boxed_row";
[...demais-componentes aqui...]
}

button
insere um botão
SINTAXE : button { label = "Cores"; key = "btn1"; width = 12; }

cancel_button
insere um botão "Cancel"
SINTAXE cancel_button;

centered
propriedade de um alinhamento
EXEMPLO : text { label = "Escolha bloco"; alignment = centered; }
color
define a cor de um quadro de imagem 'image' ou 'image_button'
SINTAXE : image { key = "i1"; color = 0; width = 40; aspect_ratio = 0.5; }
color_palette_1_7 vide no BASE.DCL do AutoCAD
color_palette_1_9 vide no BASE.DCL do AutoCAD
color_palette_0_9 vide no BASE.DCL do AutoCAD
color_palette_250_255 vide no BASE.DCL do AutoCAD
column
abre uma coluna para componentes diversos
SINTAXE : column {
[...demais componentes aqui...]
}
concatenation
concatena strings em um componente 'text'
EXEMPLO : concatenation {
default_button vide no BASE.DCL do AutoCAD
default_dcl_settings
dialog
define um quadro de diálogo
SINTAXE MEU_DCL_01 : dialog { label = "Dcl número 1";
: text { label = "Teste de dcl"; alignment = centered; }
ok_only;
}
edit12_box vide no BASE.DCL do AutoCAD
edit32_box vide no BASE.DCL do AutoCAD
edit_box
abre um campo de edição de texto
SINTAXE : edit_box { label = "edit_box"; key = "raio";
edit_width = 12; edit_limit = 16;
}

edit_width
define a largura de um componente 'edit_box' - vide acima
errtile
abre um campo 'text' padronizado, cujo 'key' é "error".
SINTAXE errtile;
heigth
define a altura de componentes.
EXEMPLO : list_box { label = "Opções"; height = 12; width = 40;
key = "lista";
}
false
fcf_ebox vide no BASE.DCL do AutoCAD
fcf_ebox1 vide no BASE.DCL do AutoCAD
fcf_ibut vide no BASE.DCL do AutoCAD
fcf_ibut1 vide no BASE.DCL do AutoCAD
files_bottomdf vide no BASE.DCL do AutoCAD
files_topdfM vide no BASE.DCL do AutoCAD
fixed_width
assegura que o componente tenha somente a largura mínima necessária
EXEMPLO : button { label = "Largura"; key = "btn1"; fixed_width = true;
}
help_button
insere um botão "Help" padronizado, cujo 'key' é "help"
SINTAXE help_button;

icon_image
image
abre um quadro de imagem
SINTAXE : image { key = "img35"; width = 40; aspect_ratio = 0.77;
color = -15;
}

image_block
image_button
abre um quadro de imagem clicável
SINTAXE : image_button { key = "img36"; width = 40; aspect_ratio = 0.77;
color = -15;
}
info_button
insere um botão "Info" padronizado, cujo 'key' é "info"
SINTAXE info_button;

initial_focus
lança o foco sobre o tile especificado
SINTAXE initial_focus = "componente";
is_cancel
define um componente qualquer como componente de saida
EXEMPLO : button { label = "Encerra"; key = "sair";
is_cancel = true;
}
is_default
is_tab_stop
is_error_tile vide no BASE.DCL do AutoCAD
key
define a chave para cada um dos componentes
EXEMPLO : edit_box { label = "Altura em mm"; key = "altura";
edit_width = 12; edit_limit = 16;
}
label
define o rótulo de um componente - vide acima
list
insere um 'list_box' ou 'popup_list' com uma lista de strings
EXEMPLO : popup_list { label = "Opções"; key = "pop"; width = 30;
list = "Bloco 1\nBloco 2\nBloco 3\nBloco 4\nBloco 5";
}
list_box
abre um componente 'list'
SINTAXE : list_box { label = "AutoLISP"; key = "lista";
width = 28; height = 16;
}

multiple_select
permite selecionar mais de uma linha em componentes 'list_box' e/ou 'popup_list'
EXEMPLO : list_box { label = "AutoLISP"; key = "lista";
width = 28; height = 16; multiple_select = true;
}
o default é 'false' e não precisa ser inserido
ok_button
insere um botão 'OK' padronizado, cujo 'key' é "accept"
SINTAXE ok_button;

ok_cancel
insere um par de botões padronizados, sendo o primeiro 'OK' e o segundo
'Cancel', e cujos 'key' são "accept" e "cancel"
SINTAXE ok_cancel;

ok_cancel_help
insere três botões padronizados, sendo o primeiro 'OK', o segundo
'Cancel' e o terceiro 'Help', e cujos 'key' são "accept", "cancel" e "help"
SINTAXE ok_cancel_help;

ok_cancel_err
insere dois botões, o primeiro 'OK', cujo 'key' é "accept", o segundo 'Cancel',
com 'key' igual a "cancel" e uma linha 'errtile', cujo 'key' é "error"
ok_cancel_help_errtile
idem acima, com mais um botão "Help", cujo 'key' é "help"
ok_cancel_help_info
insere os botoes 'OK', 'Cancel', 'Help' e 'Info', cujos 'keys' são, respectivamente,
"accept", "cancel", "help" e "info"

ok_only
insere um botão 'OK' cujo 'key' é "accept", pré-definido no BASE.DCL do AutoCAD©

paragraph
popup_list
insere um componente tipo lista
SINTAXE : popup_list { label = "popup_list"; key = "pop1"; }

radio_column
abre uma coluna de 'radio_button'
SINTAXE : radio_column {
: radio_button { label = "Opção 1"; key = "opt1"; }
: radio_button { label = "Opção 2"; key = "opt2"; }
: radio_button { label = "Opção 3"; key = "opt3"; }
: radio_button { label = "Opção 4"; key = "opt4"; }
}

radio_row
abre uma linha de 'radio_button'
SINTAXE : radio_row {
: radio_button { label = "radio_button 1"; key = "opt1"; }
: radio_button { label = "radio_button 2"; key = "opt2"; }
}

retirement_button
right
row
abre uma linha de componentes
SINTAXE : row {
[...demais componentes aqui...]
}
slider
insere um componente deslizante
SINTAXE : slider { key = "sli"; min_value = 1; max_value = 100;
big_increment = 10; small_increment = 1;
}

small_increment
aplica-se ao componente do tipo 'slider' e define o menor valor incremental
ao se deslizar o botão interno deste componente
EXEMPLO : slider { key = "Temperatura"; min_value = 0;
max_value = 100; small_increment = 1;
big_increment = 10;
}
spacer
define um espaçamento entre componentes
SINTAXE : spacer { width = 3; }
spacer_0
um 'spacer' com espaçamento 0
SINTAXE spacer_0;
spacer_1
um 'spacer' com espaçamento 1
SINTAXE spacer_1;
std_rq_color vide no BASE.DCL do AutoCAD
swatch
tabs
aplica-se somente a componentes 'list_box' e 'popup_list', e define, nestes
componentes, os espaços de tabulação de um texto.
EXEMPLO : list_box { label = "Tabela 1"; key = "tabela1";
width = 80; height = 12;
tabs = "8 16 24 32 40";
}
text_part
text_25 vide no BASE.DCL do AutoCAD
toggle
define um componente assinável
SINTAXE : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; }

true
define uma propriedade como verdadeira
EXEMPLO : list_box { label = "Selecione"; key = "lista";
width = 40; height = 12;
multiple_select = true;
}
value
inicializa o valor de retorno do componente
EXEMPLO : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; }
acima, o 'toggle' estará assinalado na abertura do quadro de diálogo e
abaixo, estará desmarcado.
: toggle { label = "Deseja cotar?"; key = "cotar"; value = 0; }
o default é 0
width
define a largura de um componente
EXEMPLO : button { label = "Botão"; key = "b1"; width = 30; }
Exemplos diversos
////////// código fonte do quadro de diálogo da esquerda alo1 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } : button { key = "accept"; is_default = true; label = "OK"; fixed_width = true; alignment = centered; } } ////////// código fonte do quadro de diálogo da direita alo2 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } ok_button; }
Exemplos de rotinas do curso |
Exemplos de listas |
O BASE.DCL do AutoCAD© |
Home |