import dabo
dabo.ui.loadUI("wx")


app = dabo.dApp()
app.setup()

class MyDlg(dabo.ui.dDialog):
	def afterInit(self):
		pan = dabo.ui.dPanel(self)
		t1 = dabo.ui.dTextBox(pan, OnLostFocus=self.onLostFocus, RegID="t1")
		t2 = dabo.ui.dTextBox(pan, Top=30, OnLostFocus=self.onLostFocus, RegID="t2")
		self.Sizer.append1x(pan)


	def onLostFocus(self, evt):
		ctrl = evt.EventObject
		if getattr(self, "inValidate", False):
			self.inValidate = False
			return

		if not self.validate(ctrl):
			self.inValidate = True  ## flag to stop infinite recursion
			evt.EventObject.setFocus()  ## set focus back 


	def validate(self, ctrl):
		return ctrl.Value == "R"
		

dlg = MyDlg(app.MainForm, Name="dlgTest", BorderResizable=True)
dlg.showModal()