WinInfo
obj -> WinInfo(int1[, int2, int3]) : int
Oberflächen-Objekt-Informationen ermitteln
Details
- obj: Oberflächenobjekt
- int1: Optionen (siehe Text)
- int2: Zähler (optional)
- int3: Objekttyp (optional)
- Resultat:
intObjektinformation (siehe Text) - Siehe:
WinSearch (),HdlInfo (),OrderPass, Blog
Mit diesem Befehl können verschiedene Informationen zu dem übergebenen Objekt (obj) oder zu der Umgebung, in der die Applikation gestartet wurde, ermittelt werden. Zudem können relativ zum angegebenen Objekt, andere Objekte ermittelt werden. Die unterschiedlichen Funktionen werden durch die Übergabe entsprechender Konstanten in (int1) aufgerufen.
Die Funktionen können in folgende Bereiche aufgeteilt werden:
- Navigation durch den Objektbaum
- Objekte nach Typ iterieren
- Ermitteln anderer Objekte
- Informationen über das Objekt
- Informationen über die Umgebung
Navigation durch den Objektbaum
Werden die folgenden Konstanten übergeben, ist die Rückgabe des Befehls immer der Deskriptor eines Objekts. In (obj) kann ein beliebiges Oberflächenobjekt übergeben werden.
_WinFirstDas Resultat ist das erste untergeordnete Objekt des Objekts (obj)._WinLastDas Resultat ist das letzte untergeordnete Objekt des Objekts (obj)._WinNextDas Resultat ist das nachfolgende Objekt des Objekts (obj)._WinPrevDas Resultat ist das vorhergehende Objekt des Objekts (obj)._WinParentDas Resultat ist das übergeordnete Objekt des Objekts (obj)._WinRootDas Resultat ist das Wurzel-Objekt des Objekts (obj)._WinFrameDas Resultat ist das übergeordnete Frame -Objekt des Objekts (obj).
Die Reihenfolge, in der über die Parameter _WinFirst , _WinPrev , _WinNext und _WinLast zugegriffen wird, entspricht der Erstellungsreihenfolge der einzelnen Objekte. Die Intervall -Objekte innerhalb des GanttGraph -Objekts werden vom Betriebssystem nicht in einer Liste verwaltet. Die Reihenfolge beim Lesen der Intervalle kann somit von der Erstellungsreihenfolge abweichen. Bei den Objekten Notebook , RecList und DataList kann alternativ über die Eigenschaft OrderPass die Anzeigereihenfolge ermittelt werden.
In (int3) kann ein Objekt-Typ angegeben werden. Als Werte stehen die bei _WinType beschriebenen Konstanten zur Verfügung. Der Objekt-Typ wird nur in Kombination mit den Optionen _WinFirst, _WinPrev, _WinNext, _WinLast und _WinParent ausgewertet. Es wird das entsprechende Objekt des angegebenen Typs zurückgegeben.
Beispiel:
// Übergeordnetes Notebook-Objekt ermitteln
tObj->WinInfo(_WinParent, 0, _WinTypeNotebook);
Objekte nach Typ iterieren
Werden Objekte nach Typ iteriert, stellt der übergebene Objekttyp dabei nicht immer den exakten Objekttyp dar, sondern eine Objektgruppe.
Beispiel:
for tChild # tParent->WinInfo(_WinFirst, 1, _WinTypeEdit);
loop tChild # tChild->WinInfo(_WinNext, 1, _WinTypeEdit)
while (tChild > 0)
...
Die Schleife ermittelt nicht nur Edit-Objekte vom Typ _WinTypeEdit, sondern auch DateEdit , FloatEdit , TextEdit , etc, da diese zur Objektgruppe der Eingabeobjekte gehören.
Die folgende Schleife ermittelt dagegen nur DateEdit -Objekte, da diese keine eigene Objektgruppe bilden.
for tChild # tParent->WinInfo(_WinFirst, 1, _WinTypeDateEdit);
loop tChild # tChild->WinInfo(_WinNext, 1, _WinTypeDateEdit);
while (tChild > 0)
...
Folgende Objektgruppen existieren:
- Eingabeobjekte (
_WinTypeEdit): Edit , IntEdit , BigIntEdit , FloatEdit , DecimalEdit , TimeEdit , DateEdit , ColorEdit , FontNameEdit , FontSizeEdit , TextEdit - Frame-Objekte (
_WinTypeFrame): Frame , AppFrame , MdiFrame , TrayFrame , Dialog - Schaltflächen (
_WinTypeButton): Button , ColorButton , Checkbox , Radiobutton - Schalter (
_WinTypeCheckBox): Checkbox , Radiobutton - Label-Objekte (
_WinTypeLabel): Label , HyperLink - Toolbar-Objekte (
_WinTypeToolbar): Toolbar , Statusbar - PrintForm-Objekte (
_PrtTypePrintForm): PrintForm , PrintDoc , PrintDocRecord , PrintFormList
Sollen nur Objekte des angegebenen Typs ermittelt werden, muss die Konstante _WinTypeExact mit dem Objekttyp verodert werden:
for tChild # tParent->WinInfo(_WinFirst, 1, _WinTypeEdit | _WinTypeExact);
loop tChild # tChild->WinInfo(_WinNext, 1, _WinTypeEdit | _WinTypeExact);
while (tChild > 0)
...
Die Konstante wird bei den Optionen _WinFirst, _WinLast, _WinNext, _WinPrev und _WinParent ausgewertet und bei allen anderen Optionen ignoriert.
Ermitteln anderer Objekte
Bei diesen Funktionen werden bestimmte Objekte ermittelt. Als Übergabeparameter müssen entweder bestimmte Objekttypen oder 0 übergeben werden. Welche Objekte übergeben werden können, ist bei den Konstanten erläutert.
_WinApplicationDas Resultat ist das Application -Objekt. In (obj) kann0oder ein beliebiges Objekt angegeben werden._WinFrameActiveDas Resultat ist das aktive MDIFrame -Objekt des in (obj) übergebenen AppFrame -Objekts._WinObjectDas Resultat ist ein bestimmtes Unterobjekt des Objekts (obj). Das übergebene Objekt muss von einem bestimmten Typ sein._WinObjectActiveDas Resultat ist das aktive GroupTile -Objekt des in (obj) übergebenen GroupSplit -Objekts._WinObjectMaximizedDas Resultat ist das maximierte GroupTile -Objekt des in (obj) GroupSplit -Objekts._WinMenuDas Resultat ist das Menü des in (obj) übergebenen Frame bzw. AppFrame -Objekts._WinContextMenuDas Resultat ist das Kontextmenü-Objekt des Objekts (obj)._WinLstEditObjectWird in einem RecList - oder DataList -Objekt ein Eintrag editiert, wird mit dieser Konstante das Editier-Objekt zurückgegeben._WinFrameForegroundDas Resultat ist das Vordergrundfenster. Als Objekt (obj) muss0als Zähler (int2) muss0oder1angegeben werden.
Informationen über das Objekt
In dieser Gruppe von Konstanten werden Informationen über das in (obj) angegebene Objekt zurückgegeben. Bei einigen Konstanten können nur bestimmte Objekttypen übergeben werden. Dies ist bei den Konstanten erläutert.
_WinCountDas Resultat ist die Anzahl der untergeordneten Objekte des Objekts (obj)._WinClientHeightEs wird die Höhe des Clientbereichs (inklusive Tool - und Windowbars ) zurückgegeben. Es können nur Objekte vom Typ Frame , AppFrame oder MdiFrame übergeben werden._WinClientWidthEs wird die Breite des Clientbereichs (inklusive Tool - und Windowbars ) zurückgegeben. Es können nur Objekte vom Typ Frame , AppFrame oder MdiFrame übergeben werden._WinInteriorHeightEs wird die Höhe des Anzeigebereiches ohne Menü, Tool - und Windowbars zurückgegeben. Bei AppFrame -Objekten entspricht das der Höhe des Bereiches, in dem MdiFrame -Objekte dargestellt werden können. Es können nur Objekte vom Typ Frame bzw. AppFrame übergeben werden._WinInteriorWidthEs wird die Höhe des Anzeigebereiches ohne Menü, Tool - und Windowbars zurückgegeben. Bei AppFrame -Objekten entspricht das der Höhe des Bereiches, in dem MdiFrame -Objekte dargestellt werden können. Es können nur Objekte vom Typ Frame bzw. AppFrame übergeben werden._WinTypeDas Resultat ist der Typ des Objekts (obj)._WinFocusKeyDas Resultat ist die Taste, mit der das Objekt verlassen wurde._WinIndexDas Resultat ist die Position des Objekts (obj) innerhalb des übergeordneten Objekts._WinItemDas Resultat ist die Position der Datenzelle des Spalten -Objekts (obj) eines DataList -Objekts._WinStateDas Resultat ist der Status des Frame / AppFrame / MDIFrame - oder des GroupTile -Objekts (obj)._WinDynamicWird ein Objekt (obj) angegeben, gibt der Befehl zurück, ob es dynamisch erstellt wurde (1) oder nicht (0). Ein Objekttyp (int3) darf in diesem Fall nicht angegeben werden. Wird als Objekt0und in (int3) ein Objekttyp angegeben, gibt der Befehl zurück, ob der Objekttyp mitWinCreate ()erzeugt werden kann._WinUnicodeWird als Resultat1zurückgegeben, unterstützt das Objekt (obj) Unicode-Eigenschaften, bei0nicht. Die betreffenden Eigenschaften sind auf der Seite Unicode-Unterstützung ersichtlich.
Informationen über die Umgebung
Mit diesen Konstanten werden Parameter der Umgebung abgefragt. Außer bei der Ermittlung des Fehlerwertes muss kein Objekt übergeben werden. Anstelle des Deskriptors wird der Wert 0 angegeben.
WinInfo(0, int1[, int2, int3])
_WinScreenWidthDas Resultat ist die horizontale Bildschirmauflösung._WinScreenHeightDas Resultat ist die vertikale Bildschirmauflösung._WinScreenDpiXDas Resultat ist die horizontale Bildschirmauflösung in DPI._WinScreenDpiYDas Resultat ist die vertikale Bildschirmauflösung in DPI._WinScreenBBPDas Resultat ist die aktuelle Bildschirmfarbtiefe._WinThemeActiveDas Resultat ist die Aktivität der betriebssystemabhängigen Darstellung._WinHighContrastDas Resultat ist1, wenn Windows im Modus "Hoher Kontrast" läuft, sonst0._WinErrorCodeDas Resultat ist der Windows-Fehlerwert. Der Fehlerwert muss nur nach der Installation zur Darstellung von Office-Dateien (InstallCtxOffice) abgefragt werden._WinNodeMouseSelectDas Resultat ist die Maustaste, mit der zuletzt ein TreeNode in einem TreeView -Objekt selektiert wurde.
Beispiel 1:
// Alle Objekte eines Fensters ermitteln
@A+
@C+
sub AllObj
(
aStartObj : handle;
)
local
{
tObj : handle;
}
{
if (aStartObj > 0)
{
for tObj # aStartObj->WinInfo(_WinFirst);
loop tObj # tObj->WinInfo(_WinNext);
while (tObj > 0)
{
tObj->AllObj();
... // Verarbeitung des Objekts
}
}
}
main()
local
{
tHdl : handle;
}
{
tHdl # WinOpen('Manager', _WinOpenDialog);
tHdl->AllObj();
tHdl->WinClose();
}
Beispiel 2:
// Alle Einträge eines Menüs ermitteln
// Menü des Fensters ermitteln
tMenu # tFrame->WinInfo(_WinMenu);
// Ersten Eintrag ermitteln
tItem # tMenu->WinInfo(_WinFirst);
// Solange Einträge vorhanden
while (tItem > 0)
{
// Ersten Untereintrag ermitteln
tSubItem # tItem->WinInfo(_WinFirst);
// Solange Untereinträg vorhanden
while (tSubItem > 0)
{
... // Verarbeitung der Untereinträge
// Nächsten Untereintrag ermitteln
tSubItem # tSubItem->WinInfo(_WinNext);
}
// Nächsten Eintrag ermitteln
tItem # tItem->WinInfo(_WinNext);
}
Beispiel 3:
// Bestimmte Objekte eines Gantt-Graphs ermitteln
sub Info
(
aGanttGraph : handle; // Übergebener Gantt-Graph
aObjType : int; // Übergebener Objekt-Typ
)
local
{
tObj : handle; // Interval-Deskriptor
tTemp : int; // Zwischenspeicher
}
{
// Objekt-Typ kein Gantt-Graph-Unterobjekt
if ((aObjType != _WinTypeInterval) and (aObjType != _WinTypeIvlBox) and (aObjType != _WinTypeIvlLine))
// Funktion abbrechen
return;
// Erstes Unterobjekt vom Typ aObjType ermitteln
tObj # aGanttGraph->WinInfo(_WinFirst, 1, aObjType);
// Solange Unterobjekte vom Typ aObjType vorhanden
while (tObj != 0)
{
// Nächstes Unterobjekt vom Typ aObjType ermitteln
tTemp # tObj->WinInfo(_WinNext, 1, aObjType);
... // Verarbeitung des Objekts
tObj # tTemp;
}
}
Der Parameter (int2) wird nur in Kombination mit den Optionen _WinPrev, _WinNext und _WinParent ausgewertet. Mit dem Zähler kann eine Schrittweite übergeben werden.
Beispiel:
// Übernächstes Objekt ermitteln
tObj->WinInfo(_WinNext, 2);
// Großvater-Objekt ermitteln
tObj->WinInfo(_WinParent, 2);
Bei der Angabe von negative Werten in (int2) liefert der Befehl den Wert 0 zurück.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Oberflächenobjekt (obj) ungültig oder muss0sein._ErrValueInvalid: Bei der Option_WinDynamicwurde sowohl ein Objekt (obj) als auch ein Objekttyp (int3) angegeben. Bei der Option_WinFrameForegroundwurde ein Zähler (int2) <0oder >1angegeben.