Funkce so:dialog() musí obsahovat fragmenty kódu pro práci s dialogovými boxy. Při jakékoliv práci s dialogovým boxem musíme nejprve dialog načíst. Načtení dialogu se uskuteční pomocí následující funkce:
(setq id (load_dialog "cesta/vyber.dcl"))
V dialogu bude zadávání středu soustředných kružnic / n-úhelníků realizováno pomocí tlačítka, které schová dialog a umožní uživateli vybrat střed kliknutím myši ve výkresu. K zapamatování nastavení prvků dialogu použijeme připravený asociační seznam uložený v proměnné gl_pam_hodnoty.
Teoreticky bychom mohli použít dva typy seznamů - klasický nebo asociační seznam. Při použití klasického seznamu musíme dávat pozor na pořadí uložených prvků. Při použití asociačního seznamu nemusíme dbát na pořadí, protože hodnoty proměnných v seznamu jsou asociovány s klíčem, který jednoznačně určuje příslušnou hodnotu.
Po uspěšném načtení dialogu ze souboru .dcl musíme zkontrolovat jestli soubor obsahuje požadovaný dialog. Kontrolu správnosti načteného dialogu provedeme pomocí následující funkce:
(if (not (new_dialog "vyber" id)) ;;; není-li jméno dialogu vyber tak skonči (progn (alert "\nDošlo k chybě, dialog vyber nelze zobrazit!!!") (exit) ) )
Neobsahuje-li zadaný soubor požadovaný dialog, běh aplikace je ukončen chybovou zprávou "Došlo k chybě, dialog vyber nelze zobrazit!!!"
Proběhli-li všechny výše uvedené testy dialogu v pořádku, můžeme předat hodnoty z asociačního seznamu obsahující jednotlivá nastavení dialogových prvků gl_pom_hodnoty jednotlivým prvkům dialogového boxu:
(set_tile "jméno_prvku" (cdr (assoc "jméno_prvku" gl_pom_hodnoty)))
Výše uvedená funkce získá pomocí funkce assoc tečka dvojici klíč.hodnota z asociačního seznamu gl_pom_hodnoty. Výsledek je předán funkci cdr, která rozdělí tečka dvojici a část "hodnota" předá funkci set_tile , která na takto získanou hodnotu nastaví dialogový prvek s klíčem "jméno_prvku". Je dobré si uvědomit, že proměnná hodnota musí být typu řetězec.
Získání hodnoty z dialogového prvku se uskuteční pomocí funkce action_tile :
(action_tile "jméno_prvku" "zpracující_funkce $value $reason" )
Funkce action_tile se aktivuje při uživatelově interakci s dialogovým prvkem. Funkce action_tile předá hodnotu, na kterou byl dialogový prvek nastaven a kód určující jaká akce uživatele vyvolala akci dialogového prvku. Tyto dvě hodnoty jsou předány zpracující_funkci, která vyhodnotí akci.
V případě, že potřebujeme zakázat použití některé z položek dialogového boxu, použijeme funkci mode_tile:
(mode_tile "jméno_prvku" kód)
Zakázání editace položky dialogového boxu je uskutečněno použitím kódu 1, opětovné povolení umožní kód 0.
Na závěr funkce SObjekty nesmíme zapomenout použít funkce unload_dialog , která odstraní načtený dialog z paměti:
(unload_dialog id)
Id je proměnná identifikující dialogový box - vrací ji funkce load_dialog .