ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Affecter les Captions d'une table aux headers d'une grille   



L'auteur

eddymaue
Canada Canada
Membre Simple
# 0000000075
enregistré le 26/10/2004
Maue Eddy
j8j 8j8 Gatineau
de la société Formatek
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation

Affecter les Captions d'une table aux headers d'une grille
# 0000000389
ajouté le 05/01/2007 21:26:27 et modifié le 08/01/2007
consulté 4277 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description
C'est toute simple et je me vote 20/20

pour obtenir le caption d'une table dans une database

DbGet("matable.monchamps","Field","Caption")

pour affecter un Caption à une table dans une database

DbSet("Matable.MonChamps",Field","Caption","Mon Entête"

et le programme qui suit fait ça.


Code source :
Release oform
Close Databases


Cd (Justpath(Substr(Sys(16),Iif(Sys(16)="PROCEDURE",At(" ",Sys(16),2),1))))
Delete File mdb.*
Delete File MaTable.*

cDbc = "Mdb"
If Dbused(cDbc)=.F.
  If File(cDbc+".dbc")=.F.
    Create Database (cDbc)
  Else
    Open Database (cDbc)
  Endif
Endif

cT = "MaTable"
If Used(cT)=.F.
  If File(cT+".dbf")=.F.
    Create Table (cT) (;
      f1 i Autoinc Primary Key ,;
      f2 c(10) ,;
      f3 c(10) )
    DBSetProp(cT+".f1","FIELD","Caption","Champs F1")
    DBSetProp(cT+".f2","FIELD","Caption","Champs F2")
    DBSetProp(cT+".f3","FIELD","Caption","Champs F3")

    CursorSetProp("AutoIncError",.F.,cT)
    For i = 1 To 10
      Insert Into (cT) Values (Reccount()+1,Transform(2)+Sys(2015),Transform(3)+Sys(2015))
    Endfor
    Locate
    CursorSetProp("AutoIncError",.T.,cT)


  Else
    Select 0
    Use (cT)
  Endif
Endif

Public oform

oform = Createobject("frm1")
oform.Show()
Define Class frm1 As Form
  Add Object grd1 As Grid With ;
    ColumnCount=3,RecordSourceType =0

  Procedure grd1.Init
    With This
      For Each oCol In  This.Columns
        With oCol
          If  Indbc(.ControlSource'FIELD'&& proposé par Gregory Adam
            cCaption = DBGetProp(.ControlSource,"FIELD","Caption")
            .header1.Caption = Iif(Empty(cCaption),Justext(.ControlSource),cCaption)
          Endif
        Endwith
      Endfor
    Endwith

Enddefine




Commentaires
le 06/01/2007, Gregory Adam a écrit :
Oui, c'est tout simple. Trop simple

J'aurais prefere

do case
&& pas de test = erreur avec DBGetProp(oCol.ControlSource,"FIELD","Caption")
case !indbc(oCol.ControlSource, 'Field')

case empty(DBGetProp(oCol.ControlSource,"FIELD","Caption"))

otherwise
oCol.header1.Caption = DBGetProp(oCol.ControlSource,"FIELD","Caption")

endcase

le 06/01/2007, eddymaue a écrit :
le but de InDbc() n'est ce pas pour savoir si on est dans la base courante ?
le 08/01/2007, Gregory Adam a écrit :
C'est pareil pour dbgetprop() me dit l'aide

Que fais-tu avec des curseurs ?
L'erreur, tu l'attrapes ou, si tu en fais une fonction globale dans ta classe grid ?

?DBGetProp('aaaaaaaa.bbbbbbbbbbbb',"FIELD","Caption")


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2018.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0