LES PFC LES SERVICES DE DATAWINDOWpascal.buguet.free.fr/pdfsEtZips/pwrs_16_pfc_dw.pdf ·...

25

Transcript of LES PFC LES SERVICES DE DATAWINDOWpascal.buguet.free.fr/pdfsEtZips/pwrs_16_pfc_dw.pdf ·...

CHAPITRE 1 LES PFC – LES SERVICES DE DATAWINDOW

Chapitre 1 LES PFC – LES SERVICES DE DATAWINDOW ..................... 2

1.1 Les Services de base de DataWindow....................................................... 4 1.2 Les Services de Tri de DataWindow ......................................................... 5 1.3 Les Services de Filtre de DataWindow ..................................................... 6 1.4 Les Services de Recherche et de Remplacement de DataWindow ........... 7 1.5 Les services de Sélection de lignes de DataWindow ................................ 8 1.6 Les services de Gestion de lignes de DataWindow................................. 10 1.7 Les services d'Impression de DataWindow............................................. 12 1.8 Les services de Requête de DataWindow................................................ 14 1.9 Les services de Recherche dans une DDDW enfant d'une DataWindow 17 1.10 Les services de Colonne Obligatoire de DataWindow......................... 18 1.11 Les services de Liaison de DataWindow............................................. 19 1.12 Les services de Mise à Jour MultiTable de DataWindow.................... 21 1.13 Services divers de DataWindow........................................................... 23

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 3

Prélimaire : Pour accéder aux services de DataWindow vous devez créer une DataWindow qui hérite de u_dw Tous les services sont désactivés automatiquement lors de la destruction du contrôle DataWindow Les Différents Services de DataWindow : Service Nom de l'objet Variable d'instance Les services de base N_cst_dwsrv Inv_base Les services de tri N_cst_dwsrv_Sort Inv_sort Les services de filtre N_cst_dwsrv_Filter Inv_filter Les services de recherche et de remplacement

N_cst_dwsrv_Find Inv_find

Les services de sélection de lignes

N_cst_dwsrv_RowSelection Inv_RowSelect

Les services de gestion de lignes

N_cst_dwsrv_RowManager Inv_RowManager

Les services d'impression N_cst_dwsrv_PrintPreview Inv_PrintPreview Les services de requête N_cst_dwsrv_QueryMode Inv_QueryMode Les services de recherche dans une DDDW

N_cst_dwsrv_DropDownSearch Inv_DropDownSearch

Les services de colonne obligatoire

N_cst_dwsrv_ReqColumn Inv_ReqColumn

Les services de redimensionnement

N_cst_dwsrv_Resize Inv_Resize

Les services de liaison N_cst_dwsrv_Linkage Inv_Linkage Les services de mise à jour multitable

N_cst_dwsrv_MultiTable Inv_MultiTable

Les services de report N_cst_dwsrv_report Inv_Report Services divers Calculette, Calendrier

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 4

1.1 LES SERVICES DE BASE DE DATAWINDOW

• Objectif Les services de base permettent : ! De récupérer des valeurs ! D 'affecter des valeurs ! D 'accéder aux attributs de la dwo ! De modifier les attributs de la dwo Les services de base sont accessibles via le user object pfc_n_cst_dwsrv La variable d'instance permettant l'accès aux services de base est inv_base • Pour rendre actifs les services de base appelez la fonction of_SetBase(booléen) Exemple : Dw_clients.of_SetBase(TRUE) • Pour récupérer la hauteur d'une datawindow utilisez la fonction of_GetHeight() Exemple : long ll_height ll_height = dw_clients.inv_base.of_getHeight() • Pour récupérer la largeur d'une datawindow utilisez la fonction of_GetWidth() Exemple : long ll_width ll_width = dw_clients.inv_base.of_getWidth() • Pour récupérer une valeur sans spécifier le type utilisez la fonction of_GetItem() Syntaxe : Dw.inv_base.of_GetItem(ligne,colonne) Exemple : st_count.text = string(dw_clients.inv_base.of_GetItem(1,4)) • Pour affecter une valeur utilisez la fonction of_SetItem() Syntaxe : Dw.inv_base.of_SetItem(ligne,colonne,valeur) Exemple : dw_clients.inv_base.of_SetItem(1,4,st_count.text)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 5

1.2 LES SERVICES DE TRI DE DATAWINDOW

• Objectif Les services de tri permettent de trier une DataWindow • Pour accéder aux services de Tri appelez la fonction of_SetSort() Syntaxe : NomDeLaDW.of_SetSort(Booléen) Exemple : Dw_clients.of_SetSort(True)

• Pour spécifier un style de tri appelez la fonction of_SetStyle(style) Exemple : dw_clients.inv_sort.of_setStyle(Dw_clients.inv_sort.DropDownListBox)

• Pour afficher une boite de dialogue de tri appelez l'événement pfc_SortDlg() Exemple : dw_clients.inv_sort.event pfc_SortDlg()

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 6

1.3 LES SERVICES DE FILTRE DE DATAWINDOW

• Objectif Les services de filtre permettent de filtrer une DataWindow • Pour accéder aux services de Filtre appelez la fonction of_SetFilter(booléen) Exemple : dw_clients.of_SetFilter(TRUE) dw_clients.inv_filter.of_SetColumnDisplayNameStyle(dw_clients.inv_filter.Header)

• Pour spécifier un style de filtre appelez la fonction of_SetStyle(style) Exemple : dw_clients.inv_filter.of_SetStyle(dw_clients.inv_filter.Simple) • Pour afficher une boite de dialogue de filtre appelez l'événement pfc_FilterDlg() Exemple : dw_clients.inv_filter.event pfc_FilterDlg()

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 7

1.4 LES SERVICES DE RECHERCHE ET DE REMPLACEMENT DE DATAWINDOW

• Objectif

Les services de recherche et de remplacement permettent de faire des recherches et des remplacements dans une DataWindow • Pour accéder aux services de Recherche et de Remplacement appelez la fonction

of_SetFind(booléen) Exemple : Sur l'événement constructor de la datawindow this.of_SetFind(True)

• Pour afficher une boîte de dialogue de recherche appelez l'événement pfc_FindDlg() Exemple : dw_clients.inv_find.event pfc_FindDlg()

• Pour afficher une boîte de dialogue de remplacement appelez l'événement

pfc_ReplaceDlg() Exemple : dw_ clients.inv_find.event pfc_ReplaceDlg()

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 8

1.5 LES SERVICES DE SELECTION DE LIGNES DE DATAWINDOW

• Objectif

Les services de sélection permettent de définir le style de sélection de lignes dans une DataWindow • Pour accéder aux services de sélection de lignes appelez la fonction

of_setRowSelect(booléen) Exemple : Sur l'événement constructor de la datawindow this.of_setRowSelect(True)

• Pour permettre une sélection simple appelez la fonction of_setStyle(style) Exemple : dw_clients.inv_rowselect.of_setStyle(dw_clients.inv_rowselect.single)

Nb : la valeur de dw_clients.inv_rowselect.single est 0 • Pour permettre une sélection multiple appelez la fonction of_setStyle(style) Exemple : dw_clients.inv_rowselect.of_setStyle(dw_clients.inv_rowselect.multiple)

Nb : la valeur de dw_clients.inv_rowselect.multiple est 1 • Pour permettre une sélection étendue appelez la fonction of_setStyle(style) Exemple : dw_clients.inv_rowselect.of_setStyle(dw_clients.inv_rowselect.extended)

Nb : la valeur de dw_clients.inv_rowselect.extended est 2

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 9

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 10

1.6 LES SERVICES DE GESTION DE LIGNES DE DATAWINDOW

• Objectif Les services de gestion de lignes permettent d'ajouter, d'insérer, d'effacer et de récupérer des lignes dans une DataWindow • Pour accéder aux services de gestion de lignes appelez la fonction

of_SetRowManager(booléen) Exemple : Sur l'événement constructor de la datawindow this.of_SetRowManager(True)

• Pour ajouter une ligne à la fin du buffer appelez l'événement pfc_addRow() Exemple : long ll_row ll_row = dw_clients.inv_rowmanager.event pfc_addRow() if ll_row = -1 then messagebox("Erreur","Add row") else dw_clients.scrollToRow(ll_row)

• Pour insérer une ligne appelez l'événement pfc_InsertRow(position) Exemple : long ll_row ll_row = dw_clients.inv_rowmanager.event pfc_InsertRow(dw_clients.getrow()) if ll_row = -1 then messagebox("Erreur","Insert row") else dw_clients.scrollToRow(ll_row) end if

• Pour effacer une ligne appelez l'événement pfc_DeleteRow() Exemple : long ll_row ll_row = dw_clients.inv_rowmanager.event pfc_DeleteRow() if ll_row = -1 then messagebox("Erreur","Delete row") end if

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 11

• Pour restaurer les lignes effacées appelez l'événement pfc_RestoreRow() Exemple : ll_row = dw_clients.inv_rowmanager.event pfc_RestoreRow()

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 12

1.7 LES SERVICES D'IMPRESSION DE DATAWINDOW

• Objectif Les services d'impression permettent d'imprimer et de faire un aperçu avant impression d'une DataWindow • Pour accéder aux services d'impression appelez la fonction of_SetPrintPreview (booléen) Exemple : Sur l'événement constructor de la datawindow this.of_SetPrintPreview(True)

• Pour un aperçu avant impression appelez l'événement pfc_PrintPreview() // Permet de passer en Preview et de revenir en mode normal (à bascule) Exemple : dw_clients.event pfc_PrintPreview()

NB : pour obtenir une fenêtre de zoom en prévisualisation appelez l'événement pfc_zoom() • Pour imprimer appelez l'événement pfc_PrintImmediate() Exemple : dw_clients.event pfc_PrintImmediate()

• Pour "zoomer" la datawindow appelez l'événement pfc_zoom() Exemple : dw_clients.SetFocus() dw_clients.event pfc_zoom()

NB : N'est possible qu'en mode preview

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 13

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 14

1.8 LES SERVICES DE REQUETE DE DATAWINDOW

• Objectif Les services de requête permettent d'exécuter une requête dans une DataWindow. Ce service est semblable au service de filtre. L'interrogation se fait dans la DataWindow. Cela se fait en trois temps : l'utilsateur passe en mode query l'utilisateur saisit la ou les valeurs des critères l'utilisateur quitte le mode query Remarque : Pour tester il est utile de créer quatre boutons de commande (QueryYes, QueryNo, QuerySave, QueryLoad) • Pour accéder aux services de requête appelez la fonction of_SetQueryMode(booléen) Exemple : Sur l'événement constructor de la datawindow this.of_SetQueryMode(True)

• Pour activer le mode query appelez la fonction of_setEnabled(Booléen) Exemple : string ls_cols[] ls_cols[1] = "nomclient" // ls_cols[1] = "cp" // Spécifier les colonnes de critères dw_clients.inv_querymode.of_setQueryCols(ls_cols) // Se mettre en mode query dw_clients.inv_querymode.of_setEnabled(TRUE)

NB : c'est après cet appel là que l'utilisateur devra saisir la ou les valeurs des critères • Pour obtenir les résultats appelez la fonction of_setEnabled(Booléen) // Quitter le mode query dw_clients.inv_querymode.of_setEnabled(FALSE) • Pour sauvegarder les valeurs des critères de la requête dans un fichier appelez

of_Save(titre,chemin,document)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 15

Exemple : string ls_chemin, ls_fichier ls_chemin = "c:\pascal\pb\requete1.txt" // Sauvegarder les critères dw_clients.inv_querymode.of_Save("Enregister votre requête",ls_chemin,ls_fichier) • Pour charger les valeurs des critères à partir d'un fichier appelez

of_Load(titre,chemin,document) Remarque : la fonction of_load() permet automatiquement de passer en mode query, d'affecter des valeurs et de quitter le mode query et donc d'afficher les résultats. Exemple: string ls_chemin, ls_fichier // Charger un fichier de critères dw_clients.inv_querymode.of_Load("Récupérer une requête",ls_chemin,ls_fichier)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 16

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 17

1.9 LES SERVICES DE RECHERCHE DANS UNE DDDW ENFANT D'UNE DATAWINDOW

• Objectif

Ce service permet, lors de la saisie dans le champ d'une DDDW, de sélectionner la première occurrence correspondant aux caractères saisis • Pour activer les services de recherche dans une DDDW appelez les fonctions

of_SetDropDownSearch(Booléen) qui active le service et of_Register(colonne) pour spécifier la colonne qui utilisera ce service (Aucun paramètre pour toutes les colonnes)

Exemple : this.of_SetDropDownSearch(True) this.inv_DropDownsearch.of_Register("cp")

• Pour utiliser ce service redirigez les événements EditChanged et ItemFocusChanged Exemple : Sur l'événement EditChanged this.inv_dropDownSearch.event pfc_EditChanged(row,dwo,data) Sur l'événement ItemFocusChanged this.inv_dropDownSearch.event pfc_ItemFocuschanged(row,dwo)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 18

1.10 LES SERVICES DE COLONNE OBLIGATOIRE DE DATAWINDOW

• Objectif

Ce service permet de différer le contrôle de saisie obligatoire pour un champ d'une DW. Le champ doit être Required et Empty String Is Null. (cf onglet Edit du Column Object du DWO). • Pour activer ce service utilisez la fonction of_SetReqColumn(Booléen) • Pour désactiver ce service pour une colonne particulière utilisez la fonction

of_RegisterSkipColumn("NomDeColonne") Exemple : Toutes les colonnes obligatoires ne sont pas testées à la saisie sauf la colonne "nomclient" this.of_SetReqColumn(True) this.inv_ReqColumn.of_RegisterSkipColumn("nomclient")

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 19

1.11 LES SERVICES DE LIAISON DE DATAWINDOW

• Objectif Ce service permet une gestion simplifiée de deux DataWindow en mode Maître-Détails Etapes : • Pour activer le service de liaison sur une DW utilisez la fonction of_SetLinkage(Booléen)

Syntaxe : dw_.of_SetLinkage(True) • Pour lier les deux DataWindow utilisez la fonction of_LinkTo()

Syntaxe : dw_détails.inv_linkage.of_LinkTo(dw_maître)

• Pour lier les colonnes de jointure utilisez la fonction of_register() Syntaxe : dw_détails.inv_linkage.of_register("col1","col2")

• Pour initialiser la transaction utilisez la fonction of_SetTransObject() Syntaxe : dw_maître.inv_linkage.of_SetTransObject(Transaction)

• Pour définir le style de synchronisation utilisez la fonction of_SetStyle() Syntaxe : dw_détails.inv_linkage.of_SetStyle(dw_maître.inv_linkage.style)

Les valeurs de style sont : filter, retrieve, scroll Remarques : Pour le style "retrieve" il suffit de créer une Retrieval Argument dans le DWO. Pour le style "filter" il est inutile de créer un argument dans le DWO mais il faut coder le pfc_retrieve de la DW détails avec Return retrieve() Exemple : Fenêtre avec deux DataWindows (Commandes et LignesCommandes) Sur l'événement Open de la Window // Activation du service de liaison pour la DW maître dw_cdes.of_SetLinkage(True) // Activation du service de liaison pour la DW détails dw_ligcdes.of_SetLinkage(True) // Liaison entre la dw détails et la dw maître dw_ligcdes.inv_linkage.of_LinkTo(dw_cdes) // mention des colonnes de liaison (Colonne de jointure de la table maître, colonne de jointure //de la table détails

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 20

dw_ligcdes.inv_linkage.of_register("cde","cde") // Etablissement de la transaction dw_cdes.inv_linkage.of_SetTransObject(SQLCA) // Style de synchronisation dw_ligcdes.inv_linkage.of_SetStyle(dw_cdes.inv_linkage.filter) // 1 – Pas d'argument //dw_ligcdes.inv_linkage.of_SetStyle(dw_cdes.inv_linkage.retrieve) // 2 – Un argument //dw_ligcdes.inv_linkage.of_SetStyle(dw_cdes.inv_linkage.scroll) // 3 – Pas d'argument // Récupération des données dw_cdes.inv_linkage.of_Retrieve() Sur l'événement pfc_retrieve de la dw_cdes Return this.retrieve() Options : Si vous utilisez le style Filter ou Scroll Sur l'événement pfc_retrieve de la dw_ligcdes Return retrieve()

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 21

1.12 LES SERVICES DE MISE A JOUR MULTITABLE DE DATAWINDOW

• Objectif

Ce service permet la mise à jour des différentes tables d'une jointure qui est à la base d'un DWO. • Pour activer le service multi-tables sur une DW utilisez la fonction of_SetMultiTable()

Syntaxe : dw_.of_SetMultitable(booléen)

• Pour préciser que la jointure base du dwo est en mise à jour utilisez la fonction of_SetUpdateable(booléen) Syntaxe : dw_.of_SetUdateable(TRUE)

• Pour spécifier les colonnes à mettre à jour utilisez la fonction of_Register() pour chaque

de la jointure Syntaxe : dw_.inv_MultiTable.of_Register(nom de table, tableau de noms de colonnes) Exemple : Dans le constructor de la dw string ls_cols_clients[] = {"clients_nomclient","clients_age"} string ls_cols_villes[] = {"villes_ville"} this.of_SetMultiTable(True) this.of_SetUpdateable(True) dw_multi_tables.inv_multiTable.of_register("clients",ls_cols_clients) dw_multi_tables.inv_multiTable.of_register("villes",ls_cols_villes) dw_multi_tables.of_SetTransObject(Sqlca) dw_multi_tables.of_retrieve()

Pour la validation dw_multi_tables.AcceptText() if dw_multi_tables.inv_multitable.of_update(true,true) = 1 then sqlca.of_commit() else

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 22

sqlca.of_rollback() end if

NB : Les colonnes du DWO ont un ordre de tabulation à 0. Rendez la tabulation possible.

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 23

1.13 SERVICES DIVERS DE DATAWINDOW ! Le calendrier Objectif : afficher un calendrier dans un champ de type date • Pour activer le service appelez la fonction

of_SetDropDownCalendar(Booléen) • Pour afficher le calendrier Dw_.iuo_calendar.of_register(["NomDeColonne"],style) // 1 - none // 2 - DDLB // 3 - DDLB_WITHARROW Exemple : Sur l'événement constructor this.of_SetDropDownCalendar(True) this.iuo_calendar.of_register(2) // ou this.iuo_calendar.of_register("Date_de_Naisance",2)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 24

! La calculette

• Objectif afficher une calculette dans un champ de type numérique • Pour activer le service appelez la fonction of_SetDropDownCalculator(Booléen) • Pour afficher la calculette Dw_.iuo_calculator.of_register(["NomDeColonne"],style) // 1 - none // 2 - DDLB // 3 - DDLB_WITHARROW Exemple : Sur l'événement constructor this.of_SetDropDownCalculator(True) this.iuo_calculator.of_register("montant",2)

PowerBuilder – Les PFC – Services de DataWindow

© Pascal Buguet Imprimé le 19 août 2004 Page 25

! Les propriétés de la DataWindow Pour afficher les propriétés de la DataWindow utilisez la méthode of_SetProperty(booléan) Pour visualiser la fenêtre qui suit cliquez sur le bouton droit de la souris.