Powerbuilder pour les completement Geeks !

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 06-06-2014 16:08:59

FMI  
Membre
Date d'inscription: 02-08-2012
Messages: 12
Pépites: 57
Banque: 0

[RESOLU] Ligne de datastore updatable sous certaines conditions

Bonjour.
J'ai une datastore avec 3 colonnes me permettant d'ajouter des objets en base de donnée.
Je peux rendre les colonnes éditables ou non dans PB en utilisant une petite ruse : si le tabsequence est le même dans le edit source sur plusieurs colonnes, alors, le Focus ne peut pas se faire. Il est donc impossible de modifier l'élément. Si je met des tabsequence différents, alors la colonne est bien editable.

Ce que je voudrais faire est un peu plus complexe, je voudrais que sur les lignes en cours de création (grâce à un bouton nouveau un ligne est ajoutée avec tous les éléments  à vide) on puisse insérer les données. Ca c'est bon si les 3 tabsequences sont différents.
Par contre, une fois la donnée créée, il ne doit être possible de ne modifier que la seconde colonne.
La première ne doit plus être pas editable après enregistrement.

Sauf que je n'arrive à rendre que toutes les lignes d'une colonne editables ou alors aucunes...

Quelqu'un aurait une idée pour m'aider?

par avance, merci.

Dernière modification par FMI (09-06-2014 07:48:46)

Hors ligne

 

#2 07-06-2014 09:09:25

_francois_  
Bienfaiteur du site
Lieu: TOULOUSE
Date d'inscription: 25-03-2010
Messages: 151
Pépites: 178,983,268,111
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Pourquoi jouer avec les tabsequence ?

Tu as dans les contrôles des datawindow une propriété Protect sur laquelle tu peux en plus mettre des conditions genre if (nouvelle_ligne = true,0,1)
Je n'ai pas PB sous la main là donc je ne sais pas si tu peux utiliser le getitemstatus ou équivalent mais au pire tu peux utiliser une colonne "dummy" que tu positionne à 0 pour les nouvelles lignes et à 1 une fois l'update fait et tu conditionnes ton protect sur le "dummy"

Hors ligne

 

#3 09-06-2014 07:32:37

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Salut,

      On peut dans la propriété PROTECT sur ta première colonne mettre la condition suivante :

Code: pb

If( isrowNew() = 0 , 1 ) 


Cdt
Yanis

Hors ligne

 

#4 09-06-2014 07:34:03

FMI  
Membre
Date d'inscription: 02-08-2012
Messages: 12
Pépites: 57
Banque: 0

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Je vais tenter ça. Merci de votre aide.

Hors ligne

 

#5 09-06-2014 07:43:43

FMI  
Membre
Date d'inscription: 02-08-2012
Messages: 12
Pépites: 57
Banque: 0

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Les gars, merci, impeccable, ça fonctionne super bien. En fait j'ai utilisé votre technique dans le constructeur en 2 lignes. Une pour la propriété protect, une pour la coloration du champ.
this.Modify("MonChamp.Protect='1~tIf(IsRowNew(),1,0)'")
this.Object.MonChamp.BackGround.Mode = '1~tif (IsRowNew(), 1, 0 )'

Hors ligne

 

#6 09-06-2014 08:07:11

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Salut,

     Pourquoi le fait tu par script au lieu de le mettre dans la datawindow directement ?   ( tu as un petit icone à droite de la propriété protect dans lequel tu peut mettre ton expression conditionelle )

Cdt
Yanis

Hors ligne

 

#7 09-06-2014 08:10:19

FMI  
Membre
Date d'inscription: 02-08-2012
Messages: 12
Pépites: 57
Banque: 0

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Je ne vois pas de propriété Protect sur ma DataWindow. J'ai regardé dans tous les onglets, je ne vois rien de tel.
Je suis en PB 10.5, peut être que c'est lié.

Hors ligne

 

#8 09-06-2014 08:42:44

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Salut,

     Dans ta datawindow tu sélectionne ta colonne de data ( en général celle que tu as mis dans la zone détail ) et dans l'onglet "GENERAL" de tes propriétés tu trouve la propriété "PROTECT"

Cdt
Yanis

Hors ligne

 

#9 09-06-2014 08:49:08

FMI  
Membre
Date d'inscription: 02-08-2012
Messages: 12
Pépites: 57
Banque: 0

Re: [RESOLU] Ligne de datastore updatable sous certaines conditions

Yes c'est ok, j'ai trouvé, merci de ton aide.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22