Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Salut,
(application web)
J'ai une window avec 2 editmask et un bouton OK qui lance le retrieve d'une dw.
J'encode une date dans em_1, une date dans em_2 et je clicke sur le bouton ok. Rien ne se passe.
Si je clicke une 2e fois, le retrieve se lance.
J'ai remarqué que le premier click donne le focus au bouton et c'est le 2e qui déclenche le clicked event.
Pourquoi?
J'ai remplacé les 2 editmask par 2 singleline et là, lorsque je clicke sur le bouton le clicked event ce déclenche immédiatement.
Pourquoi cela fontionne-t'il avec les singleline et pas avec les editmask.
Comme ce sont des dates j'aimerais que ce soit des editmask
QQun a une idée?
Merci
Dernière modification par jcc (27-02-2008 17:05:54)
Hors ligne
t'es en webfrom pb11 ?
Hors ligne
il est possible que soit le MASK qui deregle le focus , depuis webform...
Hors ligne
au fait, avec la datawindow, si tu forces un mask pour une colonne, dans l'onglet FORMAT... et bien, tu auras une mauvaise surprise... c'est buggué...
Hors ligne
Je suis en PB 11.1 build 8123
Mon collègue utilise des formats dans une datawindow et il n'a rien remarqué.
Nous faisons une application de gestion des congés pour notre administration et nous allons jouer souvent avec des formats DATE.
Hors ligne
et la datepicker ?
Hors ligne
j'ai essayé le datepicker mais c'est pas terrible.
Il apparait une fois et si je veux corriger le datepicker n'apparait plus
Hors ligne
hé, vous ne voulez pas une autre personne pour votre projet ? vous en avez de la chance !
Hors ligne
OK, j'ai utilisé 2 editmask en spécifiant dropdown calendar dans les propriétés.
C'est beau mais ça ne règle pas le problème de focus sur le bouton OK.
Je suis toujours obligé de clicker 2 fois pour que le clicked event se déclenche.
Hors ligne
et en cochant "default" dans la propriete du bouton ?
Hors ligne
tu peux nous faire une copie d'ecran ?
histoire que j'essaye de reproduire le meme bug.
Hors ligne
Propiété DEFAULT déjà chochée. Ca ne change rien.
Si je règle de tab order de façon à ce que le bouton soit en 1er position.
Le click event se lance dès l'ouverture de la fenêtre. Ce qui est gênant.
Et si je mets le script dans getfocus plutôt que dans clicked event, rien ne se passe.
Hors ligne
bon, fais moi une copie d'ecran...
sinon, fais un export de cet objet, et je regarde depuis mon poste de travail.
Hors ligne
$PBExportHeader$w_planning_test.srw forward global type w_planning_test from window end type type em_2 from editmask within w_planning_test end type type em_1 from editmask within w_planning_test end type type cb_1 from commandbutton within w_planning_test end type type st_2 from statictext within w_planning_test end type type st_1 from statictext within w_planning_test end type type dw_1 from datawindow within w_planning_test end type end forward global type w_planning_test from window integer width = 6546 integer height = 2136 boolean titlebar = true string title = "Untitled" boolean controlmenu = true boolean minbox = true boolean maxbox = true boolean resizable = true long backcolor = 67108864 string icon = "AppIcon!" boolean center = true em_2 em_2 em_1 em_1 cb_1 cb_1 st_2 st_2 st_1 st_1 dw_1 dw_1 end type global w_planning_test w_planning_test type variables date id_debut, id_fin end variables on w_planning_test.create this.em_2=create em_2 this.em_1=create em_1 this.cb_1=create cb_1 this.st_2=create st_2 this.st_1=create st_1 this.dw_1=create dw_1 this.Control[]={this.em_2,& this.em_1,& this.cb_1,& this.st_2,& this.st_1,& this.dw_1} end on on w_planning_test.destroy destroy(this.em_2) destroy(this.em_1) destroy(this.cb_1) destroy(this.st_2) destroy(this.st_1) destroy(this.dw_1) end on event open;dw_1.settransobject(sqlca) end event type em_2 from editmask within w_planning_test integer x = 800 integer y = 84 integer width = 402 integer height = 112 integer taborder = 20 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" long textcolor = 33554432 string text = "none" alignment alignment = center! borderstyle borderstyle = stylelowered! maskdatatype maskdatatype = datemask! string mask = "dd/mm/yyyy" boolean dropdowncalendar = true end type event modified;id_fin= date(this.text) id_debut = date(em_1.text) end event type em_1 from editmask within w_planning_test integer x = 261 integer y = 84 integer width = 402 integer height = 112 integer taborder = 10 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" long textcolor = 33554432 string text = "none" alignment alignment = center! borderstyle borderstyle = stylelowered! maskdatatype maskdatatype = datemask! string mask = "dd/mm/yyyy" boolean dropdowncalendar = true end type event modified;id_debut = date(this.text) id_fin = date(em_2.text) end event type cb_1 from commandbutton within w_planning_test integer x = 1326 integer y = 84 integer width = 402 integer height = 112 integer taborder = 30 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" string text = "OK" boolean default = true end type event clicked;messagebox("ok","ok") messagebox("date deb",string(id_debut)) messagebox("date fin", string(id_fin)) dw_1.retrieve(id_debut,id_fin) date rel_date string s_title_date integer i_cpt_date i_cpt_date = 1 rel_date = id_debut do while rel_date <= id_fin s_title_date = "t_" + string(i_cpt_date) + ".text='" + string(day(rel_date)) +"'" //messagebox("rel date",s_title_date) dw_1.modify(s_title_date) rel_date = relativedate(rel_date,1) i_cpt_date = i_cpt_date + 1 loop end event type st_2 from statictext within w_planning_test integer x = 690 integer y = 108 integer width = 110 integer height = 64 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" long textcolor = 8388608 long backcolor = 67108864 string text = "au" boolean focusrectangle = false end type type st_1 from statictext within w_planning_test integer x = 105 integer y = 108 integer width = 101 integer height = 64 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" long textcolor = 8388608 long backcolor = 67108864 string text = "du" long bordercolor = 67108864 boolean focusrectangle = false end type type dw_1 from datawindow within w_planning_test integer x = 14 integer y = 208 integer width = 6473 integer height = 1812 integer taborder = 40 string title = "none" string dataobject = "dw_planning_test" boolean livescroll = true borderstyle borderstyle = stylelowered! end type
Hors ligne
J'ai trouvé une 1/2 solution.
J'ai supprimé le bouton ok.
Et je lance le retrieve dans le modified des 2 editmask.
Problème, je suis obligé de faire ENTER pour valider la date car je ne perd pas le focus.
Par ex. j'encode la 1er date (editmask avec dropdown calendar). Comme je n'ai encore rien introduit dans le second editmask, rien ne se passe.
J'encode maintenant la 2e date (editmask avec dropdown calendar), rien ne se passe tant que je n'ai pas fait ENTER.
Y-a-t'il un moyen de forcer le ENTER pour valider car le modified ne se fait qu'à la sortie du champs?
Dernière modification par jcc (27-02-2008 16:32:41)
Hors ligne
bon, une solution
tu mets ton code au debut de l'event clicked de ton bouton :
id_debut = date(em_1.text) id_fin = date(em_2.text)
tu supprimes tes codes de em_1 et em_2 .
et miracle, ca fonctionne !
je te laisse le soin de mettre le RESOLU
A++
Hors ligne
OK, ca fonctionne.
Merci beaucoup.
Mais je ne comprends pourquoi le fait de mettre ces 2 lignes dans le modified aie pu engendrer ce problème.
A+
Hors ligne
bon, le probleme de pb11 webform, c'est lorsque tu commences à mettre jour une variable locale, d'instance ou globale... ca rafraichit ta page IE. tu n'avais pas remarqué ? c'est le POSTBACK . donc, apres le postback, tu dois surement perdre ton focus...
Hors ligne
OK, on apprend tous les jours.
12 ans de PB mais 3 semaines de webform.
J'suis encore un p'tit jeune en développement web.
Merci encore
A+
Hors ligne
je te confirme .
je viens de refaire le test...
A+++
Hors ligne
Pages: 1