LL RTF-Text

Moderator: Moderatoren

Antworten
olaf870
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 128
Registriert: Mi, 26. Okt 2005 18:41
Wohnort: Berlin
Kontaktdaten:

LL RTF-Text

Beitrag von olaf870 »

Hallo allerseits.
In der letzten Usergroup erzählte mir Tom, wie man LL-Textfelder so flexibel macht , so daß es egal ist, ob da Rtf-TExt oder normaler Text kommt. Habe es anscheindend nicht ganz kapiert, bzw. vergessen. Wer weiß Bescheid wie es geht?
Gruß
Olaf870
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Olaf.

Dir stehen jeweils zwei Funktionen zum Definieren von Feldern und Variablen zur Verfügung, nämlich:

Code: Alles auswählen

LlDefineField(nJob,xValue)
LlDefineVariable(nJob,xValue)
sowie

Code: Alles auswählen

LlDefineFieldExt(nJob,xValue,DEFINETYPE,0)
LlDefineVariableExt(nJob,xValue,DEFINETYPE,0)
xValue normalisiert standardmäßig auf String, d.h., alle Daten werden immer als Character übergeben (z.B. per Var2Char). Bei LlDefineVariable() oder LlDefineField() typisiert L&L die Variablen automatisch, je nach Inhalt. Die Übergabe von "10,00" erzeugt numeric usw. Im Gegensatz dazu kann bei den Ext-Funktionen angegeben werden, wie die Daten zu interpretieren sind; die Typisierung wird erzwungen. Dafür gibt es folgende Defines:

Code: Alles auswählen

LL_TEXT
LL_NUMERIC
LL_NUMERIC_LOCALIZED (mit Tausender-Trennzeichen)
LL_DATE (mit Untergruppen für die Formatierung)
LL_BOOLEAN
LL_RTF
LL_HTML
LL_DRAWING (Verweis auf eine Bilddatei)
LL_BARCODE
LlDefineFieldExt(nJob,cMyRTFText,LL_RTF,0) erzeugt also einen RTF-Text, wohingegen LLDefineField(nJob,cMyRTFText) vermutlich eine Zeichenkette generiert.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Ergänzung:

Wenn Du eine Tabelle hast, in der zum Beispiel in einem Memofeld mal ein "normaler" Fließtext steht und manchmal aber auch RTF, dann kannst Du dennoch dasselbe Feld benutzen:

Code: Alles auswählen

IF Left(db->field,5) == "{\rtf"
  LlDefineFieldExt(nJob,"TEXT",db->field,LL_RTF,0)
ELSE
  LlDefineFieldExt(nJob,"TEXT",db->field,LL_TEXT,0)
ENDIF
Wenn Du das Feld "TEXT" plaziert hast, entscheidet L&L automatisch, wie der Text zu formatieren ist. Als LL_RTF übermittelte Inhalte werden immer als RTF behandelt. Und umgekehrt.
Herzlich,
Tom
olaf870
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 128
Registriert: Mi, 26. Okt 2005 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von olaf870 »

Na Tom,
danke erstmal, aber ich glaube nicht ganz, dass das so geht.

Wenn ich einen RTF-Text an eine "normales" Textvariable übergebe, kommt Unsinn raus. Ebenso mag ein RTF-Textvariable keine "normalen Texte" (LL druckt zwar den Text richtig, aber zusätzlich noch den Variablennamen der Rtf-Variable, deswegen scheidet diese Möglichkeit auch aus).

So weit sind wir uns wohl einig. Den Rest verstehe ich nicht ganz.

Das Problem ist, dass das LL-Formular anscheinend nicht so flexibel ist, daß es immer funktioniert, egal ob RTf oder Nicht-RTF, auch wenn ich noch so trickreich mit

LlDefineFieldExt( hJob, "VarName", FldContent, FldType, 0 )

das Formular befülle.

Natürlich kann man nun im Programm feststellen, on ich einen normalen Text oder einen Rtf-TExt habe und FldType entsprechend setzen. Nützt aber nix, denn ich für fldType LL_TEXT sage, zeigt er mir in der Variablenliste im Designer für "VarName" etwas anderes, als wenn ich LL_RTF sage. (Ich kann ja auch erst gar keine RtfVariable im Designer plazieren, wenn ich eine normale Textvariable rüberschicke)

Das heißt, ich brauche mindestens 2 oder mehr Formulare, die ich dann abhängig von dem Datensatz und seiner jeweiligen Textformatierung auswählen muß. Genau das wollte ich vermeiden.

Der einzige Trick den ich sehe ist, im Zweifel immer alle Texte vom Programm gleich in RTF umzuwandeln bevor ich es nach LL schiebe. Oder umgekehrt alles nach Text. Beides dies wollte ich jedoch nicht, da das wieder andere Probleme nach sich zieht, das eine MAl ist die formatierung weg, das andere Mal hat das LL-Rtf-Control Schwierigkeiten mit Rtf-TExt in MS Sans Serif (und dummerweise wandelt mein Rtf-Control Memofeld-Fließtext ausgerechnet immer in diese Schrift.

Noch eine Idee oder habe ich es nicht kapiert?

Gruß
Olaf870
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Olaf,
habe es selber mit RTF noch nicht probiert, aber im zweifelsfall mache doch 2 Definitionen in deinem Formular, ein RTF eins Text und setze für die Darstellungsbedingung noch eine Variable, so kannst du im selben Formular ein Element ein-, das andere ausblenden.
Viele Grüße
Wolfgang
Antworten