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