From: Fred P. <fr...@di...> - 2002-09-26 16:31:07
|
KEA: > A dialog is like a web CGI form, so validating a block of data all at once > when the data is submitted is perfectly valid and standard practice. Unlike > a web CGI form though, you don't have to repopulate the data fields and send > the form back to the user, you just leave the dialog open. If you make a > validation method, then you can make a call to that validation from you're > OK handler. > > def on_btnOK_mouseClick(self, event): > if self.dataValid(): > event.Skip() > > If you don't call Skip() then the dialog won't close because the underlying > wxDialog class won't see the event. Damn. That's what you get for having toiled with other tools than Python in the past : always looking for difficult solutions to simple things :-) Actually I was sort of misled by this comment in the boilerplate Dialog code : # these shouldn't be necessary # but I haven't taken the time to figure out what is messed up in # the event dispatch that keeps event.Skip from being called automatically # there might be a problem specific to wxDialog def on_(self, event): event.Skip() Somehow I inferred that event.Skip should/would at some time be called transparently, and "bailing out" of btnOK_mouseClick would not be possible. If that was not the intended meaning, certainly your method is the simplest of all ! Thanks again, Kevin. ("field trigger" validation) > That works too, but is more complex. Depending on the data involved and the > relation of various fields an "all at once" style of validation might > make for a better UI. Yup. I've tried a few things in the meantime and while it works, it's definitely not simpler, even if there are few dependencies between fields. Maybe that's why the notion had been committed to long- term storage after all :) Well, back to the previous code then... |