Zum Hauptinhalt springen

WinEmfProcess

obj -> WinEmfProcess(int1, alpha2[, int3[, int4[, int5]]]) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von der DLL-Schnittstelle mit grafischer Erweiterung Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service mit grafischer Erweiterung

Text aus RtfEdit-Objekt als Bild speichern

Details

  • obj: RtfEdit -Objekt
  • int1:
    • Funktion:
    • _WinEmfProcessCreate
    • _WinEmfProcessDelete
  • alpha2: Name des Bildes oder der externen Datei
  • int3:
    • Optionen (optional):
    • _WinEmfCreateOverwrite
    • _WinEmfCreateDefault
  • int4: Position des Startzeichens (optional)
  • int5: Höhe des Bildes in Twips (optional)
  • Resultat: int Position des ersten, nicht geschriebenen Zeichens, 0 oder Fehlerwert Anweisung setzt den globalen Fehlerwert
  • Siehe: Verwandte Befehle

Der Befehl erstellt aus dem Inhalt eines RtfEdit -Objekts ein EMF-Bild. Das Bild kann als Storage -Objekt in der Datenbank oder als externe Datei gespeichert werden.

In (obj) wird der Deskriptor des RtfEdit -Objekts übergeben. Die durchzuführende Funktion ist in (int1) angegeben. Folgende Funktionen können durchgeführt werden:

_WinEmfProcessCreate ( 0 )

Diese Funktion erzeugt das Bild. Der Name des erzeugten Objekts wird in (alpha2) angegeben. Wird dem Namen ein '*' vorangestellt, erfolgt die Speicherung als externe Datei, sonst erfolgt die Speicherung im Storage-Verzeichnis MetaPicture. Wenn ein Storage -Objekt generiert wird, muss die Namensvergabe den Konventionen für Oberflächen-Objekte genügen (Eigenschaft Name), ansonsten den Konventionen für externe Dateinamen.

Über die Optionen (int3) kann bestimmt werden, ob ein vorhandenes Objekt bzw. eine vorhandene Datei überschrieben werden soll. Folgende Konstanten stehen zur Verfügung:

  • _WinEmfCreateDefault ( 0 ): Bestehende externe Datei oder Bild-Objekt nicht überschreiben
  • _WinEmfCreateOverwrite ( 1 ): Bestehende externe Datei oder Bild-Objekt überschreiben

Das Argument (int4) gibt an, ab welcher Zeichenposition des enthaltenen Textes die EMF-Ausgabe erfolgt. Fehlt das Argument oder ist es 0, wird am Textanfang begonnen.

(int5) definiert die Bildhöhe in logischen Einheiten , bis zu der der Text ausgegeben wird. Es werden alle Zeichen geschrieben, die vollständig dargestellt werden können. Der Befehl gibt anschließend das nächste Zeichen zurück, mit dem das nächste Bild startet. Wurde der gesamte Text formatiert, liefert der Befehl 0 zurück. Auf diese Weise kann der Text sukzessive in mehrere Bilder aufgeteilt werden. Wird die Bildhöhe nicht angegeben oder ist diese -1, wird der Text ab der Startposition bis zum Ende ausgegeben.

Die Breite des Bildes wird aus der Eigenschaft PageWidth des RtfEdit -Objekts entnommen.

_WinEmfProcessDelete ( 1 )

Diese Funktion entfernt ein als Storage -Objekt erzeugtes Bild aus dem Verzeichnis MetaPicture. Das übergeben Objekt, sowie die Parameter (int3) bis (int5) werden ignoriert. Externe Dateien können mit der Anweisung FsiDelete () gelöscht werden.

Tritt beim Erzeugen des Bildes ein Fehler bei der Verarbeitung auf, wird ein negativer Wert zurückgegeben. Beim Löschen des Bildes wird im Fehlerfall ein Wert ungleich 0 zurückgegeben. Dieser Wert kann mit den folgenden Konstanten verglichen werden:

  • _ErrNameInvalid: Der übergebene Name ist leer oder ungültig.
  • _ErrExists: Die Datei oder das Storage -Objekt existiert bereits und die Option _WinEmfCreateOverwrite wurde nicht angegeben.
  • _ErrFsi...: Beim Schreiben in eine externe Datei können Fehler aus diesem Bereich auftreten.
  • _ErrOutOfMemory: Es steht nicht genügend Speicher zur Durchführung der Operation zur Verfügung.
  • _rNoKey: Das mit _WinEmfProcessDelete zu löschende Bild existiert nicht.

Beispiel:

Folgendes Beispiel bietet eine einfache Möglichkeit EMF-Seiten für die Anzeige in einer Druckvorschau aus dem aktuellen Inhalt eines RtfEdit -Objekts zu generieren.

sub MakeEmfPages
(
aRtfEdit : handle; // Desktriptor des RtfEdit
aPath : alpha(250); // Pfad für EMF-Dateien
)

local
{
tStart : int;
tFileName : alpha(250);
tPage : int;
tPageHeight : int;
}

{
// Seitenhöhe = DinA4
tPageHeight # PrtUnitLog(29.7, _PrtUnitCentimetres);

do
{
// Dateiname
tFileName # '*' + aPath + CnvAI(tPage + 1, _FmtNumNoGroup | _FmtNumLeadZero, 0, 2) + '.emf';

// EMF-Datei für aktuelle Seite generieren
tStart # aRtfEdit->WinEmfProcess(_WinEmfProcessCreate, tFileName, _WinEmfCreateOverwrite, tStart, tPageHeight);

// Weitere Zeichen vorhanden?
if (tStart >= 0)
Inc(tPage);
}
while (tStart > 0);

if (tStart = 0)
WinDialogBox(0, 'Seitengenerierung', CnvAI(tPage) + ' Seiten generiert.', _WinIcoInformation, _WinDialogOK, 1);
else
WinDialogBox(0, 'Seitengenerierung', 'Fehler aufgetreten: ' + CnvAI(tStart), _WinIcoWarning, _WinDialogOK, 1);
}

Beim RtfEdit -Objekt muss die Eigenschaft PrtDevice gesetzt sein, bevor der Befehl durchgeführt wird. Im anderen Fall wird der Laufzeitfehler _ErrHdlInvalid generiert.

Die erzeugten EMF-Dateien können vom PrtMetaPicture -Objekt angezeigt werden.

Mögliche Laufzeitfehler: