Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  DCL-Felder positionieren

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:  DCL-Felder positionieren (1150 mal gelesen)
ManfredMann
Mitglied
CAD Konstrukteur


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

Beiträge: 216
Registriert: 27.04.2001

Autocad 2021 / Win10- 64 bit

erstellt am: 29. Sep. 2003 16:26    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


Dialbox.jpg

 
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


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: 29. Sep. 2003 17: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 ManfredMann 10 Unities + Antwort hilfreich


dcl-mitte.jpg

 
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


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

Beiträge: 216
Registriert: 27.04.2001

Autocad 2021 / Win10- 64 bit

erstellt am: 30. Sep. 2003 09:48    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 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


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: 30. Sep. 2003 15: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 ManfredMann 10 Unities + Antwort hilfreich


dclbox2.jpg

 
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


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

Beiträge: 216
Registriert: 27.04.2001

Autocad 2021 / Win10- 64 bit

erstellt am: 30. Sep. 2003 17:00    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 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


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: 01. Okt. 2003 11:12    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 ManfredMann 10 Unities + Antwort hilfreich

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 funktion
Code:

(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


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

Beiträge: 216
Registriert: 27.04.2001

Autocad 2021 / Win10- 64 bit

erstellt am: 01. Okt. 2003 15: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

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 >>)

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