Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Eingabe prüfen in Dialogfeld

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:  Eingabe prüfen in Dialogfeld (2025 mal gelesen)
dschu
Mitglied
techn. angestellter


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

Beiträge: 18
Registriert: 03.09.2002

erstellt am: 24. Jan. 2003 07: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 zusammen,

kann mir jemand kurz helfen?

Ich mochte in einem Dialogfeld einen einzugebenen Wert (irgend eine Zeichenkette) abfragen.

Ähnlich wie :
" (initget 1 "J N")
  (setq EIN (getkword " Eingabe <J/N> : " ))"

Geht das ?

Ich hab noch nicht viel mit Dialogfeldern zu tun...

Danke für einen Tipp und schönen Tag an alle!

dirk

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 24. Jan. 2003 08: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 dschu 10 Unities + Antwort hilfreich

Hi,
wenn Du kein Lust hast in die Tiefen von DCL einzusteigen, könnte ich Dir für solche Fälle eigentlich nur das "DosLib" von Robert McNeel empfehlen. Da gibt es unter anderem einige "GUI"-Funktionen.
Auszug aus der DosLib-Help:

dos_getstring
Windows Dialog box equivalent to LISP getstring function.

Syntax
(dos_getstring title prompt [default [length]])
Parameters

title
A string containing the dialog box title.
prompt
A string containing a prompt.
default
A default string value.
length
A maximum character length limit.

Returns
A string value, if successful.
nil on cancel or on error

Examples
Command: (dos_getstring "Text" "Enter some text")

DosLib kannst du kostenlos unter: http://www.mcneel.com/cgi-bin/download.cgi?doslib
runterladen.
Ist 'ne Arx mit hervorragender Dokumentation der einzelnen Funktionen.

------------------
Ciao,
Marc

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 24. Jan. 2003 08: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 dschu 10 Unities + Antwort hilfreich

Hi,
Nachtrag:
Wenn es um eine reine Ja/Nein Abfrage geht, bietet sich doch ein Dialog mit nur zwei Schaltflächen an.
Vgl. Hierzu:
dos_msgbox

------------------
Ciao,
Marc

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. Jan. 2003 08:50    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 dschu 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von dschu:
Hallo zusammen,

kann mir jemand kurz helfen?

Ich mochte in einem Dialogfeld einen einzugebenen Wert (irgend eine Zeichenkette) abfragen.

Ähnlich wie :
" (initget 1 "J N")
  (setq EIN (getkword " Eingabe <J/N> : " ))"

Geht das ?

Ich hab noch nicht viel mit Dialogfeldern zu tun...

Danke für einen Tipp und schönen Tag an alle!

dirk


Hallo Dirk,

du machst eigentlich wiedersprüchliche Aussagen. Die (initget ...) liefert ja nicht irgendeine Zeichenkette zurück.
Wenn Du eine Zeichenkette, frei einzugebender Text, abfragen möchtest, dann ist das etwas anderes als die Abfrage "Wollen sie das wirklich tun? Ja-Nein" Da reicht dann wirklich ein Ja/Nein-Dialogfenster. Im anderen Fall, brauchst du noch ein Eingabefeld. Was möchtest Du?

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Jetzt 25 Tools im FreeDownload

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 24. Jan. 2003 08:58    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 dschu 10 Unities + Antwort hilfreich

Hi Dirk,

auch mir ist nicht so richtig klar, wo dein Problem nun genau liegt. Jedenfalls ist eine Listbox das GUI-Pendant zur GetKWord-Konstruktion: Auswahl einer Zeichenkette aus einer vordefinierten Menge, keine freie Eingabe erlaubt. Dem Leer-Return auf der Kommandozeile entspricht die Default-Auswahl im Dialog.

Ach ja, du solltest aber nicht die Benutzer irreführen: "... <J/N> ..." ??? Wenn der Benutzer nur Return drückt, wird das als eindeutiges JEIN interpretiert;-)

Gruss, Axel

------------------
http://www.tutorial.autolisp.info

http://www.advanced.autolisp.info


http://www.activex.autolisp.info

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

dschu
Mitglied
techn. angestellter


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

Beiträge: 18
Registriert: 03.09.2002

erstellt am: 27. Jan. 2003 11:54    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 versuch noch mal meine Anfrage zu beschreiben:

Mir ging es darum zu verstehen wie die Eingaben in einer Dialogbox verarbeitet bzw, geprüft werden können.
Ich habe mir eine Dialogbox erstellt mit unterschiedlichen Eingabefeldern (Listenfeldern Pop-Up_Listemfeld etc.); das hat auch soweit funktioniert.

Was ich noch nicht verstanden habe ist:
Wie kann ich z.B. eine Eingabe in einem Listenfeld konkret prüfen:

Anderes Beispiel:
Ich möchte als Eingabe nur A, B oder C in Großbuchstaben (ob sinnvoll oder nicht...) zulassen; und
Kleinbuchstaben und xyz etc.ausschließen...
Soweit ich es verstanden habe ist der Ausgangspunkt der Prüfung oder Änderung immer die „action_tile“ Zeile ?
Kann oder muß ich von da aus jetzt UnterProgramme „abzweigen“ oder wie oder was ?...

Das hab ich aus den Beschreibungen noch nicht so richtig verstanden.

Gruß
dirk

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 27. Jan. 2003 12:30    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 dschu 10 Unities + Antwort hilfreich

Hi,
ja das wirst Du mit 'ner SubRoutine abprüfen müssen.

------------------
Ciao,
Marc

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 27. Jan. 2003 12:44    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 dschu 10 Unities + Antwort hilfreich

ich versuche mal zu helfen...
Zitat:
Original erstellt von dschu:
Mir ging es darum zu verstehen wie die Eingaben in einer Dialogbox verarbeitet bzw, geprüft werden können.
Ich habe mir eine Dialogbox erstellt mit unterschiedlichen Eingabefeldern (Listenfeldern Pop-Up_Listemfeld etc.); das hat auch soweit funktioniert. Was ich noch nicht verstanden habe ist:
Wie kann ich z.B. eine Eingabe in einem Listenfeld konkret prüfen:

ein auszug aus meiner lü-berechnung...
ein z.b. popup_list feld wird in lisp so gefüllt (möglicherweise gibt's noch mehrere mögl.) :

(setq bwlü:betongüte
         (list
           (list "B25" "39.7")
           (list "B35" "32.5")
           (list "B45" "27.5")
           (list "B55" "23.8")
           ) ;_ end of list
        )
  (setq bwlü:betongüte_gewählt "0");; für erstes element in liste !
  (foreach temp bwlü:betongüte
    (setq bwlü:betongüte_t (cons (car temp) bwlü:betongüte_t)
                                        ; aus der temp Variable wird der erste Wert entnommen  ..._t =Texte
          bwlü:betongüte_w (cons (cadr temp) bwlü:betongüte_w)
                                        ; hier nun der zweite Wert  ..._w =Werte
          ) ;_ end setq
    ) ;_ end foreach

  ;; nun noch die Listen umkehren, denn sonst steht B25 als letztes

  (setq bwlü:betongüte_t (reverse bwlü:betongüte_t)
        bwlü:betongüte_w (reverse bwlü:betongüte_w)
        ) ;_ end of setq

  ;; füllen der Dialogfelder
  ;;------------------------

  (start_list "bwlü_betongüte")
  (mapcar 'add_list bwlü:betongüte_t)
  (end_list)
  ;;--------------------------------------
  (set_tile "bwlü_betongüte" "")

  ;; setze aktionen
  ;; -----------------

  (action_tile
    "bwlü_betongüte"
    "(setq bwlü:betongüte_gewählt $VALUE)"
    ) ;_ end of action_tile

es wird eine liste erstellt mit den auswahlmöglichkeiten B25, B35, B45, B55. parallel dazu werden in lisp zus. zu diesen "vorgaben" aus einer anderen liste der rechenfaktor bestimmt (..._w)

...vielleicht hilft dir das weiter...is' nur als vorschlag zu verstehen !

>>>nachtrag...<<<
späteres auswerten/prüfen...

(setq bwlü:betongüte_t  (nth (atoi bwlü:betongüte_gewählt)
                                  bwlü:betongüte_t
                                  )    ; aus der listbox wird der nth'teil herausgeholt, also wenn B25, dann 0 ; B35, dann 1
          bwlü:betongüte_w  (nth (atoi bwlü:betongüte_gewählt)
                                  bwlü:betongüte_w
                                  )    ; parallel dazu aus der alten Variablen den Rechenwert


------------------
Grüße aus dem Rheingau.
Rolf aka Benwisch

[Diese Nachricht wurde von benwisch am 27. Januar 2003 editiert.]

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 28. Jan. 2003 09:54    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 dschu 10 Unities + Antwort hilfreich

Hi Dschu,

mir ist es immer noch nicht ganz klar, worum es dir geht.

Wenn der Benutzer aus {A, B, C} auswählen soll, dann setzt man diese drei Elemente in eine Listbox. Da gibt es doch überhaupt keine freie Eingabe! Die wäre in einer Combo-Box möglich (Combo = Kombination aus Listbox und Editfield), aber die Combo-Box hat AutoDesk doch 'vergessen'. Da muss man sich damit behelfen, das Ganze mit einer Listbox und einer Editbox selber zu emulieren.

Wenn's darum geht, Eingaben in einer Editbox zu prüfen, dann ist das was ganz anderes. Da kann der User ja erstmal reinschreiben, was er will. Da kannst du über "action" eine Lisp-Funktion an die Editbox kleben, die jedesmal aufgerufen wird, wenn eine Eingabe erfolgt ist. Dann kannst du die Eingabe mit get_tile auslesen und prüfen.

Allerdings musst du die Grenzen sehen: "action" ist mit dem identisch, was man in anderen Sprachen als LostFocus-Event bezeichnet. Alle anderen Events lassen sich in DCL nicht verarbeiten! Erst wenn der User auf ein anderes Dialogelement klickt oder TAB drückt, wird der Event ausgelöst. Eine Prüfung nach jedem eingetippten Buchstaben kann es also in DCL nicht geben!

Auch die Maskierung von Eingaben fehlt in Proteus vollständig (in anderen Sprachen kannst du z.B. "99.99.99" für ein Datum oder "AAA-9999-@@" für eine Seriennummer o.ä. festlegen). Geht hier alles nicht. Du kannst nicht mal zur Laufzeit rauskriegen, ob ein Dialogelement enabled oder disabled ist usw. (get_attr klingt zwar erstmal nett, liefert aber gar nicht die aktuellen Werte, sondern die defaults bei Start des Dialogs).

Die ganze DCL-Schnittstelle ist nun mal 10 Jahre alt und seit ihrem Erscheinen absolut nicht weiterentwickelt worden (Updates==NULL).

Gruss, Axel


------------------
http://www.tutorial.autolisp.info

http://www.advanced.autolisp.info


http://www.activex.autolisp.info

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

dschu
Mitglied
techn. angestellter


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

Beiträge: 18
Registriert: 03.09.2002

erstellt am: 28. Jan. 2003 10: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

Zitat:
Original erstellt von mapcar:
Hi Dschu,

Wenn's darum geht, Eingaben in einer Editbox zu prüfen, dann ist das was ganz anderes. Da kann der User ja erstmal reinschreiben, was er will. Da kannst du über "action" eine Lisp-Funktion an die Editbox kleben, die jedesmal aufgerufen wird, wenn eine Eingabe erfolgt ist. Dann kannst du die Eingabe mit get_tile auslesen und prüfen.

Allerdings musst du die Grenzen sehen....

...  worden (Updates==NULL).

Gruss, Axel



Danke an alle für die Antworten;
Danke an Axel...

mir ging es in der Tat um das, was im obigen Zitat beschrieben wurde.

Ich denke, die Erklärungen von Axel helfen mir nun weiter

Gruß
dirk

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