OBS/Adminhilfe/RTF

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.

Dies ist eine zugriffsgeschützte Seite.


Admin-Hilfe

OBS-Administration / Installation
kundenspezifische Anpassungen
OBS Protokolle
Shop-Administration

Häufige RTF-Probleme

SQL-Querys

Es kann bei einigen Altlasten passieren das leere RTF-Strings in der Datenbank existieren. Mit folgendem SQL-Statement kann man diese heraus löschen:

update artikel set a_langtext = ''
where a_langtext = '{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil MS Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs16 \r\n\\par }\r\n\0'

Umstellung auf RTF

Was ist zu tun?

  1. PMode 916 auf Ja stellen
  2. Drucke für RTF anpassen
  3. Kontrollieren ob die Wörterbuchdateien (Datei:DICT.ZIP) im Verzeichnis (obs\data\DICT\) liegen

Druckanpassungen

In den vars hinzufügen (Vorbildprint nur wenn auch Bilder ausgedruckt werden sollen):

    vorbildprint       : String;
    nRTFStart          : integer;
    nRTFCharCount      : integer;

Nach

    // KOPFTEXT ANFANG

suchen und den Abschnitt durch folgendes ersetzen:

    if (lKopfFuss) then begin
      cBuffer := A_Query.FieldByName('a_kopftext').asString;
      if (not empty(Alltrim(cbuffer))) then begin
        LangtextDruck(cBuffer,'posnr',cResultVor);
        Inc(y,0.5);
        cBuffer := '';
      end;
    end;

ACHTUNG! Nur im vorgangsdruck Angebot mit Bedingung lKopfFuss!


Nach

procedure Positionen();

suchen und in den Vars einfügen:

    nAnzCharDruck : Integer;
    cRTFOrg       : String;
    nLMemo        : Integer;

Die Variable cResultVor ist in allen Prozeduren zu deklarieren, in denen Langtexte gedruckt werden. Sie ist am Anfang leer zu initialisieren.


Nach

cBuffer := AZ_Query.FieldByName('az_memofeld').asString;

oder bei Kasse:

cBuffer := AZ_Query.FieldByName('az_langtext').asString;

in Positionen(); suchen und alles was in nachfolgendem IF vorkommt ersetzen mit:

                 if (not empty(cBuffer)) then begin
                   if (empty (cResultvor)) then begin
                     inc(y);
                   end;
                   if PositionLangtextDruck(cBuffer,nWelcheZeile,cWo,cWelcheZeile,cResultVor,RTF_LANGTEXT) then begin
                     break;
                   end;
                   Dec(y);
                 end;
                 if (y >= iSeitenlaenge -iFusszeilen) then begin
                   break;
                 end;

Wiederholen, bis alle az_memofeld-Benutzungen (3x) in Positionen so umgestellt sind.


In Positionen am ende des Cases einen neuen Punkt

          17 : begin
                  if Pagebreak(cWo,cResultvor) then begin
                     break;
                  end;
               end;

hinzufügen.


Suche

TextFuss();

Ersetzen durch

 TextFussRich();

Für das Drucken von Bildern nach

    cBuffer := AZ_Query.A2C('az_bez2');

in Positionen suchen, danach hinzufügen:

                             // Bildermodul-Funktionsaufruf
                             BilderModul(AZ_Query,vorbildprint);

Wichtig ist hierbei, dass nach dem Langtext y inkremetiert wird, falls y niedriger ist, als das Bildende. Für die feste Bildgröße gibt es die Konstante PIC_HEIGHT (deklariert in QStandard.inc). Einzufügen ist im Code folgendes:

neue Variable in Positionen():

    nPicPos       : Integer;

Setzen nach Bildermodul-Aufruf:

                 // Bildermodul-Funktionsaufruf
                 BilderModul(AZ_Query,vorbildprint);
                 nPicPos := y;

vor Bedingung für PosLine():

                 if (not empty(vorbildprint)) then begin
                     if ((nPicPos + PIC_HEIGHT) > y) then begin
                         y := nPicPos + PIC_HEIGHT;
                     end;
                 end;

                 if Pmode_Nein(303) then begin
                     PosLine();
                     PosCalcUebertrag();
                 end;