OBS/Adminhilfe/RTF: Unterschied zwischen den Versionen
Nimz (Diskussion | Beiträge) |
Nimz (Diskussion | Beiträge) |
||
| Zeile 21: | Zeile 21: | ||
<source lang="delphi"> | <source lang="delphi"> | ||
vorbildprint : String; | vorbildprint : String; | ||
</source> | </source> | ||
---- | ---- | ||
| Zeile 30: | Zeile 28: | ||
<source lang="delphi"> | <source lang="delphi"> | ||
if (lKopfFuss) then begin | if (lKopfFuss) then begin | ||
cBuffer := A_Query.A2C('a_kopftext'); | |||
if (not empty(Alltrim(cbuffer))) then begin | |||
LangtextDruck(cBuffer,'posnr',cResultVor); | |||
Inc(y,0.5); | |||
cBuffer := ''; | |||
end; | |||
end; | end; | ||
</source> | </source> | ||
'''ACHTUNG!''' Nur im vorgangsdruck Angebot mit Bedingung ''lKopfFuss''! | '''ACHTUNG!''' Nur im vorgangsdruck Angebot mit Bedingung ''lKopfFuss''! | ||
---- | ---- | ||
| Zeile 61: | Zeile 50: | ||
<source lang="delphi"> | <source lang="delphi"> | ||
if (not empty(cBuffer)) then begin | 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; | |||
</source> | |||
Falls direkt auf den Langtext folgende Zeilen aufgerufen werden, sollten diee entfernt werden. | |||
<source lang="delphi"> | |||
if (y >= iSeitenlaenge - iFusszeilen) then begin | |||
break; | break; | ||
end; | end; | ||
</source> | </source> | ||
Wiederholen, bis alle az_memofeld-Benutzungen (3x) in Positionen so umgestellt sind. | Wiederholen, bis alle az_memofeld-Benutzungen (3x) in Positionen so umgestellt sind. | ||
---- | ---- | ||
In Positionen am | |||
Die Vorgangslangtexte müssen ebenfalls angepasst werden. Dazu alles im Positionstyp 1 mit folgenden Zeilen ersetzten: | |||
<source lang="delphi"> | |||
cBuffer := AZ_Query.A2C('az_memofeld'); | |||
if (not empty(cBuffer)) then begin | |||
Inc(y); | |||
if (TitelLangtextDruck(cBuffer,nWelcheZeile,cWo,cWelcheZeile,cResultVor,GetTextBreite('1'))) then begin | |||
break; | |||
end; | |||
Dec(y); | |||
end; | |||
</source> | |||
---- | |||
In Positionen am Ende des Cases einen neuen Punkt | |||
<source lang="delphi"> | <source lang="delphi"> | ||
17 : begin | 17 : begin | ||
if (Pagebreak(cWo,cResultvor)) then begin | |||
break; | |||
end; | |||
end; | end; | ||
</source> | </source> | ||
| Zeile 100: | Zeile 113: | ||
Für das Drucken von Bildern nach | Für das Drucken von Bildern nach | ||
<source lang="delphi"> | <source lang="delphi"> | ||
case AZ_Query.A2I('az_typ') of | |||
0 : begin | |||
Inc(y); | |||
if (y >= iSeitenlaenge-iFussZeilen) then begin | |||
cWo := 'Vor Bezeichnung1'; | |||
break; | |||
end; | |||
</source> | |||
in Positionen suchen. Zwischen ''Inc(y)'' und Abfrage folgendes einfügen: | |||
<source lang="delphi"> | |||
// *** BILDERMODUL *** | |||
cBuffer := vorbildprint; | |||
if BilderModul(AZ_Query,vorbildprint) then begin | |||
cWo := 'Vor Bezeichnung1'; | |||
break; | |||
end; | |||
lPicPrinted := (not empty(vorbildprint)) and (cBuffer <> vorbildprint); | |||
nPicPos := y; | |||
// *** BILDERMODUL *** | |||
</source> | </source> | ||
Wichtig ist hierbei, dass nach dem Langtext y inkremetiert wird, falls y niedriger ist, als das Bildende. | Wichtig ist hierbei, dass nach dem Langtext y inkremetiert wird, falls y niedriger ist, als das Bildende. Die benötigten Zeilen werden in der Funktion ''BilderModul'' (QStandard.inc) berechnet und in der globalen Variablen nBildInc gepeichert (deklariert in QStandard.inc). Falls aber innerhalb der Position ein Seitenumbruch stattfand und das Bild schon gedruckt wurde, darf auf der neuen Seite kein Increment von y erfolgen! | ||
Einzufügen ist im Code folgendes: | Einzufügen ist im Code folgendes: | ||
| Zeile 114: | Zeile 147: | ||
<source lang="delphi"> | <source lang="delphi"> | ||
if (not empty(vorbildprint)) and (lPicPrinted) then begin | if (not empty(vorbildprint)) and (lPicPrinted) then begin | ||
if ((nPicPos + | if ((nPicPos + nBildInc) > y) then begin | ||
y := nPicPos + | y := nPicPos + nBildInc; | ||
end; | end; | ||
end; | end; | ||
Version vom 22. März 2012, 15:47 Uhr
Dies ist eine zugriffsgeschützte Seite.
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
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?
- PMode 916 auf Ja stellen
- Drucke für RTF anpassen
- 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;
Nach
// KOPFTEXT ANFANG
suchen und den Abschnitt durch folgendes ersetzen:
if (lKopfFuss) then begin
cBuffer := A_Query.A2C('a_kopftext');
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!
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;
Falls direkt auf den Langtext folgende Zeilen aufgerufen werden, sollten diee entfernt werden.
if (y >= iSeitenlaenge - iFusszeilen) then begin
break;
end;
Wiederholen, bis alle az_memofeld-Benutzungen (3x) in Positionen so umgestellt sind.
Die Vorgangslangtexte müssen ebenfalls angepasst werden. Dazu alles im Positionstyp 1 mit folgenden Zeilen ersetzten:
cBuffer := AZ_Query.A2C('az_memofeld');
if (not empty(cBuffer)) then begin
Inc(y);
if (TitelLangtextDruck(cBuffer,nWelcheZeile,cWo,cWelcheZeile,cResultVor,GetTextBreite('1'))) then begin
break;
end;
Dec(y);
end;
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 einen Positionsdruck mit Bildern werden zwei neue Variablen in der Prozedur Positionen() benötigt:
nPicPos : Integer; // Position des Bildes
lPicPrinted : Boolean; // Bild gedruckt Ja/Nein; Damit kein falscher Zeilenincrement bei Seitnumbruch gemacht wird.
Für das Drucken von Bildern nach
case AZ_Query.A2I('az_typ') of
0 : begin
Inc(y);
if (y >= iSeitenlaenge-iFussZeilen) then begin
cWo := 'Vor Bezeichnung1';
break;
end;
in Positionen suchen. Zwischen Inc(y) und Abfrage folgendes einfügen:
// *** BILDERMODUL ***
cBuffer := vorbildprint;
if BilderModul(AZ_Query,vorbildprint) then begin
cWo := 'Vor Bezeichnung1';
break;
end;
lPicPrinted := (not empty(vorbildprint)) and (cBuffer <> vorbildprint);
nPicPos := y;
// *** BILDERMODUL ***
Wichtig ist hierbei, dass nach dem Langtext y inkremetiert wird, falls y niedriger ist, als das Bildende. Die benötigten Zeilen werden in der Funktion BilderModul (QStandard.inc) berechnet und in der globalen Variablen nBildInc gepeichert (deklariert in QStandard.inc). Falls aber innerhalb der Position ein Seitenumbruch stattfand und das Bild schon gedruckt wurde, darf auf der neuen Seite kein Increment von y erfolgen! Einzufügen ist im Code folgendes:
vor Bedingung für PosLine():
if (not empty(vorbildprint)) and (lPicPrinted) then begin
if ((nPicPos + nBildInc) > y) then begin
y := nPicPos + nBildInc;
end;
end;
if Pmode_Nein(303) then begin
PosLine();
PosCalcUebertrag();
end;
Bekannte RTF-Bugs
- Höhenberechnung bei Aufzählungen mit Aufzählungszeichen nicht korrekt (Zeilenhöhe ist etwas höher). Bei nummerierter Aufzählung keine Probleme.