Você está na página 1de 11

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

Programando quadros de dilogo. A linguagem DCL. Cdigos fonte de exemplos diversos, comeando com quadros muito simples at os mais complicados...

Primeira parte...

Em DCL, todas as palavras reservadas devem estar em minsculas. Os valores de chaves ['key'] e rtulos ['label'], alm do prprio nome do dilogo, podem estar em maisculas ou minsculas. No poder haver, em uma definio de quadro de dilogo, 'keys' com o mesmo nome. Se isto ocorrer, o usurio receber a mensagem 'Redefining key...' em sua rotina AutoLISP, alm do que voc ter uma indefinio dentro de sua rotina. As palavras "LAYER", "Layer", "LAyer" e "LAYer" so todas distintas e poderiam ser usadas em uma mesma definio de quadro de dilogo.

Cdigo fonte do quadro de dilogo acima...

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; }

Cdigo fonte do quadro de dilogo acima...

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 mtrica"; : radio_button { label = "Milmetros"; key = "mm"; value = 1; } : radio_button { label = "Centmetros"; key = "cm"; } : radio_button { label = "Metros"; key = "me"; } } : spacer { width = 0.75; } ok_cancel_help; }

1 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

Cdigo fonte do quadro de dilogo acima...

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 mtrica"; : radio_button { label = "Milmetros"; key = "mm"; value = 1; } : radio_button { label = "Centmetros"; 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; }

;| INCIO DE COMENTRIOS 'dup1_03' o nome do quadro de dilogo. Este nome dever ser digitado, em sua rotina AutoLISP, exatamente como est neste arquivo dcl, no trecho (NEW_DIALOG "dup1_03" dcl_id) Caso contrrio, o carregamento deste quadro de dilogo fracassar. 'initial_focus' ativa o campo 'edit_box' cuja 'key' "ins-val". Ao ser lanado, o usurio 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 so excludentes : smente um poder estar assinalado. O retorno "1" para assinalado e "0" para vasio. Neste caso poderemos tambm atribuir uma varivel, no caso 'unidade_metrica', a chave do componente assinalado EXEMPLO : (FOREACH x '("mm" "cm" "me") (ACTION_TILE x "(SETQ unidade_metrica $key)") ) Colocamos um espaamento de 0.75 simplesmente por motivos estticos... 'row' nos permite colocar uma srie 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 boto "OK", cuja chave "accept", um bot "Cancel", cuja chave "cancel" e, finalmente, um boto "Help", cuja chave "help" FIM DE COMENTRIOS |;

Segunda parte...

2 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

Palavras chave da linguagem DCL Em AZUL, palavras reservadas que indicam componentes Em VERMELHO, palavras reservadas que indicam atributos dos componentes

@include diretiva de incluso, 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 dilogo. 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 boto 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 proporo 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 boto 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 rtulo. SINTAXE : boxed_column { label = "Lineweights"; [...demais componentes aqui...] }

3 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

boxed_radio_column abre uma caixa de enquadramento para uma coluna de 'radio_button', permitindo um rtulo. 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 boto SINTAXE

: button { label = "Cores"; key = "btn1"; width = 12; }

4 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

cancel_button insere um boto "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 color_palette_1_9 color_palette_0_9 color_palette_250_255 vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD 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 dilogo SINTAXE MEU_DCL_01 : dialog { label = "Dcl nmero 1"; : text { label = "Teste de dcl"; alignment = centered; } ok_only; }

edit12_box edit32_box

vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD

edit_box abre um campo de edio 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.

5 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

EXEMPLO } false

: list_box { label = "Opes"; height = 12; width = 40; key = "lista";

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 mnima necessria EXEMPLO : button { label = "Largura"; key = "btn1"; fixed_width = true; } help_button insere um boto "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 clicvel SINTAXE : image_button { key = "img36"; width = 40; aspect_ratio = 0.77; color = -15; } info_button insere um boto "Info" padronizado, cujo 'key' "info" SINTAXE info_button;

6 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

initial_focus lana 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 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 rtulo de um componente - vide acima list insere um 'list_box' ou 'popup_list' com uma lista de strings EXEMPLO : popup_list { label = "Opes"; 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; } vide no BASE.DCL do AutoCAD

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;

7 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

} o default 'false' e no precisa ser inserido ok_button insere um boto 'OK' padronizado, cujo 'key' "accept" SINTAXE ok_button;

ok_cancel insere um par de botes padronizados, sendo o primeiro 'OK' e o segundo 'Cancel', e cujos 'key' so "accept" e "cancel" SINTAXE ok_cancel;

ok_cancel_help insere trs botes padronizados, sendo o primeiro 'OK', o segundo 'Cancel' e o terceiro 'Help', e cujos 'key' so "accept", "cancel" e "help" SINTAXE ok_cancel_help;

ok_cancel_err insere dois botes, 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 boto "Help", cujo 'key' "help" ok_cancel_help_info insere os botoes 'OK', 'Cancel', 'Help' e 'Info', cujos 'keys' so, respectivamente, "accept", "cancel", "help" e "info"

ok_only insere um boto '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'

8 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

SINTAXE

: radio_column { : radio_button { label = "Opo 1"; key = "opt1"; } : radio_button { label = "Opo 2"; key = "opt2"; } : radio_button { label = "Opo 3"; key = "opt3"; } : radio_button { label = "Opo 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 boto interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } spacer define um espaamento entre componentes SINTAXE : spacer { width = 3; } spacer_0 um 'spacer' com espaamento 0 SINTAXE spacer_0; spacer_1 um 'spacer' com espaamento 1 SINTAXE spacer_1; std_rq_color vide no BASE.DCL do AutoCAD

9 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

swatch tabs aplica-se somente a componentes 'list_box' e 'popup_list', e define, nestes componentes, os espaos de tabulao 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 assinvel 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 dilogo 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 = "Boto"; key = "b1"; width = 30; }

Exemplos diversos

////////// cdigo fonte do quadro de dilogo da esquerda alo1 : dialog { label = "Como criar quadros de dilogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } : button { key = "accept"; is_default = true; label = "OK"; fixed_width = true; alignment = centered; } } ////////// cdigo fonte do quadro de dilogo da direita

10 de 11

26/09/2012 21:04

Criando quadros de dilogo...

http://www.gr-acad.com.br/paginas/dup1.htm

alo2 : dialog { label = "Como criar quadros de dilogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } ok_button; }

Exemplos de rotinas do curso

Exemplos de listas

O BASE.DCL do AutoCAD

Home

11 de 11

26/09/2012 21:04