2016-12-02 8 views
0

Auf ItemChanged Ereignis von Datenfenster, muss ich eine Nachricht auf falsche Eingabe. Das Problem ist: Wenn ich messagebox() verwende, fordert es die Nachricht korrekt auf, aber das Feld wird nicht leer und durch Drücken von TAB wird das Steuerelement zum nächsten Feld verschoben. (Bedeutet, seine den falschen Wert zu übernehmen, indem TAB-Taste erneut drücken) Hier einfachen Code für oben beschriebene Szenario ist:PowerBuilder anpassen Fehlermeldung auf ItemChanged

if lb_error = true then 
     messagebox('Info','Only Digits Are Allowed ~nAll Digits Cannot Be 0') 
     this.object.payer_phone[1] ='' 
    end if 

Dann habe ich versucht Ändern Eigenschaft, seine Arbeit gut, aber Gibt es eine Möglichkeit, seine Titel zu ändern und Symbol?? Ich verwende folgenden Code und, bitte helfen Sie mir.

if lb_error = true then 
     this.Modify("payer_phone.ValidationMsg='Only Digits Are Allowed ~nAll Digits Cannot Be 0'") 
     this.object.payer_phone[1] ='' 
     return 1 
    end if 

Ich verwende PowerBuilder 12.0.

Antwort

1

Von der Power Hilfe:

Werte Return den Rückgabecode Stellen Sie den Ausgang des Ereignisses beeinflussen:

0 (Default)

den Datenwert Accept

1 die Daten ablehnen Wert und keine Fokusänderung zulassen

2 Den Datenwert ablehnen, aber den Fokus ändern lassen

Also in Ihrem Fall müssen Sie 1 aus dem Ereignis itemchanged RETURN 1.

Da Sie diesen Fehler in itemchanged behandeln, müssen Sie das itermerror-Ereignis "umgehen". Sie tun dies, indem Sie dort eine RÜCKKEHR 1 setzen.

Durch den Fehler in der ItemChanged Ereignistriggerung können Sie einen benutzerdefinierten Fehler messagebox erstellen oder das System standardmäßig verwenden und den Titel steuern, Symbol, Buttons, etc.

0

Unter der Annahme, payer_phone wird das Feld bearbeitet wird, ich glaube dir brauche SetText(), anstatt den zugrunde liegenden Wert im Datensatz zu setzen.

Um diesen Unterschied zu verstehen, müssen Sie wissen, dass es für die Dateneingabe ein Steuerelement gibt, das über dem DataWindow schwebt und sich von Feld zu Feld mit Fokus bewegt. Wenn die eingegebenen Daten akzeptiert werden, wird der Wert in der unverankerten Steuerung in den Datensatz des DW übertragen. GetText() und SetText() behandeln dieses unverankerte Steuerelement. Ihr Code ändert den DW-Datensatz. Nach dem ersten Fehler wurden beim nächsten Drücken der Tabulatortaste keine Änderungen am Steuerelement festgestellt. Die Funktionalität, die bei Datenänderungen ausgelöst wird, tritt nicht auf und der Fehlercode wird nicht ausgelöst.

Viel Glück.

0

können Sie auf das Symbol und den Titel ändern, indem Sie die gleiche Funktion MessageBox mit einer anderen Signatur: MessageBox (Titel, Text {, Symbol {, Taste {, default}}})

HTH, Ali

0

Sie können das Symbol und den Titel unter Verwendung der gleichen Funktion MessageBox mit einer anderen Signatur ändern: MessageBox (Titel, Text, Symbol, Schaltfläche, default)

HTH, Ali