Guten Tag Miteinander
das Thema ist schon etwas älter. Brauche dennoch eure Hilfe.
Habe eine Tabelle erstellt. In den Feldern sind Werkstoffbezeichnungen hinterlegt.
Hier das Lisp (Anfänger!): Habe die vermutlichen Fehlerzeilen mit XXXX markiert.
Möchte eigentlich nur den angeklickten Werkstoff in der Zelle anzeigen.
Fehlermeldung: siehe BAD_PLIST.png
; Tabelle einlesen. Tabelle ist im csv Format, getrennt mit ;
; bei Doppelclick auf ein beliebiges Feld, soll der Wert angezeigt werden. (vorerst)
; Erstellt: 22.07.2015 Urs Ammann
; Vorlage aus cad.de / Internet
; Tabelle unter C:\Temp\ws.csv
#|
CH;DE;CN;Bemerkung / remark / ??
DC01;DC01;fff14;Blech 0.5-3mm
DD11;DD11;iDD11-a;Blech 3-12mm
S235JR;S235JR;Q235;Stahl normal
100Cr6;100Cr6;0100;Stahl fff
100MnCrW4;100MnCrW4;100-MnCrW4;fsdfsadfsad nicht verwenden!
|#
(in-package :custom)
(use-package :OLI)
(sd-defdialog 'pw_table_foo
:dialog-title "Tabelle einlesen c:\\Temp\\ws.csv"
:toolbox-button t
:variables
'()
k-action '(pw_create_ltab)
:local-functions
'(
(pw_create_ltab ()
(progn
(pw_read_table_csv_build)
)
)
)
)
(defun zeige_wert_an (table)
(let* (
(table-sel (third (sd-get-display-table-selection table :units :external))) ; 3. Wert in Zeile? XXXX
(Wert nil) ; Wert auf nichts setzen
)
; bis hier funktioniert es wohl noch.
(setf Wert (getf table-sel :external "")) ;; <---- FEHLER XXXX
(display Wert)
; (sd-hide-display-table "Werkstoffe")
) ;end let
) ;end defun
(defun pw_read_table_csv_build ()
(let (A1 A2 A3 A4 ZEILE_STRING_IN ZEILE_STRING_LISTE FI NEW_LIST)
(with-open-file (FI (sd-convert-filename-to-platform "C:/Temp/ws.csv") :direction :input :if-does-not-exist nil)
(sd-create-logical-table "Werkstoffe"
:columns '(:CH
E :CN :Bemerkung)
:columnNames (sd-string-split (read-line FI nil) ";")
; :types '(:string :string :string :string )
:types '( nil nil nil nil )
:units '( nil :nil :nil :nil )
:contents '(
)
)
(setf ZEILE_STRING_IN (read-line FI nil))
(loop while ZEILE_STRING_IN do
;; (display "naechste Zeile")
(setf ZEILE_STRING_LISTE (sd-string-split ZEILE_STRING_IN ";"))
(setf A1 (nth 0 ZEILE_STRING_LISTE))
(setf A2 (read-from-string (nth 1 ZEILE_STRING_LISTE)))
(setf A3 (read-from-string (nth 2 ZEILE_STRING_LISTE)))
(setf A4 (read-from-string (nth 3 ZEILE_STRING_LISTE)))
(setf NEW_LIST (list A1 A2 A3 A4))
(sd-insert-logical-table-row "Werkstoffe"
osition :bottom
verwriteIfExists nil
:contents NEW_LIST
)
(setf ZEILE_STRING_IN (read-line FI nil))
)
(sd-create-display-table
"Werkstoffe"
:tableTitle "Werkstoffe Welt"
:logicalTable "Werkstoffe"
:columns '(:CH
E :CN :Bemerkung)
:applyColumns '(:CH
E :CN :Bemerkung)
:displayHeight 400
:filterStatusLine nil
:selectionMode :single-cell ;war single-row
:selectionAction nil
:doubleClickAction 'zeige_wert_an
:applyAction :default-tokens
)
(sd-show-display-table "Werkstoffe"
osition '("TOP-MENU-TOOLBOX-TB"
:bottomleft 330 250)
)
)
)
)
; (trace zeige_wert_an) ; (trace pw_read_table_csv_build)
;; Direkt einlesen: nächste Zeile kann dann auskommentiert werden.
pw_table_foo
------------------
am
[Diese Nachricht wurde von am am 24. Jul. 2015 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP