2016-12-02 19 views
0

データウィンドウのItemChangedイベントで、間違った入力でメッセージを表示する必要があります。 問題:メッセージボックス()を使用すると、メッセージは正しく表示されますが、フィールドは空白ではなく、Tabキーを押すと、コントロールは次のフィールドに移動しています。 はここで、上記のシナリオのための簡単なコードである(そのが再びTabキーを押すことで、間違った値を受け入れる意味):PowerBuilderがItemChangedでエラーメッセージをカスタマイズします

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

は、その後、私はその作業罰金、変更プロパティを試みたが、そのタイトルを変更するには、いずれかの可能性があるとアイコン??私は次のコードを使用しています、親切に私を助けてください。

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 

私はPowerBuilder 12.0を使用しています。

答えて

1

PowerBuilderのヘルプから:

戻りイベントの結果に影響を与える 設定し、リターンコード値:

0(デフォルト)データ値を受け入れ

1は、データを拒否フォーカスを変更することを許可しない

2データ値を拒否しますが、フォーカスを変更できるようにします。

あなたの場合、itemchangedイベントから1を返す必要があります。

itemchangedでこのエラーを処理しているので、itemerrorイベントをバイパスする必要があります。 RETURN 1をそこに置くことでこれを行います。

itemchangedイベントでエラーをトリガすることによって、あなたは、タイトルなどのアイコン、ボタン、カスタムエラーメッセージボックスを作成したり、システムのデフォルトを使用して制御することができます

0

payer_phoneはフィールドが編集されていると仮定すると、私はあなたを信じていますデータセットの基礎となる値を設定する代わりにSetText()が必要です。

この相違点を理解するには、データ入力のために、データウィンドウの上にフローティングのコントロールがあり、フォーカスのあるフィールドからフィールドへ移動することが必要です。入力されたデータが受け入れられると、フローティングコントロールの値はDWのデータセットにフラッシュされます。 GetText()とSetText()はそのフローティングコントロールを処理します。あなたのコードはDWデータセットを変更しています。最初のエラーの後、次回Tabキーを押すとコントロールの変更が検出されないため、データが変更されたときに発生する機能は発生せず、エラーコードは決して発生しません。

幸運。

0

別の署名と同じ機能のメッセージボックスを使用してアイコンとタイトルを変更することができる: メッセージボックス(タイトル、テキスト{アイコン{ボタン{デフォルト}}})

HTH、 アリ

0

あなたは異なる署名を使用して同じ機能のメッセージボックスを使用することにより、アイコンとタイトルを変更できます。メッセージボックス(タイトル、テキスト、アイコン、ボタン、デフォルト)

HTH、アリ

関連する問題