Spaltenbreite mit JSL festlegen?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Gibt es eine Möglichkeit, die Anzeigebreite einer Spalte mithilfe von JSL festzulegen?Wenn ich eine Tabelle erstelle, sind die Spalten standardmäßig zu breit.Ich habe versucht, damit herumzuspielen Spaltenbreite festlegen aber es funktioniert nicht.
Ich weiß, dass die Spaltenbreite irgendwo gespeichert ist, denn wenn ich die Spaltenbreiten manuell einstelle, den Datensatz speichere und ihn dann erneut öffne, bleiben die Breiten voilà erhalten.Ich weiß einfach nicht, wie ich das in JSL machen soll.
Danke!
Betreff: Spaltenbreite mit JSL festlegen?Dieser kleine Ausdruck stellt die Anzeigebreite so ein, dass sie der Breite der längsten Werte in allen Zeichenspalten einer Datentabelle entspricht, innerhalb der von Ihnen festgelegten Mindest- und Höchstbreiten, indem eine durchschnittliche Zeichenbreite verwendet wird, die Sie ebenfalls festlegen können. Typischerweise haben numerische Spalten standardmäßig gute Breiten, so dass auch das Ändern dieser Breiten für den Leser eine Übung darstellt. Ich dachte, dass diese Routine für große Datentabellen extrem langsam sein würde, also habe ich mir nicht die Mühe gemacht, sie vor heute zu schreiben, aber sie erweist sich als ziemlich schnell und dauert nur ein paar Sekunden, um eine Datentabelle mit über 200.000 Zeilen in 22-Zeichen-Spalten auszuführen.
xpr_resizeCols = Expr(
Local( {list_widths, list_colNames, num_length, num_charWidth,num_maxWidth, num_minWidth },
num_charWidth = 6.5; // set number of pixels per character's average width
num_maxWidth = 400; // set maximum desirable column width
num_minWidth = 45; // set miniumum desirable column width
list_widths = {};
list_colNames = Current Data Table() << get column names( character );
For( i = 1, i <= N Items( list_colNames ), i++, // i = 1
list_temp = list_colNames[i] << get values;
num_length = 0;
For( j = 1, j <= N Items( list_temp ), j++,
If( Length( list_temp[j] ) > num_length,
num_length = Length( list_temp[j] )
)
);
Try( list_colNames[i] << set display width( Max( num_minWidth, Min( num_maxWidth, num_length * num_charWidth ) ) ) );
Insert Into( list_widths, num_length * num_charWidth );
);
);
Write(
"\!N\!tColumns resized to fit contents, within limits " || Char( num_minWidth ) || " to " || Char( num_maxWidth ) ||
" pixels."
);
);Global Pragmatica LLC® ist ein in den USA ansässiger JMP-Anpassungspartner, der kundenspezifische JSL- und JMP-Add-In-Arbeiten zur Miete anbietet; Bitte kontaktieren Sie mich unter [erin dot vang at globalpragmatica dot com], wenn Sie ein Projekt besprechen möchten.
Betreff: Spaltenbreite mit JSL festlegen?Ich habe alle in diesem Thread vorgeschlagenen Lösungen ausprobiert und keine davon funktioniert.Ich verwende JMP 13.2.1.
- „Breite festlegen“ führt nichts aus, wenn der Spaltentitel die Breite überschreitet, die Sie festlegen möchten.
- „Anzeigebreite festlegen“ bewirkt nichts, wenn der Spaltentitel die Breite überschreitet, die Sie festlegen möchten.
- Wenn ich der Spalte einen kurzen Namen wie „xxx“ gebe, die Breite auf 5 setze, die Anzeigebreite auf 5 stelle und dann die Spalte mit dem Namen „xxx“ belasse, bleibt die Spaltenbreite schmal.Sobald ich jedoch den Code verwende Column("xxx") << Set Name("Ein langer Spaltenname"); Dann wird die Breite der Spalte erweitert, um (erfolglos) zu versuchen, den Spaltennamen anzupassen.
Die ursprüngliche Frage bleibt also bestehen: Hat JMP eine Möglichkeit, die Spaltenbreite mithilfe von JSL festzulegen, oder muss ich die Spaltenbreiten dieser Hunderten von Spalten und Dutzenden von JMP-Dateien selbst manuell anpassen?Es ist wirklich einfach, jemandem zu sagen, er solle „es einfach manuell machen“, wenn Sie nicht derjenige sind, der es Hunderte Male in Dutzenden von Dateien tun muss. 
Betreff: Spaltenbreite mit JSL festlegen?Peter
Version 12 hat eine neue Spaltennachricht: Stellen Sie die Anzeigebreite ein.
Try( Column(dtCopy,"Viable cell density") << Set Display Width(120) ):
Try( Column(dtCopy,"Viable cell density") << Set Display Width(120) );
Dave
Betreff: Spaltenbreite mit JSL festlegen?Hallo Matt
Kann ich die Spaltenbreite so einstellen, dass sie für einige Spalten an den längsten Titel und Zelleninhalt passt? Kürzlich habe ich versucht, die Zellen einzufärben, um Waferkarten zu zeichnen, aber ich muss die Breite der Spalten manuell anpassen.
Danke!
Spaltenbreite mit JSL festlegen?In dieser Situation könnten Sie einen kurzen Dummy-Namen verwenden, um zu erzwingen, dass die scheinbare Breite der Feldbreite entspricht.
dt = New Table( "test");
col=dt << New Column( "Curr Serious");
colname=col<<GET name=""></GET>
Die Steuerung des Erscheinungsbilds der Tabelle durch Festlegen der Eigenschaft „Feldbreite“ ist jedoch keine allgemeine Lösung und auch nicht vergleichbar mit der manuellen Änderung einer Spalte durch Ziehen des Rahmens. Wenn beispielsweise die Breite auf weniger Zeichen als den Zellinhalt eingestellt ist, wird anstelle des Werts „###“ oder ähnliches angezeigt.
Spaltenbreite mit JSL festlegen?Hallo Matt,
Das funktioniert, wenn der Spaltentitel kurz ist.Allerdings habe ich längere Spaltennamen und es scheint, dass Sie die Feldbreite nicht kürzer als die Spaltenüberschrift festlegen können.Zum Beispiel:
dt = New Table( "test");
dt << New Column( "Curr Serious");
column("Curr Serious") << Get Field Width(); // default 10;
column("Curr Serious") << Set Field Width(30);
column("Curr Serious") << Set Field Width(3); // shrinks the column but not to 3
Spaltenbreite mit JSL festlegen?Hallo:
dt = New Table( "test");
dt << New Column( "new");
column("new") << Get Field Width(); // default 10;
column("new") << Set Field Width(30);
column('new") << Get Field Width(); // now shows 30;
Show Properties(:new); // log shows a large number of properties, including field width;
Hoffe das hilft,
-Matt