Yes, I'm really conscious that it won't work in one click, like plug and play...
But your project seduces me a lot because I was about to translate my pb code to a Web application, and pb2web would help me a lot in this work.
Here are the following lines (procedure in my source pb code), hope it helps :
Code: Select all
Procedure modif_client2(noelement)
Protected BWidth.l, BHeight.l, Quit.l, OffsetY.l
If IsGadget(#Master_Ferie)
; On cache l'éventuel gadget d'affichage des jours fériés
HideGadget(#Master_Ferie,1)
EndIf
If IsGadget(#Frame_Master_Ferie)
HideGadget(#Frame_Master_Ferie,1)
EndIf
EnableWindow_(WindowID(0), #False)
BWidth = 700
BHeight = 700
#BButtonHeight = 20
If OpenWindow(1, 0, 0, BWidth,BHeight, "Modification d'un Client - GenCalend" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_WindowCentered)
OffsetY = BHeight - #BButtonHeight - 5
ButtonGadget(#OK_Client, 5, OffsetY, (BWidth - 15) / 2, #BButtonHeight, "OK", #PB_Button_Default)
ButtonGadget(#Annuler_Client, 5 + (BWidth - 10 + 5) / 2, OffsetY, (BWidth - 15) / 2, #BButtonHeight, "Annuler")
DisableGadget(#Ajout_Client,1); Désactivation des boutons Ajouter
DisableGadget(#Modif_Client,1); modifier
DisableGadget(#Suppr_Client,1); et supprimer lors de la modification d'un client
FrameGadget(117,190,10,220,80,"Nom du client :")
BalloonTip(117,"Nom du client :","Spécifier le nom du client",#TOOLTIP_INFO_ICON, FontID(0),$CCF9FF, #Black) ; FontID(0) -> rappelle la fonte Tahoma 8
FrameGadget(118,190,100,220,120,"Système d'exploitation :")
ListViewGadget(#Os_Client,200,120,200, 80)
ResetList(Client())
SelectElement(Client(),noelement)
amodif=Client()\nocli
StringGadget(#Nom_Client,200,40,200,20,Client()\libcli) ;
ResetList(os());
Position=0
While NextElement(os())
AddGadgetItem(#Os_Client,-1,os()\libos) ; Choix des OS
If os()\noos=Client()\noos
pos_os=Position
EndIf
Position=Position+1
Wend
FrameGadget(119,190,230,220,130,"SGBD du client :")
ListViewGadget(#Sgbd_Client,200,260,200, 80)
ResetList(sgbd())
Position=0
While NextElement(sgbd())
AddGadgetItem (#Sgbd_Client,-1,sgbd()\libsgbd) ; Choix des SGBD
If sgbd()\nosgbd=Client()\nosgbd
pos_sgbd=Position
EndIf
Position=Position+1
Wend
SetGadgetState(#Os_Client,pos_os); On affiche la valeur de l'OS par défaut
SetGadgetState(#Sgbd_Client,pos_sgbd); On affiche la valeur du SGBD par défaut
CheckBoxGadget(#Purge_Client,200,360,120,40,"Purge de Calend")
GadgetToolTip(#Purge_Client,"Si coché, génére la commande permettant de supprimer les enregistrements de CALEND pour l'année et le marché concernés.")
SetGadgetState(#Purge_Client,Client()\purge)
EditorGadget(#Divers,200,550,350,100)
AddGadgetItem(#Divers,-1,Client()\divers)
CheckBoxGadget(#InstExec_Client,200,400,150,30,"Instruction d'exécution")
GadgetToolTip(#InstExec_Client,"Insère un commit en fin de script")
SetGadgetState(#InstExec_Client,Client()\instexec)
FrameGadget(116,190,450,200,70,"Libellé court : ")
FrameGadget(115,190,530,390,130,"Divers : ")
GadgetToolTip(#Nom_Client,"Nom du Client")
GadgetToolTip(#Os_Client,"Système d'exploitation du client")
GadgetToolTip(#Sgbd_Client,"SGBD utilisé par le client")
StringGadget(#MiniLib,200,480,180,20,Client()\minilib)
GadgetToolTip(#MiniLib,"Nom court, pour le nom du fichier généré")
DisableGadget(#OK_Client,0); On réactive le bouton OK, on testera ensuite si toutes les infos sont là
Flag=0
Quit=#False
Repeat
EventID3=WaitWindowEvent();
If EventID3= #PB_Event_CloseWindow
Quit = #True
EndIf
If EventID3=#PB_Event_Gadget
Select EventGadget();
Case #OK_Client; Appui sur OK
os=GetGadgetState(#Os_Client); On récupère l'OS
sgbd=GetGadgetState(#Sgbd_Client); On récupère le SGBD
If os=-1
MessageRequester("Informations manquantes", "L'O.S. n'est pas renseigné",#PB_MessageRequester_Ok);
Else
If sgbd=-1
MessageRequester("Informations manquantes", "Le SGBD n'est pas renseigné",#PB_MessageRequester_Ok);
Else
client$=GetGadgetText(#Nom_Client); On récupère le Nom du client
indice=1
ResetList(Client())
ResetList(os())
SelectElement(os(),os)
ResetList(sgbd())
SelectElement(sgbd(),sgbd)
trouve=0
SelectElement(Client(),noelement)
Client()\libcli=client$; Pour le client modifié,
Client()\noos=os()\noos; on met à jour le contenu de la liste chainée
Client()\nosgbd=sgbd()\nosgbd
;Client()\entete=GetGadgetText(#Entete_Client)
Client()\purge=GetGadgetState(#Purge_Client)
Client()\instexec=GetGadgetState(#InstExec_Client)
Client()\minilib=GetGadgetText(#MiniLib)
Client()\divers=GetGadgetText(#Divers)
Insert_Trace(#Event_Trace_Modif_Client,Client()\libcli+" / Nocli : "+Str(Client()\nocli))
Update_Client()
SetGadgetItemText(#Liste_Client,noelement,Str(Client()\nocli),0); Mise à jour de l'enregistrement visuellement
SetGadgetItemText(#Liste_Client,noelement,client$,1);
SetGadgetItemText(#Liste_Client,noelement,os()\libos,2);
SetGadgetItemText(#Liste_Client,noelement,sgbd()\libsgbd,3);
SetGadgetItemText(#Liste_Client,noelement,Client()\entete,4);
SetGadgetItemText(#Liste_Client,noelement,Chr(78+Client()\purge),5);
SetGadgetItemText(#Liste_Client,noelement,Chr(78+Client()\instexec),6);
SetGadgetItemText(#Liste_Client,noelement,Client()\minilib,7)
SetGadgetItemText(#Liste_Client,noelement,Client()\divers,8)
Quit=#True
EndIf
EndIf
Case #Annuler_Client; Appui sur Annuler
Quit=#True
EndSelect
EndIf
Until Quit=#True
DisableGadget(#Ajout_Client,0); Activation de Ajouter
DisableGadget(#Modif_Client,1); désactivation de modifier
DisableGadget(#Suppr_Client,1); et supprimer
DisableGadget(#Generer,0); On active la génération de calendriers
UseGadgetList(WindowID(0))
CloseWindow(1)
EnableWindow_(WindowID(0), #True)
SetActiveWindow(0)
EndIf
EndProcedure
Possible to send you (in PM) the whole code if necessary.
Thanks a lot in advance.