Überblick
Mit den in diesem Kapitel beschriebenen Methoden können Bereiche des Dokuments markiert und hervorgehoben werden. Dafür muss der Formularfeldmodus deaktiviert sein.
Zur Hervorhebung von Formularfeldern siehe SetHighlightFields.
Der markierte Bereich ist frei wählbar und kann entweder durch Übergabe von Koordinaten oder durch Auswahl mit der Maus gesteuert werden. Außerdem können auch Zeichenketten im Dokument gesucht und ihre Positionen zurückgegeben werden.
Die Markierung mit der Maus muss mit AllowMouseSelection aktiviert werden. Die Events MarkEnd oder MarkChange geben dann die Koordinaten der Auswahl zurück. Ist die Markierung per Maus nicht aktiviert, können mit SetSelection Koordinaten zur Markierung übergeben werden. Ob mehrere oder nur eine Markierung gleichzeitig angezeigt werden können, wird mit AllowMultiSelection gesteuert.
Die Markierung kann entweder durch eine rote Umrandung oder eine blaue Unterlegung des gewählten Rechtecks dargestellt werden. Diese Option gilt bei Umstellung immer für alle angezeigten Markierungen gleichzeitig, sowohl für zuvor als auch für nachfolgend eingebrachte.
Bitte beachten Sie die allgemeinen Hinweise zum verwendeten Bezugssystem für Koordinaten. Methoden und Events (wie zum Beispiel MarkChange), die das Bezugssystem nicht selbst setzen, verwenden immer das zuletzt von einer anderen Methode gesetzte System. Deswegen empfiehlt es sich, am Anfang eine Methode zum Setzen des Bezugssystems aufzurufen und das System die ganze Zeit beizubehalten.
Methode AllowMouseSelection
Mit dieser Methode wird die Möglichkeit, Markierungen mit der Maus aufzuziehen und zu verändern, aktiviert oder deaktiviert. Die resultierende Position wird von den Events MarkEnd und MarkChange zurückgegeben.
Um zu konfigurieren, ob nur eine oder mehrere Markierungen gleichzeitig angezeigt werden können, nutzen Sie bitte die Methode AllowMultiSelection.
Ist die Markierung per Maus aktiviert, können auch zuvor durch SetSelection gesetzte Markierungen mit der Maus verändert werden.
void AllowMouseSelection(int nOption);
void AllowMouseSelection(long nOption);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|---|---|---|---|---|
|
nOption |
✔️ |
|
0 |
Auswahl per Maus deaktivieren |
|
1 |
Auswahl per Maus aktivieren; verwende zugrundeliegendes Bezugssystem (veraltet) |
|||
|
2 |
Auswahl per Maus aktivieren; verwende sichtbares Bezugssystem (empfohlen) |
Methode AllowMultiSelection
Mit dieser Methode wird festgelegt, ob nur eine oder mehrere Markierungen angezeigt werden können. Das gilt sowohl für die mit der Maus aufgezogenen als auch für die durch SetSelection gesetzten Markierungen.
Kann nur eine Markierung gesetzt werden, wird bei jeder neuen Markierung die alte gelöscht.
void AllowMultiSelection(int nOption);
void AllowMultiSelection(long nOption);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|---|---|---|---|---|
|
nOption |
✔️ |
|
0 |
Maximal eine Markierung erlauben (Standard) |
|
1 |
Mehrere Markierungen erlauben; verwende zugrundeliegendes Bezugssystem (veraltet) |
|||
|
2 |
Mehrere Markierungen erlauben; verwende sichtbares Bezugssystem (empfohlen) |
Methode SetSelection
Mit dieser Methode kann ein Bereich in der Anzeige hervorgehoben und zu der markierten Seite gesprungen werden.
Um die Anzahl der gleichzeitig anzeigbaren Markierungen zu konfigurieren, nutzen Sie bitte die Methode AllowMultiSelection.
Zur Definition des verwendeten Koordinatensystems siehe den Abschnitt zum Koordinatensystem.
C#:
int SetSelection(
int nPage,
int nLeft,
int nTop,
int nRight,
int nBottom,
int nOptions
);
C++:
long SetSelection(
long nPage,
long nLeft,
long nTop,
long nRight,
long nBottom,
long nOptions
);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|---|---|---|---|---|
|
nPage |
✔️ |
|
> 0 |
Nummer der Seite |
|
nLeft |
✔️ |
|
>=0 |
Linke Begrenzung der Markierung |
|
nTop |
✔️ |
|
>=0 |
Obere Begrenzung der Markierung |
|
nRight |
✔️ |
|
>=0 |
Rechte Begrenzung der Markierung |
|
nBottom |
✔️ |
|
>=0 |
Untere Begrenzung der Markierung |
|
nOptions |
✔️ |
|
0 |
Es wird nur zur angegebenen Seite geblättert, ohne die Scrollposition zu verändern |
|
1 |
Es wird so gescrollt, dass der hervorzuhebende Bereich so weit wie möglich oben im Anzeigebereich angezeigt wird |
|||
|
2 |
Es wird so gescrollt, dass der hervorzuhebende Bereich so weit wie möglich unten im Anzeigebereich angezeigt wird |
|||
|
+10 |
Bei einer Erhöhung um zehn wird das sichtbare Bezugssystem verwendet (empfohlen) |
|||
|
+100 |
Bei einer Erhöhung um 100 werden statt roten Rändern invertierte Flächen angezeigt. Dies wird ebenso auf bereits gesetzte und zukünftige Markierungen angewendet |
|
Rückgabewert |
Bedeutung |
|
|---|---|---|
|
0 |
Methode erfolgreich ausgeführt |
|
|
< 0 |
Ein Fehler ist aufgetreten |
|
|
|
-1 |
Das geladene Dokument ist kein PDF |
|
-2 |
Einer der Parameter enthält einen ungültigen Wert |
|
|
-3 |
Es wurde ein ungültiger Optionsparameter übergeben |
|
Methode GetSelectionScreenPos
Mit dieser Methode wird die Position der zuletzt gesetzten Markierung ausgegeben (sofern diese nicht davor gelöscht wurde). Abweichend von anderen Methoden wird die Position relativ zum linken und oberen Rand des Bildschirms ausgegeben, und die Maßeinheit ist Pixel.
Diese Werte können beispielsweise dazu genutzt werden, um die Position der Markierung der eigenen Anwendung mitzuteilen, oder um auf eine Aktion des Mauszeigers zu reagieren.
int GetSelectionScreenPos(
ref int pnLeft,
ref int pnTop,
ref int pnRight,
ref int pnBottom
);
long GetSelectionScreenPos(
long* pnLeft,
long* pnTop,
long* pnRight,
long* pnBottom
);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|---|---|---|---|---|
|
pnLeft |
|
✔️ |
>=0 |
Linke Begrenzung der Markierung; 0 ist ganz links auf dem primären Windowsmonitor |
|
pnTop |
|
✔️ |
>=0 |
Obere Begrenzung der Markierung; 0 ist ganz oben auf dem primären Windowsmonitor |
|
pnRight |
|
✔️ |
>=0 |
Rechte Begrenzung der Markierung; 0 ist ganz links auf dem primären Windowsmonitor |
|
pnBottom |
|
✔️ |
>=0 |
Untere Begrenzung der Markierung; 0 ist ganz oben auf dem primären Windowsmonitor |
|
Rückgabewert |
Bedeutung |
|---|---|
|
0 |
Ein Fehler ist aufgetreten |
|
1 |
Methode erfolgreich ausgeführt |
Methode ClearSelection
Alle über die Maus eingebrachten (siehe AllowMouseSelection) oder durch die Methode SetSelection gesetzten Hervorhebungen werden entfernt. Im Gegensatz zu ClearDisplay bleibt das angezeigte Dokument erhalten.
void ClearSelection();
void ClearSelection();
Methode SearchText
Mit dieser Methode können Textstellen in PDF-Dokumenten gesucht werden. Die Abfrage der Ergebnisse erfolgt dann über GetTextPositionByIndex. Frühere Suchergebnisse werden bei erneutem Aufruf überschrieben.
int SearchText(
string bstrSearchText,
int nPage,
int nOptions,
int* pnFoundTextCount
);
long SearchText(
BSTR bstrSearchText,
long nPage,
long nOptions,
long* pnFoundTextCount
);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|
|---|---|---|---|---|---|
|
bstrSearchText |
✔️ |
|
string, Länge > 0 |
Text, nach dem gesucht werden soll darf Leerzeichen enthalten |
|
|
nPage |
✔️ |
|
>0 |
Seite, auf der gesucht werden soll darf nicht größer als die Anzahl der Seiten des Dokuments sein |
|
|
-1 |
auf allen Seiten suchen |
||||
|
nOptions |
✔️ |
|
Kombination aus: |
Bitmaske |
|
|
|
1 |
Groß- und Kleinschreibung beachten |
|||
|
10 |
nur nach ganzen Worten suchen |
||||
|
pnFoundTextCount |
|
✔️ |
>=0 |
|
Anzahl der gefundenen Textstellen |
|
Rückgabewert |
Bedeutung |
|
|---|---|---|
|
0 |
Methode erfolgreich ausgeführt |
|
|
< 0 |
Ein Fehler ist aufgetreten |
|
|
|
-1 |
Es ist kein PDF-Dokument geladen. |
|
|
-2 |
ungültiger Input |
|
|
-3 |
ungültige Option |
Methode GetTextPositionByIndex
Mit dieser Methode können die mit SearchText gefundenen Textpositionen einzeln abgefragt werden. Dafür muss SearchText zuvor erfolgreich aufgerufen worden sein. Die Positionen werden relativ zum sichtbaren Bezugssystem zurückgegeben.
int GetTextPositionByIndex(
int nFoundTextIndex,
int* pnPage, long* pnLeft,
int* pnTop,
int* pnRight,
int* pnBottom
);
long GetTextPositionByIndex(
long nFoundTextIndex,
long* pnPage,
long* pnLeft,
long* pnTop,
long* pnRight,
long* pnBottom
);
|
Parameter
|
In |
Out |
Mögliche Werte |
Beschreibung |
|---|---|---|---|---|
|
nFoundTextIndex |
✔️ |
|
>=0 |
Index der gefundenen Textstelle muss kleiner als die Anzahl der gefundenen Textstellen sein, die von SearchText im Parameter pnFoundTextCount zurückgegeben wurde |
|
pnPage |
|
✔️ |
>0 |
Seite, auf der die Textstelle gefunden wurde |
|
pnLeft |
|
✔️ |
>=0 |
linke Begrenzung der Textstelle |
|
pnTop |
|
✔️ |
>=0 |
obere Begrenzung der Textstelle |
|
pnRight |
|
✔️ |
>=0 |
rechte Begrenzung der Textstelle |
|
pnBottom |
|
✔️ |
>=0 |
untere Begrenzung der Textstelle |
|
Rückgabewert |
Bedeutung |
|
|---|---|---|
|
0 |
Methode erfolgreich ausgeführt |
|
|
< 0 |
Ein Fehler ist aufgetreten |
|
|
|
-2 |
ungültiger Index als Input |
Event MarkEnd
Dieses Event signalisiert, dass ein Rechteck mit der Maus auf dem Steuerelement aufgezogen wurde. Es wird ausgelöst, sobald die Maustaste losgelassen wird, und gibt die Position des markierten Bereiches aus.
Siehe dazu auch die Methode AllowMouseSelection und den Abschnitt zum Koordinatensystem.
Im folgenden wird eine Beispiel-Implementation gezeigt, in der benutzerdefinierte Namen durch Platzhalter (%…%) ersetzt wurden.
public class _DSTImgCtlEvents_MarkEndEvent
{
public int xPos1;
public int yPos1;
public int xPos2;
public int yPos2;
public _DSTImgCtlEvents_MarkEndEvent(int xPos1, int yPos1, int xPos2, int yPos2)
{
this.xPos1 = xPos1;
this.yPos1 = yPos1;
this.xPos2 = xPos2;
this.yPos2 = yPos2;
}
}
this.%COMPONENT_NAME%.MarkEnd += new AxSTIMGCTLLib._DSTImgCtlEvents_MarkEndEventHandler(this.%CALLBACK_FUNCTION%);
private void %CALLBACK_FUNCTION%(object sender, AxSTIMGCTLLib._DSTImgCtlEvents_MarkEndEvent e);
BEGIN_EVENTSINK_MAP(%CLASS_NAME%, CDialogEx)
ON_EVENT(%CLASS_NAME%, %COMPONENT_ID%, 1, %CALLBACK_FUNCTION%, VTS_I4 VTS_I4 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
void %CALLBACK_FUNCTION%(long xPos1, long yPos1, long xPos2, long yPos2);
|
Parameter |
Mögliche Werte |
Beschreibung |
|---|---|---|
|
xPos1 |
>=0 |
Linke Begrenzung |
|
yPos1 |
>=0 |
Obere Begrenzung |
|
xPos2 |
>=1 |
Rechte Begrenzung |
|
yPos2 |
>=1 |
Untere Begrenzung |
Event MarkChange
Dieses Event signalisiert, dass eines der selbst erstellten Markierungsrechtecke mit der Maus auf dem Steuerelement angeklickt, verschoben oder in der Größe geändert wurde. Es wird ausgelöst, sobald die Maustaste losgelassen wird, und gibt die neue Position aus.
Siehe dazu auch die Methode AllowMouseSelection und den Abschnitt zum Koordinatensystem.
Im folgenden wird eine Beispiel-Implementation gezeigt, in der benutzerdefinierte Namen durch Platzhalter (%…%) ersetzt wurden.
public class _DSTImgCtlEvents_MarkChangeEvent
{
public short nPos;
public int xPos1;
public int yPos1;
public int xPos2;
public int yPos2;
public _DSTImgCtlEvents_MarkChangeEvent(short nPos, int xPos1, int yPos1, int xPos2, int yPos2)
{
this.nPos = nPos;
this.xPos1 = xPos1;
this.yPos1 = yPos1;
this.xPos2 = xPos2;
this.yPos2 = yPos2;
}
}
this.%COMPONENT_NAME%.MarkChange += new AxSTIMGCTLLib._DSTImgCtlEvents_MarkChangeEventHandler(this.%CALLBACK_FUNCTION%);
private void %CALLBACK_FUNCTION%(object sender, AxSTIMGCTLLib._DSTImgCtlEvents_MarkChangeEvent e);
BEGIN_EVENTSINK_MAP(%CLASS_NAME%, CDialogEx)
ON_EVENT(%CLASS_NAME%, %COMPONENT_ID%, 3, %CALLBACK_FUNCTION%, VTS_I2 VTS_I4 VTS_I4 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
void %CALLBACK_FUNCTION%(short nPos, long xPos1, long yPos1, long xPos2, long yPos2);
|
Parameter |
Mögliche Werte |
Beschreibung |
|---|---|---|
|
nPos |
>=0 |
Index des Rechtecks, dessen Position aktualisiert wurde |
|
xPos1 |
>=0 |
Linke Begrenzung |
|
yPos1 |
>=0 |
Obere Begrenzung |
|
xPos2 |
>=1 |
Rechte Begrenzung |
|
yPos2 |
>=1 |
Untere Begrenzung |