FastFiber

aanpassen van menu's

Gestart door fcbsam, wo 21 02 2007, 16:48:12

Vorige topic - Volgende topic

WebRacer

ik heb hier eens mijn oog op geworpen, maar dit is niet simpel e... we krijgen maar 1 subroutine om in te werken, de DCL is zeker al onvolledig, en of die while zal werken tijdens het aanspreken van uw dialoogbox betwijfel ik ook..... maar enfin dit is wat ik al aangepast heb:

(defun HSB-DAKP-Plaat-edit ( / k j l TileVar Soort)
  (setq Spaanderplaten '( "Houtsp.plaat MUF" "Houtsp.pl. MUF met vellingkant" "Houtsp.plaat MUF wit" "H.sp.pl. MUF wit gegrond" "Naturspan-0" "Naturspan-0 met vellingkant" "Naturspan-0 wit gegrond" ))
  (setq k 0)
  (setq j 0)
  (setq TileVar "")
  (new_dialog "HSB_PLAAT_EDIT" (load_dialog DAKP))
  (start_list "Spaanderplaten")
  (while (< k (strlen PlaatVar))
    (setq k (+ k 1))
    (setq l (substr PlaatVar k 1))
    (if (= l ";")
      (progn
   (setq j (+ j 1))
   (setq tile (strcat "PlaatVar" (itoa j)))
   (if (get_tile tile)
     (set_tile tile tilevar))
   (if (= j 3)
     (setq Soort (atoi TileVar)))
   (setq TileVar "")
      );progn
      (setq TileVar (strcat TileVar l))))
  (if (Not Soort) (setq Soort 1)) ; indien geen soort gekozen = soort 1
  (HSB-DAKP-Plaat-Image Soort) ; aanspreken subroutine?? niet aanwezig
  (action_tile "cancel" "(setq HSB_OK nil)(done_dialog)")   
  (action_tile "accept" "(setq HSB_OK 1)(HSB-DAKP-Plaat-OK)(done_dialog)")
  (action_tile "Rechts" "(setq Soort (+ Soort 1))(if (> Soort 8) (setq Soort 1))(HSB-DAKP-Plaat-Image Soort)")
  (action_tile "Links"  "(setq Soort (- Soort 1))(if (< Soort 1) (setq Soort 8))(HSB-DAKP-Plaat-Image Soort)")
  (start_dialog)
  (done_dialog)
  (unload_dialog dia_id)
  (if (= HSB_OK 1)
      (programma verder lopen); hier verder programeren
      (exit))

)

als dit inderdaad een subroutine moet zijn, dan zal je deze moeten herbekijken vrees ik en er van uitgaan dat de dialoogbox appart moet staan zoals in deze struktuur:

(setq a a
   b b
   lijst "lijst van de onderdelen"
   enz enz....)
;laden dialoogbox
  (setq dia_id (load_dialog naam-dialoogbox))
  (new_dialog "dcl-file-naam" dia_id)
;instellen dialoogbox
  (start_list "lijst");starten van de lijst om ze zichtbaar te maken
  (action_tile "tile-x" "(subroutine aanspreken)"); als je tile-x aanspreekt >> subroutine starten
  (action_tile "cancel" "(SETQ ok_ nil)");cancel => ok_ op nil
;laten verschijnen van dialoogbox
  (start_dialog)
  (done_dialog)
;ontladen dialoogbox
  (unload_dialog dia_id)
;programma als ok_ niet nil is
  (if (= ok_ nil)
      (exit)
      (progn
   hier komt dan uw programma die de waardes uit het dialoogboxke gebruikt))
?

fcbsam

in bijlage vindt u het volledige dcl en lsp bestand.

HSB_BLOK_EDIT : dialog {
    label = "muurbeschrijving";
   
    :edit_box {
       label = "Dikte       ";
       key="PlaatVar1";
       width = 16;
    }
    :edit_box {
       label = "Omschrijving";
       key="PlaatVar2";
       width = 16;
    }
    :boxed_row {
        label="Verdeling";
        :button {
            label ="<";
            key = "Links";
        }
        :image {
            key="PlaatImage";
            aspect_ratio = 1.4;
            height=10;
        }
        :button {
            label =">";
            key = "Rechts";
        }
    }
    :edit_box {
        label= "A";
        key="PlaatVar4";
        width = 16;
    }
    :edit_box {
        label="B";
        key="PlaatVar5";
        width = 16;
    }
    ok_cancel;
}
HSB_PLAAT_EDIT : dialog {
    label = "Plaat beschrijving";
    :edit_box {
       label = "Dikte";
       key="PlaatVar1";
       width = 16;
    }
        : popup_list {
            popup_height = 4;
            label = "Omschrijving";
            value = "";
            key = "lijst";
            fixed_width_font = true;
            edit_width = 40;           
   }
       :boxed_row {
        label="Verdeling";
        :button {
            label ="<";
            key = "Links";
        }
        :image {
            key="PlaatImage";
            aspect_ratio = 1.4;
            height=10;
        }
        :button {
            label =">";
            key = "Rechts";
        }
    }
    :edit_box {
        label= "A";
        key="PlaatVar4";
        width = 16;
    }
    :edit_box {
        label="B";
        key="PlaatVar5";
        width = 16;
    }
    :edit_box {
        label="C";
        key="PlaatVar6";
        width = 16;
    }
    :edit_box {
        label="D";
        key="PlaatVar7";
        width = 16;
    }
    ok_cancel;
}

HSB_DETAIL_LIJST : dialog {
   label = "Keuze details";
      :row {
         :image {
            key="DetailImage";
            aspect_ratio = 1.4;
            height=16;
         }
         :column {
            :popup_list {
               key="DetailList";
               width = 20;
            }
            :text {
               key="DetailLabel2";
               width = 16;
            }
            :text {
               key="DetailLabel3";
               width = 16;
            }
            :text {
               key="DetailLabel4";
               width = 16;
            }
            :text {
               key="DetailLabel5";
               width = 16;
            }
            :text {
               key="DetailLabel6";
               width = 16;
            }
            :text {
               key="DetailLabel7";
               width = 16;
            }
            :text {
               key="DetailLabel8";
               width = 16;
            }
            :text {
               key="DetailLabel9";
               width = 16;
            }
            :text {
               key="DetailLabel10";
               width = 16;
            }
            :text {
               key="DetailLabel11";
               width = 16;
            }
            :text {
               key="DetailLabel12";
               width = 16;
            }
         }
      }   
      :row {
           :button {
               label= "Delete";
               key="Delete";
           }
           :button {
               label = "Cancel";
               key="cancel";
               is_cancel =true;
           }
      }
}




HSB_GAT_VAR : dialog {
   label = "Gat";
         :column {
            :edit_box {
               label="Omschrijving";
               key="Omschrijving";
               edit_width = 16;
            }
            :edit_box {
               label="Diameter ";
               key="Diameter";
               edit_width = 8;
            }
            :toggle {
               label="Boven ";
               key="Boven";
            }
            :toggle {
               label="Onder ";
               key="Onder";
            }
         }
   ok_cancel;
}




HSB_DAKP_OPENING : dialog {
   label = "Keuze openingen";
   :list_box {
        key="OpeningList";
        width = 40;
   }
   :row {
       ok_cancel;

       :button {
          label= "Delete";
          key="Delete";
       }
   }
   
}



HSB_OPENING_VAR : dialog {
    label = "Dakraam-beschrijving";
    :column {
        :boxed_column {
            :button {
               key="OpeningKeuze";
               label= "D E F A U L T";
            }
            :button {
               key="SaveDefault";
               label= "Save as default";
            }
        }
        :edit_box {
           label="Omschrijving";
           key="Omschrijving";
           edit_width = 16;
        }
        :boxed_column {
            label="Afmetingen";
            :edit_box {
               label="Hoogte boven ";
               key="HoogteBoven";
               edit_width = 8;
            }
            :edit_box {
               label="Hoogte raam ";
               key="HoogteRaam";
               edit_width = 8;
            }
            :edit_box {
               label="Afstand panlat ";
               key="AfstandPanlat";
               edit_width = 8;
            }
        }
        :boxed_column {
           label="Details";
           :row {
                :column{
                    :text{
                        label="Boven ";
                    }
                    :text{
                        label="Schuin Boven ";
                    }

                    :text{
                        label="Onder ";
                    }
                    :text{
                        label="Schuin Onder ";
                    }
                    :row {
                        :text{
                            label="Links ";
                        }
                        :edit_box {
                            key="AantalLinks";
                            edit_width = 2;
                        }
                    }
                    :row {
                        :text{
                            label="Rechts ";
                        }
                        :edit_box {
                            key="AantalRechts";
                            edit_width = 2;
                        }
                    }   
                 }
                 :column{
                    :edit_box {
                        key="DetailBoven";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailSchuinBoven";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailOnder";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailSchuinOnder";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailLinks";
                        edit_width = 12;
                    }
                    :edit_box {
                        key="DetailRechts";
                        edit_width = 12;
                    }
                 }
                 :column{   
                    :button {
                        label= "EDIT";
                        key="DetailBovenEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailSchuinBovenEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailOnderEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailSchuinOnderEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailLinksEdit";
                        fixed_width = 4;
                    }
                    :button {
                        label= "EDIT";
                        key="DetailRechtsEdit";
                        fixed_width = 4;
                    }
                }
           }
        }
     }
   ok_cancel;
}


bedankt voor de hulp. Als het lukt dat trakteer ik je!

groet sam

fcbsam

Citaat van: fcbsam op wo 07 03 2007, 09:01:37
oeps negeer die code. ik kon die dcl niet in bijlage steken maar ik voeg ze nu toe als txt


WebRacer

DCL ziet er uit zoals ik vermoed had...
maar zonder de LSP kan ik het niet doen werken....

je bent wel op goede weg met je lisp, alleen moet je dus idd zoals ik zei 2 subroutines hebben...
eentje voor de klik op linkse pijltje, die dan alle vensters aanpast + andere foto toont.... en visa versa

een while tijdens het inlezen/inladen/aanspreken een dialoogbox kan niet (tenzij het mij iemand anders bewijst)...
?

FastFiber