DLG_GetObj
- lk
Owned by lk
Mithilfe dieser Funktion lässt sich ein Dialogobjekt finden, auf welches dann verschiedene weitere Funktionen angewendet werden können.Eine Liste aller Meta-Funktionen befindet sich im Beispiele-Abschnitt. Diese müssen auf ein zurückgeliefertes Objekt angewendet werden (hier "obj").
Diese Funktionalität sollte immer nur als letzte Option, vorzugsweise nach Absprache mit dem Support, verwendet werden!
Prototype
DLG_GetObj( path )
Parameter
Parameter | Typ | Bedeutung |
---|---|---|
path | string | Vollständiger Objekt-Pfad des Dialogmanagers |
Rückgabewert
Nummer | Typ | Bedeutung |
---|---|---|
1 | obj/nil | Metatable des Dialogobjekts oder nil wenn Objekt nicht gefunden |
2 | string | Fehlertext, wenn Objekt nicht gefunden |
Hinweise
- Setzt das gefundene Objekt im Lua-Skript als aktuelles Objekt für eventuell folgende Operationen.
- Diese Funktion und alle an den Dialogobjekten verknüpfte Funktionen müssen mit Vorsicht verwendet werden, da in die Logik der Dialogfelder eingegriffen werden kann!
Beispiel
local obj, err = DLG_GetObj( "Mod_msg10.D_msg11" ) if obj then -- Dialog-Objekt unterhalb dem aktuellen finden und setzen obj, err = obj:PathToID( "Msg_messkey" ) if obj then -- Feldwert abrufen SY_Proto2( "Aktueller Feldwert: '" .. obj:GetValue() .. "'" ) -- Zum Beispiel einen Feldwert setzen SY_Proto2( "Feldwert von " .. obj:tostring() .. " wird auf '000005' gesetzt." ) obj:SetValue( "000005" ) -- Fenster des Objekts ermitteln und Pfad ausgeben SY_Proto2( "Objekt befindet sich im Fenster: '" .. obj:GetWindow():tostring() .. "'" ) -- Objekt-Attribut lesen (optional mit Index als Parameter 2) -- Rückgabe-Wert ist von passendem Typ (string, boolean, integer, etc.), sonst nil und Fehlertext SY_Proto2( "Attribut 'visible' steht auf '" .. tostring( obj:GetAttr( "visible" ) ) .. "'" ) -- Objekt-Attribut setzen (Wert als Parameter 2, optional mit Index als Parameter 3) -- Rückgabe ist nil und Fehlertext bei Fehler SY_Proto2( "Attribut 'visible' wird auf false gesetzt." ) obj:SetAttr( "visible", false ) -- Messagebox mit Objekt-Bezug öffnen (siehe "DLG_MsgBox" Wiki-Seite) obj:GetWindow():MsgBox( "Feld '" .. obj:tostring() .. "' wurde verarbeitet.", 0 ) else -- Fehlertext ausgeben SY_Proto2( err ) end else -- Fehlertext ausgeben SY_Proto2( err ) end