Thread Tools Display Modes
02-04-12, 05:36 AM   #1
Stijn
A Murloc Raider
Join Date: Oct 2008
Posts: 7
Why can't an EditBox's value be set during PLAYER_ENTERING_WORLD ?

Hello,

I'm looking for some clarification on why this doesn't work.

This correctly reports the value when pressing Escape, but the EditBox shows as empty.
Code:
local criteria_value = CreateFrame("EditBox", nil, panel, "InputBoxTemplate")
criteria_value:SetWidth(40)
criteria_value:SetHeight(19)
criteria_value:SetPoint("LEFT", criteria_label, "RIGHT", 10, 0)
criteria_value:SetAutoFocus(false)
criteria_value:SetMaxLetters(2)
criteria_value:SetScript("OnEscapePressed",
    function(self)
        criteria_value:ClearFocus()
        print("criteria_value:GetText() : " .. criteria_value:GetText())
    end)

local function event_handler(self, event, ...)
    criteria_value:SetText(WATCHFRAME_CRITERIA_PER_ACHIEVEMENT)
    print("criteria_value:GetText() : " .. criteria_value:GetText())
end

panel:RegisterEvent("PLAYER_ENTERING_WORLD")
panel:SetScript("OnEvent", event_handler)
This works.
Code:
local criteria_value = CreateFrame("EditBox", nil, panel, "InputBoxTemplate")
criteria_value:SetWidth(40)
criteria_value:SetHeight(19)
criteria_value:SetPoint("LEFT", criteria_label, "RIGHT", 10, 0)
criteria_value:SetAutoFocus(false)
criteria_value:SetMaxLetters(2)
criteria_value:SetScript("OnEscapePressed",
	function(self)
		criteria_value:ClearFocus()
		print("criteria_value:GetText() : " .. criteria_value:GetText())
	end)
criteria_value:SetScript("OnShow", function(self)
		self:SetText(WATCHFRAME_CRITERIA_PER_ACHIEVEMENT)
	end)
Combining both makes it fail again.
Code:
local criteria_value = CreateFrame("EditBox", nil, panel, "InputBoxTemplate")
criteria_value:SetWidth(40)
criteria_value:SetHeight(19)
criteria_value:SetPoint("LEFT", criteria_label, "RIGHT", 10, 0)
criteria_value:SetAutoFocus(false)
criteria_value:SetMaxLetters(2)
criteria_value:SetScript("OnEscapePressed",
	function(self)
		criteria_value:ClearFocus()
		print("criteria_value:GetText() : " .. criteria_value:GetText())
	end)
criteria_value:SetScript("OnShow", function(self)
		self:SetText(WATCHFRAME_CRITERIA_PER_ACHIEVEMENT)
	end)

local function event_handler(self, event, ...)
	criteria_value:SetText(WATCHFRAME_CRITERIA_PER_ACHIEVEMENT)
	print("criteria_value:GetText() : " .. criteria_value:GetText())
end

panel:RegisterEvent("PLAYER_ENTERING_WORLD")
panel:SetScript("OnEvent", event_handler)
  Reply With Quote
02-04-12, 10:19 AM   #2
Vrul
A Scalebane Royal Guard
 
Vrul's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2007
Posts: 404
The following works just fine for me:
Code:
local editBox = CreateFrame('EditBox', nil, UIParent, 'InputBoxTemplate')
editBox:SetWidth(40)
editBox:SetHeight(19)
editBox:SetAutoFocus(false)
editBox:SetMaxLetters(2)
editBox:SetPoint('CENTER')
editBox:Show()

editBox:SetScript('OnEvent', function(self, event, ...)
	self:SetText(WATCHFRAME_CRITERIA_PER_ACHIEVEMENT)
	print("text: " .. self:GetText())
end)
editBox:RegisterEvent('PLAYER_ENTERING_WORLD')
Are you sure that you aren't overwriting the 'OnEvent' handler for panel somewhere else in your code?
  Reply With Quote
02-04-12, 12:23 PM   #3
Stijn
A Murloc Raider
Join Date: Oct 2008
Posts: 7
That works indeed.
I should have mentioned, the EditBox is located in an InterfaceOptions category.
  Reply With Quote

WoWInterface » Developer Discussions » General Authoring Discussion » Why can't an EditBox's value be set during PLAYER_ENTERING_WORLD ?


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off