Vytvoření kostry ovládání dialogového boxu - dopsání kódu zástupné funkce (so:dialog )

Přehled informací

Načtení dialogového boxu

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.

Rozdíl mezi asociačním a klasickým seznamem

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.

Kontrola úspěšnosti načtení dialogového boxu

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

Předání hodnot dialogovým prvkům

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

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.

Zakázání použití některé z položek dialogového boxu

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.

Odstranění načteného dialogu z paměti

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 .