Autor Thema: RichText Formatierung (Tab)  (Gelesen 3627 mal)

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
RichText Formatierung (Tab)
« am: 13.03.06 - 09:50:30 »
Hallo,

via ODBC hole ich mir aus Navision Daten, welche
formatiert in einem computed RichText Feld dargestellt
werden sollen.

Mein Problem da bei ist ein Feld in dem sich die Beschreibung
befindet, da mir die Länge des Feldes nicht bekannt ist, klappt
die Darstellung nicht wirklich zuverlässig :-(

Wenn der Inhalt 18 Zeichen lang ist passt es, ist es weniger
oder mehr verschieben sich meine Tabs :-(

Ich habe eine Funktion von der ich den Wert bekomme, ich habe
auch schon getestet was passiert wenn ich die Feldlänge auf
max. 40 Zeichen begrenze, hilft halt leider auch nicht, wenn der
Inahlt z.B. 27 Zeichen lang ist.


Wie kann ich "dynamisch" Tabs abhängig von der Feldlänge
in einem RichText Feld einstellen?


Anbei mein "toller" SourceCode...
Schnipp---schnipp

   .....irgendwas davor   


   Dim Body As NotesRichtextItem
   Dim BodyCondition As NotesRichtextItem
   Dim richStyle As NotesRichTextStyle
   Dim rtpStyle As NotesRichTextParagraphStyle
   Dim tabpos1 As Long
   Dim tabpos2 As Long

   
   .....irgendwas dazwischen   
   
   Set body = New NotesRichTextItem ( newDoc, "CreditMemoBody" )
   Set richStyle = session.CreateRichTextStyle
   Set rtpStyle = session.CreateRichTextParagraphStyle
      
      
   Call body.AppendParagraphStyle(rtpStyle)
      richstyle.FontSize = 9      
      richstyle.Bold = True
      Call body.AppendStyle(richStyle)
      rtpstyle.Leftmargin = 1611
      
      rtpStyle.FirstLineLeftMargin = RULER_ONE_INCH   
      rtpStyle.LeftMargin = RULER_ONE_CENTIMETER * 7
      
      tabpos1= RULER_ONE_CENTIMETER *4
      tabpos2= RULER_ONE_CENTIMETER *6
      Call rtpStyle.SetTab( tabpos1, TAB_LEFT)   
      Call rtpStyle.SetTab( tabpos2, TAB_LEFT)   
      
      Call body.AppendParagraphStyle(rtpStyle)
      Call body.AddTab(1)
      Call body.AppendText( "Credit Memo: " & CreditMemoNumber)
      Call body.AddNewline(2)
      Call body.AddTab(1)
      
      Call body.AppendText("Pos"+Chr(9))
      
      Call body.AppendText("Description")
      Call body.AddTab(6)
      
      Call body.AppendText("Quantity")
      Call body.AddTab(1)
      
      Call body.AppendText("Unit of Measure ")
      Call body.AddTab(1)
      
      Call body.AppendText("Unit Price")
      Call body.AddTab(1)
      
      Call body.AppendText("Amount")
      Call body.AddTab(2)
      
      Call body.AppendText("Line Discount")
      Call body.AddTab(2)
      
      Call body.AppendText("Begin Maintenance")
      Call body.AddNewline(1)
      richstyle.Bold = False
      Call body.AppendStyle(richStyle)         
      Call body.AddTab(1)   
      
      While(conLine.Fetch(resultListLine) > 0)
         rtpstyle.Leftmargin = 1611
         rtpStyle.FirstLineLeftMargin = RULER_ONE_INCH   
         rtpStyle.LeftMargin = RULER_ONE_CENTIMETER * 7
         tabpos1= RULER_ONE_CENTIMETER *4
         tabpos2= RULER_ONE_CENTIMETER *6
         Call rtpStyle.SetTab( tabpos1, TAB_LEFT)   
         Call rtpStyle.SetTab( tabpos2, TAB_LEFT)
         
         Call body.AppendParagraphStyle(rtpStyle)
         Call body.AddTab(1)
         
         Pos = getValue(rF_Pos.Text(0))
         Call body.AppendText(Pos+Chr(9))
         
         Description = getValue(rF_Description.Text(0))
         Call body.AppendText(Description)
         
         Select Case Len(Description) 'da hab ich versucht mit Select die Tabs entsprechend einzustellen
         Case Is < 20 :
            Call body.AddTab(6)
         Case Is < 41 :
            Call body.AddTab(3)            
         End Select      
         
         Quantity = getValue(rF_Quantity.Text(0))
         Call body.AppendText(Quantity)
         Call body.AddTab(2)
         
         Unit_of_Measure = getValue(rF_Unit_of_Measure.Text(0))
         Call body.AppendText(Unit_of_Measure)
         Call body.AddTab(3)
         
         Unit_Price = getValue(rF_Unit_Price.Text(0))
         Call body.AppendText(Unit_Price)
         Call body.AddTab(2)
         
         Amount = getValue(rF_Amount.Text(0))
         Call body.AppendText(Amount)
         Call body.AddTab(3)
         
         Line_Discount_Pct = getValue(rF_Line_Discount_Pct.Text(0))
         Call body.AppendText(Line_Discount_Pct)
         Call body.AddTab(3)
         
         Beginn_Wartung = getValue(rF_Beginn_Wartung.Text(0))
         Call body.AppendText(Beginn_Wartung)   
         Call body.AddNewline(1)
      Wend
      
      
   .....irgendwas danach


Ich habe in der Online Help schon geschaut aber so richtig schlau
bin ich daraus auch nicht geworden :-( Hier im Forum hab ich mir
den ein oder anderen Code "geklaut", da ich was die Formatierung
von RichText Feldern angeht nicht wirklich weis was es für Möglichkeiten
gibt und es halt wie immer schnell gehn muss, wollte hiermit um Eure
Unterstützung bitten.


Für jede Unterstützung dankbar!

Gruß
Chris

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: RichText Formatierung (Tab)
« Antwort #1 am: 13.03.06 - 10:02:57 »
Nimm doch anstatt von Tab eine Tabelle.

Hier http://atnotes.de/index.php?topic=28996.0 siehst du, wie man mit Script eine Tabelle anlegen kann.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Wirsing

  • Senior Mitglied
  • ****
  • Beiträge: 283
  • Geschlecht: Männlich
    • METZ CONNECT
Re: RichText Formatierung (Tab)
« Antwort #2 am: 13.03.06 - 10:05:53 »
Mit Leerstellen kannste das nicht hinbekommen?

Wäre einfacher, da Du hier

      anzLeerstellen = 40 - len(Description)
      call body.AppendText(UString$(anzLeerstellen," "))

nutzen könntest...

Das setzt natürlich eine Blockschrift( z.B. Courier ) vorraus


Grüsse

Holger
6 Lotus Domino Server 9.0.1(FP5-7) auf Windows 2008R2 Server
ca. 450 Clients mit 8.5.x/9.0.1

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: RichText Formatierung (Tab)
« Antwort #3 am: 13.03.06 - 10:09:34 »
Hallo Axel,

danke für die schnelle Antwort!

Das hab ich mir schon überlegt, aber da ich hier im Forum
gelesen habe, dass es aktuell in R6 keine "einfache" Möglichkeit
gibt die im RichText Feld erzeugt Tabelle zu formatieren (z.B. Rahmen ausblenden)
habe ich mir gedacht ich realisiere die Darstellung der Daten mittels Tabs.

Ich hatte schon eine Tabelle im RichText Feld die Darstellung der Daten hat dem
"Kunden" aber nicht gefallen :-(
Wenn es eine Funktion gibt mit der es möglich ist die Rahmen auszublenden, könnte
ich auch eine Tabelle verwenden.


Konntest Du auf den ersten Blick einen Fehler finden?


Danke & Gruß
Chris

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: RichText Formatierung (Tab)
« Antwort #4 am: 13.03.06 - 10:11:50 »
Hallo Holger,

das könnte ich mal testen.

Kann aber etwas dauern bis ich Berichten
kann ob es geklappt hat oder nicht, da wir
in ca. 10 Min. unsere "Montagsversammlung" haben...

Danke für die Antworten!

Gruß
Chris

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: RichText Formatierung (Tab)
« Antwort #5 am: 13.03.06 - 10:27:34 »
Konntest Du auf den ersten Blick einen Fehler finden?

Nein. Wenn du keine Tabellen nutzen kannst, dann bleibt dir eigentlich nur der Tipp von Holger.
Was anderes fällt mir im Moment auch nicht ein.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: RichText Formatierung (Tab)
« Antwort #6 am: 13.03.06 - 14:18:49 »
Hallo,

vielen Dank für die Unterstützung!
Ich habe es mit der von Holger vorgeschlagenen Lösung
umgesetzt.

...irgendwas davor
Description = getValue(rF_Description.Text(0))
anzLeerstellen = 50 - Len(Description)
Call body.AppendText(Description)
Call body.AppendText(Ustring$(anzLeerstellen," "))
...irgendwas danach

Nochmals vielen DANK für die schnelle Hilfe!

Danke & Gruß
Chris

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: RichText Formatierung (Tab)
« Antwort #7 am: 16.03.06 - 15:26:36 »
Noch ein Geheimtrick zur Vervollständigung, den ich sehr gerne Verwende:

Code
Dim meinStr as String * 50
meinStr = deinStr

damit hast du in "meinStr" immer genau ein 50 Zeichen langer String. Ev. mit Leerzeichen aufgefüllt, oder falls zu lang, abgeschnitten.

Grüsse

Offline Wirsing

  • Senior Mitglied
  • ****
  • Beiträge: 283
  • Geschlecht: Männlich
    • METZ CONNECT
Re: RichText Formatierung (Tab)
« Antwort #8 am: 17.03.06 - 15:02:48 »
Wow, guter Tip!!

Danke an den Untitulierten  ;D
6 Lotus Domino Server 9.0.1(FP5-7) auf Windows 2008R2 Server
ca. 450 Clients mit 8.5.x/9.0.1

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz