DLG_GetObj

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


ParameterTypBedeutung
pathstringVollständiger Objekt-Pfad des Dialogmanagers

Rückgabewert


NummerTypBedeutung
1obj/nilMetatable des Dialogobjekts oder nil wenn Objekt nicht gefunden
2stringFehlertext, 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