Zellenformate steuern

Liebe Freunde,

ich habe hier im Forum schon einmal Hinweise zu Rechenblattbefehlen gefunden, durch welche die Formate von Zellen gesteuert werden konnten; ich weiß aber nicht mehr, unter welchen Titeln und finde sie nicht wieder. Aber jetzt brauche ich sie. Auch in den Büchern von Schulz und Kaegi/Rodenhausen habe ich dazu noch nichts gefunden.
Ich möchte zum Beispiel die Textfarbe oder das Hintergrundmuster einer Zelle durch den Inhalt einer anderen Zelle steuern lassen. Mein größter Wunsch greift vermutlich zu hoch: Die Vereinigung von Zellen und die Auflösung der Vereinigung steuern lassen. Ist das möglich?
(RagTime 6.0.2, Build 1632, Mac OS 10.5.5)

Mit bestem Gruß
Andreas Loos

-----------------------

Dipl. math. Andreas Loos
Schirmdiek 1
21734 Oederquart

04779 / 8258
0170 / 23 19 763
loos-logisys@t-online.de

Freie Waldorfschule Stade
Henning-von-Tresckow-Weg 2
21684 Stade
waldorf-stade@t-online.de

Re: Zellenformate steuern

#8270 On 2 Januar, 2009 21:20 djschulz said,

Hallo,

als kleine Hilfestellung:

Vereinigung mit Applescript anlegen lässt sich, wie Thomas schon erwähnt hat leicht aufzeichnen:

tell application "RagTime 6"
activate
select range "A1:B3" of table "Rechenblatt 1" of document 1
make new union with data selection at end of table "Rechenblatt 1" of document 1
set color of selection to {cyan:25, magenta:25, yellow:100, black:5}
end tell

Verinigung wieder auflösen geht anscheinend nur mit GUI-Scripting über die Auswahl des Menüs:
activate application "RagTime 6"
tell application "System Events"
tell process "RagTime"
tell application "RagTime 6"
select range "A1:B3" of table "Rechenblatt 1" of document 1
set color of selection to {cyan:0, magenta:0, yellow:0, black:0}
end tell
click menu item "Vereinigung auflösen" of menu 1 of menu bar item "Rechenblatt" of menu bar 1
end tell
end tell

Unbedingt beachten:
Die Anleitung zum Skripten von RagTime von Jürgen Schell:
http://experts.ragtime.de/experts/node/2485

Gruß,
Detlef Schulz

Re: Zellenformate steuern

#8271 On 3 Januar, 2009 08:54 Andreas Loos said,

Lieber Detlef,

viele Antworten auf meine Frage. Herzlichen Dank.
Nur eine Frage noch: was ist GUI-Scripting (im Gegensatz zum "normalen" Scripting?)

Mit bestem Gruß
Andreas Loos

Re: Zellenformate steuern

#8269 On 2 Januar, 2009 20:45 Thomas Kaegi said,

Hallo Andreas

In meinem Buch ist sehr wohl etwas dazu zu finden.
Z.B. führt im Index "Füllungen / Variable Füllungen mit Formeln erzeugen" zum Gesuchten.
Im damit referierten Beispiel werden auch Schriftfarben und andere Formate gesteuert.

Aber auch im Kapitel F2 wird mit variablen Füllungen gearbeitet.
Für die formelgesteuerte Formatierung von Text ist neben "SetzeBereichFüllung" auch die Martin's Power Funktion "FormatAnwenden" sehr nützlich.

Das Vereinigen/Aulösen von Vereinigungen geht wohl wirklich nur per Skript (wenn überhaupt). Aber vielleicht brauchst du das gar nicht zwingend. Schau mal das Beispiel mit dem verschwindenden Knopf ab Seite 147 an - mit Vorteil allerdings gleich das ganze Knopfkapitel.

Ich habe versucht, die Operationen "Vereinigen" und "Vereinigung auflösen" als Skript aufzuzeichnen. Beim Vereinigen wird ein Skript aufgezeichnet, beim Auflösen nicht. Es scheint, also ob der betreffende Befehl nicht scriptfähig sei - oder aber einfach nicht "recordable". Das Skript für das Vereinigen lautet:
tell application "RagTime 6.5"
 activate
 select range "A1:B1" of table "Rechenblatt 1" of document 1
 make new union with data selection at end of table "Rechenblatt 1" of document 1
end tell

Mit freundichem Gruss
Thomas

Re: Zellenformate steuern

#8272 On 3 Januar, 2009 08:59 Andreas Loos said,

Lieber Thomas,

ich hatte schon gehofft, dass es das in Deinem Buch gibt. Es ist ja immer das Problem mit Inhaltsverzeichnissen und Schlagwortregistern: wie soll man suchen?

Herzlichen Dank für die Hinweise!

Andreas Loos

Re: Zellenformate steuern

#8273 On 3 Januar, 2009 09:20 Thomas Kaegi said,

Lieber Andreas

"Gewöhnliches" Scripting: Die Befehle in der Script-Sprache (AppleScript) schreiben, so wie eben im von mir aufgezeichneten Script zum Vereinigen von Zellen. Also "Make new union" ist der Scriptbefehl für "Vereinigen", braucht aber noch zusätzliche Attribute.

"GUI"-Scripting: Die Befehle (in Script-Sprache) so schreiben, dass das Script die Befehle nachvollzieht, die man selbst im GUI (Graphical User Interface) eingeben müsste - der eigentliche Befehl steht so im Script, wie er im Menü steht. Eben, wie von Detlef angegeben:
'click menu item "Vereinigung auflösen" of menu 1 of menu bar item "Rechenblatt" of menu bar 1'
Wie leicht ersichtlich braucht es auch hier ein wenig "Zugemüse", z.B. die Angabe "of menu bar 1".

Ein wesentlicher Unterschied: Ein RagTime-Dokument mit einem "gewöhnlichen" AppleScript" wird in jeder Sprachversion von RagTime korrekt laufen, ein "GUI-Script" dagegen nicht, weil der Befehl und das Menü im englischen RagTime nicht "Vereinigung auflösen" und "Rechenblatt" heissen, also bei Ausführung des Scripts nicht gefunden würden.

Danke Detlef für den Hinweis. Die Möglichkeit des GUI-Scripting vergesse ich immer wieder. Allerdings die Frage: Das lässt sich ja nicht so einfach aufzeichnen - wie findet man dann die notwendigen Attribute eines Befehls, wie z.B. das eben zitierte "of menu bar 1"?

Mit freundlichem Gruss
Thomas

Re: Zellenformate steuern

#8274 On 3 Januar, 2009 21:07 djschulz said,

Hallo Thomas,

um die Hierarchie in einem GUI-Interface herauszubekommen gibt es drei Möglichkeiten.

1. Man fragt sich per AppleScript durch die Hierarchie durch. Dafür fragt man einfach nach den GUI-Elementen eines Prozesses und hangelt sich dann durch. Die properties eines UI elements helfen einem dabei herauszufinden was man damit machen kann:
activate application "RagTime 6"
tell application "System Events"
tell process "RagTime"
set allUI to get UI elements --Liste aller GUI-Elemente, oberste Ebene
properties of item 1 of allUI
end tell
end tell

2. Man verwendet den UI element Inspector von Apple. Er nimmt einem die Arbeit nicht völlig ab, gibt einem aber einen guten Einblick in die Objekthierarchie von UI-Elementen.
http://developer.apple.com/samplecode/UIElementInspector

3. Meine Lieblingslösung. Man verwendet den UI Browser von Prefab. Dabei handelt es sich um ein ähnliches Werkzeug wie das von Apple, es hat aber den Vorteil, das es einem auch gleich den AppleScript-Code liefert den man für den Zugriff auf ein element des Benutzerinterfaces benötigt. Das erspart enorm viel Zeit beim GUI-Scripting.
http://prefabsoftware.com/

Eigenwerbung:
Alle drei Alternativen werden in einem eigenen Kapitel ausführlich in meinem AppleScript-Buch behandelt das (jetzt endlich) in Kürze beim SmartBooks-Verlag erscheint, inklusive einiger Fallstricke die es zu beachten gibt, sowie einer Beschreibung aller UI-element-Klassen und Befehle mit Beispielen.

Liebe Grüße,
Detlef Schulz

Re: Zellenformate steuern

#8277 On 4 Januar, 2009 09:08 Andreas Loos said,

Lieber Detlef,
an dem Buch bin ich auch interessiert. Sagst Du dem Verlag, er soll mir eine Notiz von der Veröffentlichung schicken?
Danke!
Andreas

Re: Zellenformate steuern

#8275 On 3 Januar, 2009 21:25 Thomas Kaegi said,

Lieber Detlef

Danke für deine Hinweise. Das Buch werde ich mir auf jeden Fall kaufen. Ich hoffe, dass es mir endlich mehr Einblick in die Welt von AppleScript ermöglicht. Bisher habe ich nur mit Aufzeichnen und dann Probieren gearbeitet, ohne wirklich zu verstehen was ich machte, warum etwas funktionierte und anderes nicht - obwohl ich recht komplizierte Dinge hingekriegt habe.
Ich wünsche dir viel Erfolg mit dem Buch! Bitte melde, sobald es erhältlich ist.

Mit herzlichem Gruss
Thomas

Re: Zellenformate steuern

#8276 On 4 Januar, 2009 09:05 Andreas Loos said,

Lieber Detlef, lieber Thomas,

die Apple-Scripts zur Vereinigung und Auflösung der Vereinigung arbeiten perfekt. Seltsamerweise nicht als RagTime-Scripts. Da tun sie gar nichts. Nicht einmal eine Fehlermeldung kommt.

Mit den Befehlen "FormatAnwenden(Wert; StilvorlagenName)" und "SetzeBereichFüllung(Bereich; Füllstil)" kann ich gar nichts anfangen: der erste erkennt keinen StilvorlagenNamen, was immer ich auch eingebe aus meinen Vorlagen (und was bitte ist "Wert" für ein Wert?); auch der zweiten Befehl akzeptiert nichts, was ich als "Füllstil" eingebe. Ich finde wieder nichts dazu (suche ich nach den falschen Schlagwörtern?).

Gruß
Andreas
(MacOS 10.5.5, RagTime 6.0.2 (Build 1632)

Andreas Loos

Re: Zellenformate steuern

#8278 On 4 Januar, 2009 09:36 Thomas Kaegi said,

Lieber Andreas

die Apple-Scripts zur Vereinigung und Auflösung der Vereinigung arbeiten perfekt. Seltsamerweise nicht als RagTime-Scripts. Da tun sie gar nichts. Nicht einmal eine Fehlermeldung kommt.

Das von mir angeführte Script habe ich vom Script Editor zu RagTime kopiert und dort als Script gespeichert. Es arbeitet perfekt. Ich habe keine Ahnung, was man dabei falsch machen könnte. Die Scripts von Detlef habe ich nicht probiert.

Mit den Befehlen "FormatAnwenden(Wert; StilvorlagenName)" und "SetzeBereichFüllung(Bereich; Füllstil)" kann ich gar nichts anfangen: der erste erkennt keinen StilvorlagenNamen, was immer ich auch eingebe aus meinen Vorlagen (und was bitte ist "Wert" für ein Wert?); auch der zweiten Befehl akzeptiert nichts, was ich als "Füllstil" eingebe. Ich finde wieder nichts dazu (suche ich nach den falschen Schlagwörtern?).

"FormatAnwenden" hat leider immer noch einen Bug: Es werden nur Schriftvorlagen und Werteformate korrekt behandelt, Absatzformate dagegen nicht (entgegen der Funktionsspezifikation). Ich hoffe immer noch, dass der Bug in der nächsten Version korrigiert wird und bin deswegen auch bei RagTime vorstellig geworden. Martin's Power Functions sind im Moment für RT 6.5 noch nicht verfügbar. Aber sonst arbeitet die Funktion perfekt.
Z.B. gibt "FormatAnwenden(1.1.09;'3. April 1995')" korrekt die Darstellung "1. Januar 2009".
"3. April 1995" ist ein in RagTime vordefiniertes Werteformat.

Für die Funktion "SetzeBereichFüllung" verweise ich dich auf das Beispiel, das in meinem Buch auf Seite 145 unter dem Titel "Anspruchsvolle Radioknöpfe" beschrieben ist, insbesondere die Formel F2-6. Auch damit sollte es keine Probleme geben.
Oder noch einfacher: Schreib in Zelle B1 eines Rechenblattes folgende Formel:
SetzeBereichFüllung(A1;Wenn(A1;'Rote Füllung';'Blaue Füllung'))
Die Zelle A1 wird nun sofort mit blauer Füllung versehen. Sobald du aber in Zelle A1 einen Wert ungleich 0 eingibst wird die Zelle rot hinterlegt. Die in diesem Beispiel verwendeten Füllstile sind in jedem RagTime-Dokument vordefiniert.

NB für Benutzer der DE-CH-Version von RagTime: In den obigen Formeln müssen doppelte(") statt der einfachen(') Anführungszeichen verwendet werden.

Mit freundlichem Gruss
Thomas

Re: Zellenformate steuern

#8279 On 4 Januar, 2009 12:34 djschulz said,

Hallo Thomas,
Hallo Andreas


die Apple-Scripts zur Vereinigung und Auflösung der Vereinigung arbeiten perfekt. Seltsamerweise nicht als RagTime-Scripts. Da tun sie gar nichts. Nicht einmal eine Fehlermeldung kommt.

Ich kann dieses Verhalten bestätigen. Meine alten Skripte in RagTime funktionieren. Neue kann ich nicht mehr anlegen. Auffällig ist, dass neue Skripte in RagTime keine Codeformatierung mehr erhalten wenn man auf den Haken klickt. Das heißt diese werden offensichtlich gar nicht mehr kompiliert.
Jetzt frage ich mich woran das liegt, denn ich habe vor ein paar Monaten noch Skripts in RagTime angelegt. Liegt es an einem der letzten Betriebssystemupdates oder an RagTime?
Ich arbeite mit Mac OS X 10.5.5 zur Zeit. Das Verhalten tritt bei mir auf in RagTime 6.0.2 und 6.5.
Was verwendet Ihr?

Detlef Schulz

Re: Zellenformate steuern

#8284 On 4 Januar, 2009 13:08 Thomas Kaegi said,

Hallo Detlef und Lutz

Ich arbeite mit Mac OS X 10.5.6 und RagTime 6.5 (1811) oder 6.0.2 (beide DE-CH, aber das spielt ja sicher keine Rolle)

Ja, Lutz, das Aufzeichnen aus RagTime geht seit OS X nicht mehr. Das klappte nur bis OS 9.
Also aufzeichnen mit ScriptEditor und dann rüberkopieren.

Detlef - eben habe ich mit RT 6.5 ein neues RT-Dokument angelegt, unter Extras den Befehl "AppleScripts/Skripte verwalten…" aufgerufen, das Fenster für ein neues Skript geöffnet und dann aus dem Forum (also sicher nicht formatiert) das in meinem Beitrag vom 2.1., 20:45 angegebene Skript kopiert und eingesezt. Nach Klick auf das Häkchen wird das Skript einwandfrei kompiliert und funktioniert auch bestens.

Gruss
Thomas

Re: Zellenformate steuern

#8280 On 4 Januar, 2009 12:48 Lutz Cleffmann said,

Hallo,
es ist wohl nicht mehr möglich, in RagTime direkt Skripts aufzuzeichnen. Ich bin deshalb den Umweg gegangen, ein Skript mit dem Skripteditor aufzuzeichnen und es dann anschließend in RagTime hineinzukopieren. Das hat bei mir einwandfrei geklappt.

Da ich allerdings nicht wirklich Bescheid weiß, kann das allerdings auch ein Zufallstreffer gewesen sein.

Gruß
Lutz Cleffmann

Re: Zellenformate steuern

#8266 On 1 Januar, 2009 17:28 "Norbert R. Obst" said,

Hallo Andreas!

Ich arbeite mit Mac OS X Version 10.5.5 und RagTime 6.0.2 (Build 1632)
auf einem iMac mit 2,4 GHz Intel Core 2 Duo.z.

Es geht mit der Ittersoft-Funktion "SetzeBereichFüllung(Bereich;
Füllstil)", allerdings noch nicht mit RagTime 6.5.
Das Vereinigen usw. wird sicherlich nur mit einem Script gehen.

Mit freundlichen Grüßen
Norbert O

Am 01.01.2009 um 13:56 schrieb Andreas Loos:

> Liebe Freunde,
>
> ich habe hier im Forum schon einmal Hinweise zu Rechenblattbefehlen
> gefunden, durch welche die Formate von Zellen gesteuert werden
> konnten; ich weiß aber nicht mehr, unter welchen Titeln und finde
> sie nicht wieder. Aber jetzt brauche ich sie. Auch in den Büchern
> von Schulz und Kaegi/Rodenhausen habe ich dazu noch nichts gefunden.
> Ich möchte zum Beispiel die Textfarbe oder das Hintergrundmuster
> einer Zelle durch den Inhalt einer anderen Zelle steuern lassen.
> Mein größter Wunsch greift vermutlich zu hoch: Die Vereinigung von
> Zellen und die Auflösung der Vereinigung steuern lassen. Ist das
> möglich?
>
> Mit bestem Gruß
> Andreas Loos
>
> -----------------------
>
> Dipl. math. Andreas Loos
> Schirmdiek 1
> 21734 Oederquart
>
> 04779 / 8258
> 0170 / 23 19 763
> loos-logisys@t-online.de
>
> Freie Waldorfschule Stade
> Henning-von-Tresckow-Weg 2
> 21684 Stade
> waldorf-stade@t-online.de
>
>

Re: Zellenformate steuern

#8267 On 2 Januar, 2009 10:14 Andreas Loos said,

Lieber Norbert,

Vielen Dank für die schnelle Nachricht.
Die Scripterei ist mir leider immer noch sehr fremd. Ich werde mich einarbeiten müssen.
Gruß

Andreas Loos