Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-09-2007 17:09:16

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

[SOURCE] Comment afficher le contenu d'un DS

Créer une fonction globale appelée datastorebox avec le code suivant et comme paramètre le DS à visionner

Code: pb

OpenWithParm(w_datastore, ads_datastore)



Et voici un export de la fenêtre w_datastore appelée précédement

Code: pb

$PBExportHeader$w_datastore.srw
$PBExportComments$Affichage d'une datastore dans une messagebox
forward
global type w_datastore from window
end type
type cb_1 from commandbutton within w_datastore
end type
type dw_1 from datawindow within w_datastore
end type
type cb_ok from commandbutton within w_datastore
end type
end forward

global type w_datastore from window
integer x = 626
integer y = 592
integer width = 2409
integer height = 1228
boolean titlebar = true
string title = "Contenu de la DataStore"
windowtype windowtype = response!
long backcolor = 79741120
cb_1 cb_1
dw_1 dw_1
cb_ok cb_ok
end type
global w_datastore w_datastore

type variables


end variables

forward prototypes
public function string wf_header_name (powerobject apw, string as_colname)
public function string wf_premier_tab (ref string as_chaine)
end prototypes

public function string wf_header_name (powerobject apw, string as_colname);
STRING ls_liste_objets,ls_objet    
DATAWINDOW ldw
DATASTORE lds

CHOOSE CASE apw.TypeOf()
CASE datawindow! 
  ldw = apw

  ls_liste_objets = ldw.Object.DataWindow.Objects
      
  DO WHILE Len(Trim(ls_liste_objets)) > 0
    ls_objet = wf_premier_tab(ls_liste_objets)
    IF String(ldw.Describe(ls_objet + ".Band")) = "header" AND Integer(ldw.Describe(as_colname + ".x")) = Integer(ldw.Describe(ls_objet + ".x")) THEN
      
      RETURN ls_objet
    END IF
  LOOP

CASE datastore!
  lds = apw

  ls_liste_objets = lds.Object.DataWindow.Objects
      
  DO WHILE Len(Trim(ls_liste_objets)) > 0
    ls_objet = wf_premier_tab(ls_liste_objets)
    IF String(lds.Describe(ls_objet + ".Band")) = "header" AND Integer(lds.Describe(as_colname + ".x")) = Integer(lds.Describe(ls_objet + ".x")) THEN
      
      RETURN ls_objet
    END IF
  LOOP  
END CHOOSE

RETURN ""
end function

public function string wf_premier_tab (ref string as_chaine);LONG ll_pos
STRING ls_element

ll_pos = Pos(as_chaine,"~t")

IF ll_pos > 0 THEN
  ls_element = Left(as_chaine,ll_pos - 1)
  as_chaine = RIGHT(as_chaine,Len(as_chaine) - ll_pos)
ELSE
  ls_element = as_chaine
  as_chaine = ""
END IF

RETURN ls_element
end function

on w_datastore.create
this.cb_1=create cb_1
this.dw_1=create dw_1
this.cb_ok=create cb_ok
this.Control[]={this.cb_1,&
this.dw_1,&
this.cb_ok}
end on

on w_datastore.destroy
destroy(this.cb_1)
destroy(this.dw_1)
destroy(this.cb_ok)
end on

event open;// --------------------------------------------------------------------//
//   syntaxe d'appel : DataStoreBox(ds_datastore)                      //
// --------------------------------------------------------------------//

String  ls_syntax, ls_header, ls_column 
Integer i

DataStore lds_datastore
lds_datastore = Message.PowerObjectParm

// lecture syntaxe
ls_syntax = lds_datastore.Describe('DataWindow.Syntax')
//MessageBox('Syntaxe', ls_syntax)

// modification nouvelle syntaxe (grid)
i = Pos(ls_syntax, 'processing=0')
if i > 0 then
  ls_syntax = Replace(ls_syntax, i, 12, 'processing=1')
end if

dw_1.Create(ls_syntax)

dw_1.SetRedraw(False)

dw_1.Object.DataWindow.Color           = 16777215 
dw_1.Object.DataWindow.Grid.Lines      = 0
dw_1.Object.DataWindow.Grid.ColumnMove = True
dw_1.Object.DataWindow.Selected.Mouse  = False
dw_1.Object.DataWindow.Header.Color    = 12632256
dw_1.Object.DataWindow.Header.Height   = 73
dw_1.Object.DataWindow.Detail.Color    = 536870912
dw_1.Object.DataWindow.Detail.Height   = 73

// maj des headers avec le nom des colonnes + protection
for i = 1 to Integer(dw_1.Describe('DataWindow.Column.Count'))
  ls_header = wf_header_name(dw_1, '#' + String(i))
  ls_column = dw_1.Describe('#' + String(i) + '.Name')
  dw_1.Modify(ls_header + ".Text='" + ls_column + "'")
  dw_1.Modify('#' + String(i) + '.Protect=1')
next

// recopie des lignes de la DataStore dans dw_1
lds_datastore.RowsCopy(1, lds_datastore.RowCount(), Primary!, dw_1, 1, Primary!)

dw_1.SetRedraw(True)

// positionnement focus
dw_1.SelectRow(0, False)
if dw_1.RowCount() > 0 then
  dw_1.ScrollToRow(1)
  dw_1.SelectRow(1, True)
end if
dw_1.SetFocus()

return

end event

type cb_1 from commandbutton within w_datastore
integer x = 2039
integer y = 1024
integer width = 329
integer height = 96
integer taborder = 30
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "MS Sans Serif"
string text = "&Sauve"
boolean default = true
end type

event clicked;call super::clicked;dw_1.saveas("c:\Winnt\datastore.xls",Excel5!,false)
end event

type dw_1 from datawindow within w_datastore
integer x = 18
integer y = 24
integer width = 2341
integer height = 968
integer taborder = 10
boolean hscrollbar = true
boolean vscrollbar = true
boolean livescroll = true
borderstyle borderstyle = stylelowered!
end type

event rowfocuschanged;if currentrow > 0 and dw_1.RowCount() > 0 then
  dw_1.SelectRow(0, False)
  dw_1.SelectRow(currentrow, True)
  dw_1.ScrollToRow(currentrow)
end if


end event

type cb_ok from commandbutton within w_datastore
integer x = 1682
integer y = 1024
integer width = 329
integer height = 96
integer taborder = 20
integer textsize = -8
integer weight = 400
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "MS Sans Serif"
string text = "&Ok"
boolean default = true
end type

event clicked;// fermeture
Close(Parent)
end event

Dernière modification par LeCiao (08-11-2007 16:41:12)

Hors ligne

 

#2 13-09-2007 18:22:30

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [SOURCE] Comment afficher le contenu d'un DS


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 14-09-2007 17:02:29

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 30-05-2006
Messages: 4682
Pépites: 1,016
Banque: 2,147,483,647
Site web

Re: [SOURCE] Comment afficher le contenu d'un DS

+ 150 pepites


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#4 14-09-2007 19:16:18

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [SOURCE] Comment afficher le contenu d'un DS

pépite


never let people work on more than one thing at once.

Hors ligne

 

#5 06-11-2007 15:17:21

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [SOURCE] Comment afficher le contenu d'un DS

Salut, merci pour cet objet,

ce qui serait encore mieux ce serait d'enlever les références à des objets de ton environnement inconnus chez les autres (ex : u_cb_sauver, f_header_name) ou bien de fournir les export de ces objets aussi (mais là c'est sans fin...)

merci en tout cas


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#6 06-11-2007 16:23:28

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [SOURCE] Comment afficher le contenu d'un DS

J'avais pas fais gaffe à ces 2 références.
Du coup j'ai modifié le code PB du premier post pour que se soit indépendant de u_cb_sauver et f_header_name

Dernière modification par LeCiao (06-11-2007 16:23:50)

Hors ligne

 

#7 06-11-2007 16:54:18

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Comment afficher le contenu d'un DS

hello,

C'est une très bonne initiative, et cela peut tellement être utile que j'essaye de le tester, mais maintenant il y a un appel à f_premier_tab que nous ne connaissons pas......

Merci

Hors ligne

 

#8 06-11-2007 17:16:09

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [SOURCE] Comment afficher le contenu d'un DS

J'ai remodifié. J'ai pas eu le temps de vérifier s'il y en à d'autres mais je continuerais à modifier si besoin

Hors ligne

 

#9 06-11-2007 17:18:01

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [SOURCE] Comment afficher le contenu d'un DS

à priori il n'y avait que ces 2 là. ;-)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#10 08-11-2007 15:46:46

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Comment afficher le contenu d'un DS

Bonjour,

J'essaye en vain de faire fonctionner cette fenetre.

Je boucle dans la fonction wf_header_name, même si ma datastore ne contient qu'une seule colonne et un seul enregistrement.

Je boucle dans la partie IF String(ldw.Describe(ls_objet ........ et je n'en sort jamais.

Par contre si j'enlève l'appel à cette fonction, ça fonctionne bien.

Pb 10.5.2

Une idée ??

Hors ligne

 

#11 08-11-2007 16:35:41

LeCiao  
Membre Geek
Date d'inscription: 05-09-2007
Messages: 87
Pépites: 18
Banque: 362,050,507,885,535

Re: [SOURCE] Comment afficher le contenu d'un DS

Oui j'ai une idée

En fait le paramètre de la fonction wf_premier_tab doit être passé par "Reference" au lieu de "value"

Je remodifie le script d'origine

Hors ligne

 

#12 08-11-2007 16:42:49

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Comment afficher le contenu d'un DS

super, mais oui mais c'est bien sur.

ça marche super

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22