Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Listbox bei offener Dialogbox !

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Listbox bei offener Dialogbox ! (1160 mal gelesen)
Juergen55
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 22. Feb. 2006 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich will eine Listbox bei offener Dialogbox aktualisieren, also einen Wert der Liste hinzufügen mittels Button, das geht auch aber die Aktualisierung bei offenem Dialog geht nicht, der Code sieht so aus:

(set_tile "lb" (rtos sn 2 4))        ;List_Box
(mode_tile "lb" 2)
(action_tile "m1" "(setq mml (cons wert1 mml))(set_tile \"lb\" (nth sn mml))")

Der Button ist m1 die Listbox lb, mml die Liste der Listbox

Gruß, Jürgen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 23. Feb. 2006 07:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Das wird meines bescheidenen Wissens auch nicht gehen, da die Dialogboxen immer nur nach einer Aktion befüllt werden und sich nicht dynamisch anpassen.

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Feb. 2006 08:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

@ Cadwiesel
ich denke schon, ich bin sogar der Meinung, das die action_tile-Anweisung von Jürgen eigentlich funktionieren müßte.
@ Jürgen
Was passiert, wenn Du den Button "m1" drückst, wird die action_tile-Anweisung ausgeführt und die enthaltene set_tile-Anweisung greift nicht, oder wird action_tile-Anweisung gar nicht ausgeführt???

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Juergen55
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 23. Feb. 2006 08:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja der action_tile funktioniert, teilweise auch set_tile, wenn ich m1 drücke springt er auf eine anderen Eintrag in der Listbox aber der neue Wert der Liste wird halt nicht in die Listbox übernommen, Danke für Eure Überlegungen !

Gruß, Jürgen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Feb. 2006 08:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Hallo Jürgen,
na das hört sich aber nicht so an, als wenn Du wiklich weiter gekommen bist. Was heißt bei Dir "teilweise"?? Ich bin immer der Meinung geht oder geht nicht.
Wenn er auf einen anderen Eintrag springt: Du kannst z.B. in die Action_tile-Anweisung auch (mode_tile "lb" 2)mit einbinden, dann ist die Listbox "lb" wieder die Vorgabe und der Eintrag ist markiert.
Wenn Du ein bißchen mehr Quelltext hier reinstellst kann ich ja nochmal rüberschauen.

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Feb. 2006 09:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Hallo jürgen,

ihr seid in die vollkommen falsche Richtung unterwegs. Listen in Dialogfenstern lasen sich nur mit ADDLIST manipulieren.
Also immer der gleiche Rattenschwanz:
(startlist ..);HIER kann man mit einem Parameter festlegen, ob die Liste vollkommen neu aufgebaut wird oder die Einträge einfach angefügt werden.
(mapcar 'addlist LISTEderWERTE)
(endlist)

Dafür bastelst du dir am besten eine SUB, die du dann eben bei einem bestimmten (action ..) aufrufst.

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Feb. 2006 09:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

@ Holger und Jürgen
jaja, man sollte schon genau lesen, ich war gedanklich bei einer edit_box. Also Jürgen, ich nehme alles zurück was ich gesagt habe, es geht wie es in Holger's Beitrag zu lesen ist.

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Juergen55
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 23. Feb. 2006 16:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich denke mal CADWiesel hat recht, bei offenem Dialog geht es wirklich nicht, oder ich bin zu blöd dazu. Trotzdem geht es jetzt, ich hab eine While-Schleife drum herum gebaut, die den Dialog noch einmal aufruft. Danke für Eure Mühe !!

Gruß, Jürgen

------www.pc-ideal.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Feb. 2006 18:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Hallo Jürgen,
probier es doch so: Aus der action_tile Anweisung ruftst Du die Subroutine "list_aktuell" auf und übergibst die Liste "mml".

(action_tile "m1" "(setq mml (cons wert1 mml))(list_aktuell mml)")

(defun list_aktuell (mml / )
(start_list "lb" 3 0)
  (mapcar 'add_list mml)
  (end_list))

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Feb. 2006 06:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Juergen55:
ich denke mal CADWiesel hat recht, ...

Falsch!
Ich habe mal schnell ein Bsp zusammengebaut, welches dir die Funktion erklären sollte. Mit dem [Zurücksetzen]-Button kannst du die Liste vollständig überschreiben, und mit dem [Hinzufügen]-Button fügst du einen Eintrag der Liste hinzu. Beides funktioniert ohne den komplizierten Weg des erneuten Aufrufs der Dialogbox.
Oftmals wird von den Anfängern der Fehler gemacht, dass zwar die Liste im Dialogfeld geändert wird, aber der aktuelle Aufbau der Liste nicht in der entsprechenden Variablen mitgeschrieben wird. Auch das habe ich in der Bsp-Funktion implementiert. Beantwortest du die Frage ob der Dialog erneut gestartet werden soll mit Ja, dann werden in der Liste auch die hinzugefügten Einträge mit angezeigt.


Code als *.lsp speichern und die liste.dcl erstellen!

Code:
(vl-load-com)
(defun c:diatest (/ ergebnis antw)
  (setq ergebnis (dcl:Liste_edit "Vornamen" '("Hans" "Max")))
  (princ ergebnis)
  (initget "Ja Nein")
  (setq antw (getkword "\nDialog erneut starten [Ja/Nein]? <N>:"))
  (if (= antw "Ja")(dcl:Liste_edit "Vornamen" ergebnis))
  (princ)
  )
(defun dcl:Liste_edit (BESCHREIBUNG WERTE / dcl_id ns VALUES)
  (setq VALUES WERTE
dcl_id (load_dialog "liste.dcl"))
  (if (not (new_dialog "LI_ED" dcl_id))
    (exit)
    )
  (dcl:LI_SET "LI" WERTE nil)
  (action_tile "RESET""(setq WERTE (dcl:LI_SET \"LI\" VALUES nil))")
  (action_tile "ADD""(setq WERTE(dcl:LI_SET \"LI\" (list (get_tile \"ED\")) WERTE))")
  (action_tile "cancel""(done_dialog 0)")
  (action_tile "accept""(done_dialog 1)")
  (setq ns (start_dialog))
  (unload_dialog dcl_id)
  (if (= ns 1) WERTE)
  )
(defun dcl:LI_SET (KEY VALUES APPEND?)
  ;KEY-Listenname = STR
  ;VALUES-Werte der Liste = LIST
  ;APPEND?-Neu oder anhängen = nil-NEU
  ;     = LIST- Werte der bereits vorhandenen Listeneinträge
  (setq VALUES (vl-remove-if '(lambda (E)
(= "" (vl-string-trim " " E))
)
VALUES)
)
  (start_list KEY (if APPEND? 2 3))
  (mapcar 'add_list VALUES)
  (end_list)
  (if APPEND? (append APPEND? VALUES) VALUES)
  )

;| FF-> DCL-DATEI Liste.dcl
LI_ED : dialog {
  label = "Auswahl";
  : text {
    key = "TXT";
    label = "Was wird gewählt";
    }
  : list_box {
    width = 18;
    height= 20;
    key = "LI";
    multiple_select=true;
    }
  : button {
    label = "Zurücksetzen";
    key = "RESET";
    }
  : text {
    label = "Neuer Wert:";
    }
  : row {
    : edit_box {
      key = "ED";
      }
    : button {
      label = "Hinzufügen";
      key = "ADD";
      }
    }
  ok_cancel;
  }
|;


Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Juergen55
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 25. Feb. 2006 00:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

ich hatte bis jetzt keine Zeit mehr mir das anzuschauen, so geht das also doch, und Du bist sogar völlig ohne set_tile ausgekommen. Dein Code ist schon eine Klasse für sich, nicht schlecht, so einfach kann es sein !

Gruß, Jürgen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz