Conditional format

Is it possible to get a conditional format in the spreadsheet of Ragtime.
Sample: If a cel is greater then zero, it should colour blue and if the cell is smaller then zero it should be colour red.

In German:

Ist es möglich im Rechenblad ein "Conditional Format" ein zu geben.
Zum beispiel: Wenn die Zahl kleiner grösser ist dan Null, soll die Celle Blau sein, is die Zahl kleiner dan Null, sollte die Cell Rot sein?

Re: Conditional format

#9200 On 2 Februar, 2010 14:29 Seb said,

Hallo John und Thomas,

gibt es einen Befehl ähnlich zu "SetzeBereichFüllung" für Rechenblätter, mit dem die Breite einer Spalte oder die Höhe einer Zeile gesetzt werden kann?

Seb

Re: Conditional format

#9201 On 2 Februar, 2010 15:02 Thomas Kaegi said,

Hallo Seb

Es wäre wichtig zu wissen, ob du mit Mac, oder unter Windows arbeitest.

Auf Mac kann das Problem mit AppleScript gelöst werden:
tell application "RagTime 6.5"
activate
set width of column 1 of table "Rechenblatt 1" of document 1 to 100
set height of row 1 of table "Rechenblatt 1" of document 1 to 40
end tell

Wenn die Höhen und Breiten im Rechenblatt auf "Automatisch" gestellt sind, dann kannst du auch in irgend eine Zelle deines Rechenblatts eine Zeichnung mit den gewünschten Abmessungen platzieren und diese Zeichnung dann per Formel in die gewünschte Spalte/Zeile holen (natürlich ausserhalb des im Layout sichtbaren Bereichs). Damit must du allerdings etwas experimentieren, denn RagTime schlägt noch etwas dazu. Aber auch im Script musst du herausfinden, was die 100 oder 40 in obigem Beispiel wirklich bedeuten.

Gruss
Thomas

Re: Conditional format

#9203 On 2 Februar, 2010 17:07 Seb said,

Hallo Thomas,

ich benutzte Windows, Ragtime 6.5.
Für den angedachten Fall liegen Mustertexte vor - als Textkomponente nicht als Einträge in einem Rechenblatt. Wir wollen einzelne Texte in die Zeller eine Rechneblattes (Tabelle) kopieren - je nach Anwendungsfall. Die Textlänge variiert leicht, sodass z.B. „Text A“ 3 Zeilen, „Text B“ aber nur 2 Zeilen lang ist. Die Zellenabmessungen passen sich nicht automatisch an. Da wir nicht von Hand jedes Mal die Zellenabmessung anpassen wollen, suchen wir eine passende Vorgehensweise.

Gruß,
Seb

Re: Conditional format

#9204 On 2 Februar, 2010 17:51 Thomas Kaegi said,

Hallo Seb

Du arbeitest unter Windows: Damit fällt die direkte Methode mit AppleScript ausser Betracht. ;-(

So fällt mir keine andere Methode ein, als die gemäss meinem zweiten Vorschlag im vorletzten Beitrag. Das bedingt aber, dass für die Zeile und die Spalte, in welcher sich die zu steuernde Zelle befindet, die Höhe/Breite auf automatisch gestellt wird.

Aber ich frage mich, weshalb das überhaupt so gesteuert werden muss. Wenn für die Rechenblattzeile die Höhe auf "Automatisch" gestellt wird, dann passt sich die Höhe doch automatisch an den Platzbedarf des Textes an. Zusätzlicher Abstand oben oder unten lässt sich auch einstellen. Die Breite passt sich allerdings an mehrzeiligen Text nicht an, nur die Höhe.

Gruss, Thomas

Re: Conditional format

#9205 On 3 Februar, 2010 09:02 Thomas Kaegi said,

Hallo Seb

Ich habe noch eine Idee:

Textkomponenten, von denen du schreibst, beeinflussen die Höhe und Breite einer Zelle nicht, in die sie per Formel geholt werden, auch wenn die entsprechenden Einstellungen auf "automatisch" stehen.

Lege also die Textkomponenten in je eine Zeichnung (an der Position 0/0). Den dabei gezeichneten Rand der Textkomponente machst du entweder transparent oder ordnest ihm die Linienvorlage "Containerrand" zu. Das Rechteck ziehst du so gross auf, wie die Zelle mit dem reingeholten Text werden soll (abzüglich automatischer Zuschlag von RagTime). Die Höhe/Breite der Zeile/Spalte, in welche die Textkomponente geholt werden soll, muss auf "Automatisch" stehen. Die beiden Zeichnungen legst du in irgend eine Rechenblattzelle ausserhalb des sichtbaren Bereichs oder in ein anderes Rechenblatt. Jetzt kannst du per Formel die eine oder andere Zeichnung (und damit den darin angeordneten Text) in die gewünschte Zelle holen.

An und für sich würde auch mehrzeiliger Text in der Rechenblattzelle die gleiche Aufgabe erfüllen, allerdings nur in der Höhe, nicht in der Breite.

MfG, Thomas

Re: Conditional format

#9202 On 2 Februar, 2010 15:06 Thomas Kaegi said,

Was ich noch zu sagen vergass:
Voraussetzung ist natürlich bei der zweiten Methode, dass die Zeichnung das breiteste/höchste Objekt in der Spalte/Zeile ist. Das Script funktioniert dagegen unabhängig davon - und auch die vorhandene Einstellung für Breite/Höhe spielt keine Rolle.
T

Re: Conditional format

#9195 On 25 Januar, 2010 17:45 Thomas Kaegi said,

Hello John

Ja das ist möglich - am einfachsten mit der Erweiterung "Martin's Power Functions". Dazu gehört die Funktion "SetzeBereichFüllung(Bereich; Füllstil)". Wenn die Farbe der Zelle A1 so angepasst werden soll kannst du in irgend einer Zelle des Rechenblatts die Formel schreiben:

SetzeBereichFüllung(A1; Wenn(A1≥0;"Blaue Füllung";"Rote Füllung"))

Wenn du häufig derartige Sachen brauchst, dann lohnt sich die Anschaffung von Martin's Power Functions. Du findest diese Erweiterung auf der RagTime-CD und kannst sie meines Wissens während eines Monats gratis testen.

Es geht auch sonst - ist aber ziemlich aufwändig und deshalb bei häufiger Anwendung nicht zu empfehlen!

1. Leg eine Kopie des Containers an, in welchem sich das Rechenblatt befindet
2. Lösche im Inventar die Kopie des Rechenblatts, die dadurch erstellt wurde.
3. Zieh die ursprüngliche Rechenblattkomponente aus dem Inventar in den jetzt leeren Container
4. Setz die Füllvorlage des Containers auf "Transparent"
5. Wähle im Rechenblatt die Zelle aus, die farbig hinterlegt werden soll, und weise auch ihr die Füllvorlage "Transparent" zu
6. Klick in eine Zelle des Rechenblatts im ursprünglichen Container und wähle den Befehl "Lage anhängen" im Rechenblatt-Menü
7. Öffne die Komponente (Befehl im Fenster-Menü) in einem eigenen Fenster
8. Stelle mit dem Einblendmenü in der Werkzeugleiste sicher, dass du Lage 2 des Rechenblatts siehst.
9. Wähle eine Zelle dieses Rechenblatts aus, die im Layout nicht sichtbar ist, z.B. Zelle Z1, und wähle im Rechenblattmenü als Inhaltsart "Zeichnung"
10. Leg in dieser Zeichnung an Position 0/0 ein Rechteck mit blauer Füllung und blauem Rand an, mindestens so gross wie die zu hinterlegende Rechenblattzelle
11. Wiederhole Schritt 9 und 10 mit Zelle Z2 und roter Füllung
12. In der gleichen Zelle, die in Lage 1 hinterlegt sein soll, gibst du folgende Formel ein (hier ist für die Formel angenommen, dass es sich um Zelle A1 handelt):
Wenn([1]A1≥0;Z1;Z2)
13. Nun positionierst du den kopierten Container, in welchem jetzt Lage 1 des Rechenblatts sichtbar ist, genau über dem Container mit Lage 2 des Rechenblatts.
Jetzt wird, abhängig vom Wert in Zelle A1 (Lage 1) des Rechenblatts, eine der beiden Zeichnungen in die Zelle A1 (Lage 2) des Rechenblatts geholt. Da sowohl der Container mit Lage 1 des Rechenblatts, als auch die Zelle A1 in Lage 1 transparent sind, ist diese Zeichnung durch Zelle A1 hindurch sichtbar.

Wenn du mir deine Mailadresse mitteilst (unten an dieser Meldung auf "Dem Verfasser schreiben" klicken), schicke ich dir das so erstellte Dokument.

Gruss, Thomas