Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
J'ai un petit problème intéressant à soumettre à votre sagacité :
J'ai une petite appli qui a besoin de scruter à intervalle régulier une table de statuts dans la base de données. Pour ce faire, je vais charger le contenu de cette table dans une DW à l'aide d'un timer.
Malheureusement, à chaque exécution du retrieve dans cet évenement timer, PB me force le pointeur de souris en sablier, alors que je n'utilise nulle part d'instruction explicite pour faire ça (SetPointer(HourGlass!)).
Voici un exemple tout simple qui illustre ça (remplacer dw_1.dataobject par une dw quelconque qui ramène quelques données) :
$PBExportHeader$w_test.srw forward global type w_test from window end type type dw_1 from datawindow within w_test end type type ds_1 from datastore within w_test end type end forward global type w_test from window integer width = 2825 integer height = 1560 boolean titlebar = true string title = "Untitled" boolean controlmenu = true windowtype windowtype = response! long backcolor = 67108864 string icon = "AppIcon!" boolean center = true dw_1 dw_1 ds_1 ds_1 end type global w_test w_test on w_test.create this.dw_1=create dw_1 this.ds_1=create ds_1 this.Control[]={this.dw_1} end on on w_test.destroy destroy(this.dw_1) destroy(this.ds_1) end on event timer;Timer(0) This.dw_1.Retrieve() //This.ds_1.Retrieve() Timer(1) end event event open;Timer(1) end event event closequery;Timer(0) end event type dw_1 from datawindow within w_test integer x = 626 integer y = 204 integer width = 1353 integer height = 816 integer taborder = 10 string title = "none" string dataobject = "dw_gd_flag" boolean livescroll = true borderstyle borderstyle = stylelowered! end type event constructor;This.SetTransObject(SQLCA) end event type ds_1 from datastore within w_test descriptor "pb_nvo" = "true" string dataobject = "dw_gd_flag" end type on ds_1.create call super::create TriggerEvent( this, "constructor" ) end on on ds_1.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;This.SetTransObject(SQLCA) end event
J'ai tenté d'utiliser une Datastore au lieu d'une Datawindow (cf. code en commentaire) mais le résultat est exactement le même. Idem en forçant des SetPointer(Arrow!) partout !
Qu'est-ce que vous en pensez ?
Hors ligne
j'ai une petite solution,
dans le cas ou la datawindow reste visible sur l'ecran !
tu mets ta datawindow hors du cadre de champ de vision, tout en laissant la propriété Visible et Enabled à True
dans ta datawindow, tu mettras ceci :
evenement retrieverow
string ls_blop ls_blop = 'hamburgerrrrr'
evenement retrievestart
setpointer(arrow!) this.setredraw(false)
evenement retrieveend
setpointer(arrow!) this.setredraw(true)
j'ai fait un test, le pointeur reste à ARROW
Hors ligne
Epaté je suis !
Ca marche !
Merci beaucoup
Pour info, après essai (sachant que j'utilise PB9 9.0.3 build 8565), j'ai réduit le code à ceci :
evenement retrieverow
//
evenement retrievestart
this.setredraw(false)
evenement retrieveend
this.setredraw(true)
Ca marche aussi, en laissant la dw dans le champs de vision.
Merci encore !
Hors ligne
De rien
Merci encore à jdobosz pour sa contribution... (le fait de mettre un commentaire dans l'evenement retrieverow)
+ 50 pepites
Hors ligne
Pages: 1