| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: DCL-Felder positionieren (1201 mal gelesen)
|
ManfredMann Mitglied CAD Konstrukteur
Beiträge: 220 Registriert: 27.04.2001 Autocad 2021 / Win10- 64 bit
|
erstellt am: 29. Sep. 2003 16:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Experten! Ich habe seit einiger Zeit DCL-Fenster in meine Lisp eingebunden, aber es ist mir nicht gelungen die Positionierung der Felder richtig zu gestalten. Links- bzw. Rechtsbündigkeit kann ich kaum erreichen, sowie Zentrierung dieser Ferder, oder Texte. Gibt es einen Trick wie man die "alignment" Befehle anwendet, oder gibt es andere Steuerbefehle? Wer hat Erfahrung & könnte mir helfen? : column { : edit_box { key = "dd_spos_ug"; allow_accept = true; alignment=centered; edit_width = 3; edit_limit = 3; } : text { label = "Medium"; alignment=centered; } } Siehe Bild und Quellcode-Fragment. Obwohl Feld und Text paarweise Spalten bilden, mit "alignment=centered;", zetriert sehen die nicht aus!
Gruß, Manfred [Diese Nachricht wurde von ManfredMann am 29. September 2003 editiert.] [Diese Nachricht wurde von ManfredMann am 29. September 2003 editiert.] [Diese Nachricht wurde von ManfredMann am 30. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 29. Sep. 2003 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für ManfredMann
soweit ich weiss, setzt edit_box immer links einen "platzhalter", so daß sich dein beschriebenes phänomen ergibt. für dein beispiel kann ich dir folg. trick zeigen... (zwecks test, vollständiges dcl-script)
Code:
test : dialog{ : column { children_alignment = centered; :row{ : edit_box { label = " "; key = "dd_spos_ug"; allow_accept = true; edit_width = 3; edit_limit = 3; } :text{ label=" "; } } : text { label = "Medium"; } } ok_only; }
mein trick hierbei ist, daß ich zus. einen row einbinde, der einfach rechts neben der box 1 leerzeichen groß ist. links der box, also die label-area setze ich im label einfach 2 leerzeichen... ...und jetzt ist dieses bsp. mittig (siehe screenshot) ps..dein bild ist nicht auf dem server, konnte nur es anhand des codes erkennen, was du zeigen willst.
[Diese Nachricht wurde von benwisch am 29. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ManfredMann Mitglied CAD Konstrukteur
Beiträge: 220 Registriert: 27.04.2001 Autocad 2021 / Win10- 64 bit
|
erstellt am: 30. Sep. 2003 09:48 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch! Danke für Deine Antwort. Wie geschrieben, habe ich eine Menge Zeit herumexperimentiert, wie ich am besten die "column" und "row" Anordnungen kombinieren kann, dass DCL vernünftig Felder positioniert, aber es scheint mir nachwievor ein Manko dieser Technik zu sein, dass sie mit der Positionierung nicht klarkommt. Ich habe meinen Beitrag editiert, das Bild nachgeladen, kanns Du anschauen. Darauf ist es auch zu erkennen, dass bei mehreren Feldern in einer Reihe kommt DCL in die Situation, daß die Position nicht beliebig definierbar ist, er zieht die Reihe nur noch auseinander statt die Abstände korrekt zu setzen. Zum Testen hiermit der vollständige DCL-code: (hier ist alignment auf left bzw. right gesetzt, dass die einigermaßen untereinender kommen) ri_pipe : dialog { label = "Rohrleitung"; initial_focus = "dd_spos_ug"; : boxed_column { : row { : column { : edit_box { key = "dd_spos_ug"; allow_accept = true; alignment=left; edit_width = 3; edit_limit = 3; } : text { label = "Medium"; alignment=right; } } : column { : edit_box { key = "dd_ttcode"; allow_accept = true; alignment=left; edit_width = 3; edit_limit = 3; } : text { label = "DN"; alignment=centered; } } : column { : edit_box { key = "dd_ca"; allow_accept = true; alignment=left; edit_width = 2; edit_limit = 2; } : text { label = "Rohrkl."; alignment=right; } } : column { : edit_box { key = "dd_cb"; allow_accept = true; alignment=left; edit_width = 2; edit_limit = 2; } : text { label = "Druck"; alignment=right; } } : column { : edit_box { key = "dd_spos_nr"; allow_accept = true; alignment=left; edit_width = 3; edit_limit = 3; } : text { label = "PosNr."; alignment=right; } } } //ENDE row } //ENDE boxed_column ok_cancel; }// ENDE dialog Danke trotzdem für Deine Lösung, werde sie testen. Leider fürchte ich, daß es damit auch zum beschriebenen Phenomän kommt.
Gruß, Manfred
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 30. Sep. 2003 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für ManfredMann
hi manfred, ich kenne das problem und stolpere manchmal selbst noch über solche formatierungen. ich habe mir deinen dcl-code mal angesehen und bin der meinung, daß du die vielen alignment befehle gar nicht brauchst ... codefragment
Code:
ri_pipe : dialog { label = "Rohrleitung"; initial_focus = "dd_spos_ug"; : boxed_row { label="Eingabe"; :column { children_alignment=centered; :row { : edit_box {label=" ";key = "dd_spos_ug";edit_width = 3;edit_limit = 3;} : spacer {} } : text {label = "Medium";} } :column {... ...usw.
siehe auch angehängtes bild. wie du am codebsp. erkennen kannst, habe ich jeweils links und rechts neben der edit_box ein leerzeichen eingefügt. links : durch label=" "; rechts : durch einen deco-tile :spacer{} (alternativ zu :text {}) das ganze nun in einem column-cluster gepackt und mit einem children_alignment=centered formatiert... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ManfredMann Mitglied CAD Konstrukteur
Beiträge: 220 Registriert: 27.04.2001 Autocad 2021 / Win10- 64 bit
|
erstellt am: 30. Sep. 2003 17:00 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch! Vielen Dank für die Hilfe und die Lösung, sieht prima aus! Heute habe ich was feines dazugelernt... Wenn ich Dich noch gleich was fragen darf: Gibt es eine Möglichkeit in den edit box einzulesenden Text zu filtern? Also als Beispiel, in numerik-Felder nur Zahlen zulassen, oder an manchen Stellen kleingetipten Text in Großbuchstaben umgewandelt erscheinen lassen, etc. Diese Aktionen nicht bei/nach der Annahme der Angaben mit "OK", sondern glech bei Erscheinen der Zeichen beim Tippen. Gruß, Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 01. Okt. 2003 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für ManfredMann
jein ! in der edit_box kann man grundsätzlich erstmal alles eintragen, nur zahlen eingeben und die bustaben sperren geht nicht. allerdings kannst du die eingabe gleich prüfen lassen. hierzu mußt du nix anderes machen, als mittels action_tile deinen wert aus der edit_box auslesen (geht mit get_tile) und dieses z.b. einer funktion übergeben. dort bestimmst du nun wie weiter verfahren werden und welcher wert neu gesetzt werden soll ( set_tile). sobald also mittels tab oder mit der maus auf ein anderes tile gesprungen wird, wird das event ausgelöst. ein umwandeln in großbustaben geht also sofort. codebeispiel
Code:
(action_tile "dd_ttcode" "(chk (get_tile \"dd_ttcode\") \"dd_ttcode\")")als aktion rufe ich eine funktion auf, die zwei argumente benötigt. einmal der eingegebene wert und der key selbst
die funktionCode:
(defun chk (val what /) (cond ((= what "dd_ttcode");_ key DN -> nur zahlen > 0 (if (<= (atof val) 0.0) (progn (alert "Bitte nur Zahlen > 0 eingeben !!") (set_tile "dd_ttcode" (rtos 10 2 1));_standardzahl setzen (mode_tile "dd_ttcode" 2);_und wert in der box markieren ) (set_tile "dd_ttcode" (rtos (atof val) 2 1));_ nachkommastelle ) ;_ end if ) ((= what "dd_spos_ug");_ key MEDIUM -> nur großbuchstaben (set_tile "dd_spos_ug" (strcase val)) ) ) ;_ end cond ) ;_ end defun
eine wertvolle hilfe hierzu, war der beitrag von mapcar hier nachzulesen (vorletztes posting)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ManfredMann Mitglied CAD Konstrukteur
Beiträge: 220 Registriert: 27.04.2001 Autocad 2021 / Win10- 64 bit
|
erstellt am: 01. Okt. 2003 15:30 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch! Danke für deine wertvolle Hilfe! Ich werde den anderen Beitrag auch nachlesen, ersmals stecke ich im Arbeitsstress, hoffe morgen kann ich Deine Lösung testen und einbauen. Nochmals Danke! Gruß, Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|