Question 1: En retour 3 de itemerror
, vous avez rejeté les données, ce qui efface la colonne et se déclenche à nouveau la itemchanged
. Quant à la raison pour laquelle PowerBuilder est conçu pour fonctionner de cette manière, je pense qu'ils pensaient qu'il suivrait le principe de la moindre surprise, c'est-à-dire qu'ils anticipaient les gens demandant pourquoi le rejet ne se déclenche pas.
Question 2: L'événement itemchanged
remplace itemerror
. Dans itemchanged
vous avez rejeté l'entrée et empêché le changement de focus; dans itemerror
vous acceptez maintenant l'entrée, mais vous n'avez pas supprimé le bloc lors du changement de focus. Vous devez revenir 2 de itemchanged
, puisque vous pouvez contrôler si vous permettez point de changer de l'événement itemerror
, en retournant 1 ou 3.
En cas où quelqu'un est la lecture de cette question sans l'aide powerbuilder fichiers à portée de main :
valeurs de retour pour itemchanged
:
0 (par défaut) Accepter la valeur de données
1 rejeter la valeur de données et ne permettent pas de changer l'accent (déclencheurs itemerror)
2 Rejeter la valeur de données, mais permettent la mise au point de changer (déclencheurs itemerror)
valeurs de retour pour itemerror
:
0 (par défaut) Rejeter la valeur des données et afficher un message d'erreur boîte
1 Rejeter la valeur de données sans boîte de message
2 Accepter la valeur de données
3 rejeter la valeur de données mise au point mais permettent de changer
Merci pour votre réponse. L'aide de PowerBuilder ne semble pas mentionner que l'événement itemerror renvoyant 3 déclenchera l'événement itemchanged, n'est-ce pas? – user218765
Pages pertinentes des documents en ligne (voir ItemChanged et ItemError): http://infocenter.sybase.com/help /topic/com.sybase.dc37783_1150/html/dwref/BABCJGCA.htm –