| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: edit_box formatieren (1185 mal gelesen)
|
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004 Windows XP Prof. Autocad 2004 Autocad 2007 Freecad Erpa V-Pack Ubuntu
|
erstellt am: 09. Feb. 2005 13:21 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich weiß, das ist wahrscheinlich ein ganz ganz kleines Problem. Doch ich komme nicht drauf, da ich seit 1 1/2 Jahren nichts mehr programmiert habe. Ich bin ein Feierabendprogrammierer . Ich möchte folgendes lösen - siehe Anhänge. Vielleicht könnt Ihr mir helfen. DANKE schachtelmacher
------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
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: 09. Feb. 2005 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
|
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 09. Feb. 2005 13:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, nein, die edit_box'en sollen so bleiben. Ich habe nur das Problem, dass ich diese nur durch Einfügen von Leerzeichen alle auf gleiche Startposition bekomme. text ABC : Anfang Feld text A : Anfang Feld . . . Nur das passt (s. oben) auch nicht immer. Die Eingabefelder sollen ohne Rücksicht auf Länge der Bezeichnung und Länge der Eingabebox alle ein einer Flucht untereinander beginnen. Ich hoffe mich jetzt ein bisschen deutlicher ausgedrückt zu haben. Eine Lösung wäre vielleicht die Textbezeichnung in einer column als reinen Text zu verfassen und in einer zweiten column die edit_box'en ohne Bezeichnung ("") zusammenzufassen und das ganze dann als row nebeneiander darzustellen. Aber geht das nicht einfacher? Gruß schachtelmacher ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 09. Feb. 2005 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
du muss wirklich die Editbox-Beschriftung von der editbox trennen ob du es nun mit 2 spalten (einmal test, einmal editboxen) machst oder mit mehreren zeilen ist egal. Hier die zeilenvariante : boxed_column { : spacer { height = 1; } :row {fixed_width=true; : text {label ="Datum"; width = 35;} : edit_box {key = "datum" ;edit_width = 10;} } :row {fixed_width=true; : text {label ="Ersteller"; width = 35;} : edit_box {key = "Ersteller" ;edit_width = 30;} } :row {fixed_width=true; : text {label ="Verbleib des Kundenmusters"; width = 35;} : edit_box {key = "verbleib" ;edit_width = 30;} } :row {fixed_width=true; : text {label ="noch so ne blöde zeile"; width = 35;} : edit_box {key = "datum1" ;edit_width = 40;} } ------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 10. Feb. 2005 06:56 <-- editieren / zitieren --> Unities abgeben:
Zitat:
..... :row {fixed_width=true; : text {label ="Verbleib des Kundenmusters"; width = 35;} : edit_box {key = "verbleib" ;edit_width = 30;} }
Hi, genau, ohne trennen glaube ich geht es nicht. Aber zu der oberen Zeile habe ich noch eine Frage: Kann man den Abstand zwischen dem Text und dem Eingabefeld noch verkleinern? Wenn man width bei label auf z.B. 30 setzt geht das nicht. Ich möchte nicht so einen großen Abstand dazwischen haben! Gibt es da noch eine Lösung? Grusse schachtelmacher ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004 Windows XP Prof. Autocad 2004 Autocad 2007 Freecad Erpa V-Pack Ubuntu
|
erstellt am: 04. Mrz. 2005 09:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, heute habe ich wieder zwei Fragen: FRAGE 1: Wie kann man in einem edit_box Feld mehrzeilig Text eingeben, z. B. blablabla 2.Zeile blablabla 3. Zeile ... ? Bis jetzt kann ich zwar das Feld mit einer Höhe von 3 Zeilen angeben, schreiben kann ich aber nur in einer Zeile ohne Returneingaben. Also ich möchte so eine Art MEMO-Feld, wo man beliebig Text hineinschreiben kann. FRAGE 2: In einer DCL-Datei möchte ich bestimmten Text ({label = "...." ...) mit Fetter Schrift darstellen und das Eingabefeld mit einer anderen Hintergrundfarbe versehen. Geht das? Ich habe nichts gefunden, und programmiere ja auch zu selten, um mich hier genau auszukennen. Verzeiht mir! Grüsse
schachtelmacher ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 04. Mrz. 2005 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
|
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 04. Mrz. 2005 09:29 <-- editieren / zitieren --> Unities abgeben:
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 BricsCAD 22
|
erstellt am: 04. Mrz. 2005 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Du könntest natürlich auch nur ein Feld verwenden und hintereinander die einzelnen Werte eingeben (Wert 1 eintippen - übernehmen und zwischenspeichern - Wert 2 eintippen - übernehmen ..). Aber das ist wahrscheinlich unübersichtlicher zu bedienen und komplexer zu programmieren, also sind die 3 Edit_Boxen vermutlich die bessere Lösung. Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
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: 04. Mrz. 2005 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Hi, das mit dem Anmerkungsfeld mußte ich auch irgendwie lösen... Ich habe folgendes gemacht: 1. In der DCL ein zehnzeiliges Anmerkungsfeld mit 'nem Knopf daneben gebaut: Code:
ZVO_NOTE_10 : boxed_row { label = "Bemerkung:"; : paragraph { : text_part { key = "TEXT1"; // width = 63; } : text_part { key = "TEXT2"; // width = 63; } : text_part { key = "TEXT3"; // width = 63; } : text_part { key = "TEXT4"; // width = 63; } : text_part { key = "TEXT5"; // width = 63; } : text_part { key = "TEXT6"; // width = 63; } : text_part { key = "TEXT7"; // width = 63; } : text_part { key = "TEXT8"; // width = 63; } : text_part { key = "TEXT9"; // width = 63; } : text_part { key = "TEXT10"; // width = 63; } } : button { fixed_width = true; fixed_height = true; alignment = top; label = "Editieren"; key = "BTNEDITNOTE"; } }
2. Wenn jemand was in das Anmerkungsfeld schreiben will, muß er den Knopf drücken, welcher die Funktion "acet-ui-txted" aus den Express-Tools aufruft (da gibt es 'n paar Speztialitäten zu beachten, kann man dem Ablauf der folgenden Funktion aber entnehmen):
Code:
;; Funktion ruft den Editor auf, setzt den als Argument ;; übergebenen Symbolnamen evtl auf einen neuen Wert und ;; führt ein done_dialog mit dem als Argument übergebenen index aus. (defun MS:BTNEDITNOTE (SYMBOLNAME DIALOGTITLE USERPROMPT DIALOG-STAT / RETVAL SYMVAL) (if (setq SYMVAL (eval SYMBOLNAME)) (if (setq RETVAL (MS:SAFE-EVAL (list 'MS:EDIT_BOX SYMVAL DIALOGTITLE USERPROMPT ) ;_ end of list ) ;_ end of MS:SAFE-EVAL ) ;_ end of setq (set SYMBOLNAME RETVAL) ) ;_ end of if ) ;_ end of if (done_dialog DIALOG-STAT) ) ;_ end of defun;; Basiert auf der acetutil.arx ;; (acet-ui-txted [text [caption [note]]]) ;; Der Text geht als ";" separated rein und raus ;; intern muß jedoch der delimiter ein "\r\n" sein. ;; Die Wandlung erfolgt in dieser Sub. (defun MS:EDIT_BOX (TEXT DIALOGTITLE USERPROMPT / RETVAL) ;; Wandlung des textstrings in ein kompatibles Format: (setq TEXT (MS_STRTOKEN-SUBST TEXT "\r\n" ";")) (if (setq RETVAL (MS:SAFE-EVAL (list 'acet-ui-txted TEXT DIALOGTITLE USERPROMPT) ) ;_ end of MS:SAFE-EVAL ) ;_ end of setq (setq RETVAL (MS_STRTOKEN-SUBST RETVAL ";" "\r\n")) (setq retval (MS_STRTOKEN-SUBST TEXT ";" "\r\n")) ) ;_ end of if RETVAL ) ;_ end of defun
3. Die Rückgabe der Anmerkung erfolgt als EIN String mit 'nem Semikolon als String, nachfolgende Funktionen bereiten den String dann auf und füllen das Anmerkungsfeld im Hauptdialog:
Code:
;; Funktion stellt den delimited-String in einem Zehnzeiligen Bemerkungs- ;; feld dar. ;; Das Argument KEY ist ein Teilstring für den KEY der weitere Teilstring ;; ergibt sich durch indizies. Also z.B. KEY = TEXT dann wird daraus TEXT1, TEXT2 usw. ;; Argumente: ;; KEY = Der Anfangsstring für den Key, wird durch eine laufende Nummer erweitert ;; NOTESTR = Ein eventuell mit 'nem Token geteilter String (csv) ;; DELIMITER = Das Trennzeichen für csv ;; NOTELEN = Anzahl der zulässigen Zeilen ;; ;; Rückgabe = Keine ;; ;; Beispielaufruf: ;; (ZVO-NOTE-IF "TEXT" "A;B;C;D;E;G" ";" 10) (defun ZVO-NOTE-IF (KEY NOTESTR DELIMITER NOTELEN / INDEX NOTELST) (setq KEY (strcase KEY) INDEX 1 ) ;_ end of setq (if (get_tile (strcat KEY (itoa INDEX))) (if NOTESTR (if (/= NOTESTR "") (progn (setq NOTELST (MS_STRTOKEN NOTESTR DELIMITER NIL) NOTELST (LIMITLIST NOTELST NOTELEN "") ) ;_ end of setq (foreach ELEM NOTELST (SET-TILE-IF (strcase (strcat KEY (itoa INDEX))) ELEM) (setq INDEX (1+ INDEX)) ) ;_ end of foreach ) ;_ end of progn ) ;_ end of if ) ;_ end of if ) ;_ end of if ) ;_ end of defun;; Funktion limitiert die Länge einer Liste auf ;; die im Argument LSTLEN übergebene Länge ;; Ist die Liste zu lang, wird sie gekürzt ;; Ist sie zu kurz, wird sie mit dem Wert ;; des Arguments FILLPATTERN aufgefüllt (defun LIMITLIST (LST LSTLEN FILLPATTERN / LEN retval) (setq LEN (length LST)) (if (> LEN LSTLEN) (repeat LSTLEN (setq RETVAL (cons (car LST) RETVAL) LST (cdr LST) ) ;_ end of setq ) ;_ end of repeat (progn (setq RETVAL (reverse LST)) (repeat (- LSTLEN LEN) (setq RETVAL (cons FILLPATTERN RETVAL)) ) ;_ end of repeat ) ;_ end of progn ) ;_ end of if (reverse retval) ) ;_ end of defun
Den Anmerkungstext selber speichere ich nach dem Verlassen des Dialogfeldes in EINEM Attribut eines Blocks als EIN String mit dem Semikolon als Delimitter, aber das ist ja nur in MEINEM Fall so. Weiterverarbeiten kann man das dann ja auch anders... Die Codes die hier stehen sind so natürlich NICHT 1:1 verwendbar, dazu fehlen einfach zu viele Sub-Routinen aus meiner Bibliothek. Aber ich denke es zeigt auf, wie ich das Problem gelöst habe...
------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |