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

Obtenir le chemin d'un d'une fenêtre MODI COMMAND   



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

Obtenir le chemin d'un d'une fenêtre MODI COMMAND
# 0000000383
ajouté le 28/12/2006 22:57:06 et modifié le 28/12/2006
consulté 7996 fois
Niveau débutant

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

Description
Comme il ne semble pas y avoir de fonction pour pour obtenir le l'emplacement sur un disque d'un fichier.prg ouvert avec la commande MODI COMM MonFichier.prg. Ben je vais user de l'astuce suivant.


A l'aide des fonctions de foxtools,

_EdPaste() j'insère le code suivant au début du fichier

_screen.cWTitle = sys(16)
return

Exécution du fichier

do (_Wtitle(wHandle))

et j'efface le code qui a été précédemment inséré  

_EdCut()


1- Pour tester, ouvrir au minimum 2 autres fenêtres de code.
2- Exécutez GetPath.prg
3- Cliquez  sur l'une des fenêtres de code et vous aurez le chemin affiché sur
la bar de titre de l'Ide

4- pour mettre fin, ctrl+f12

Je n'ai pas trouvé mieux pour l'instant







Code source :
#Define Cr Chr(13)
#Define Lf Chr(10)
#Define CrLf Cr+Lf
#Define Tb Chr(9)

Private gfu
gfu = Createobject("custFunc")

Createobject("t1")


Define Class t1 As Timer
  nHW = 0
  Interval = 0
  f12 = ""
  MyH = 0

  *  /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  * / init   : Eddy Maue  --   Créer le :12/28/06
  Procedure Init

    This.f12 = On("key","ctrl+f12")
    gfu.addScreen("oGetPath",This)
    gfu.DefKey("ctrl+f12","_screen.oGetPath.terminer()")
    gfu.AddTools("foxtools.fll")

    this.MyH = _Wontop()
    This.interval = 100

  Endproc


  *  /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  * / terminer  : Eddy Maue  --   Créer le :12/28/06
  Procedure terminer
    Execscript("on key label ctrl+f12 " +This.f12)
    _screen.oGetPath = .Null.
    Release This
  Endproc




  *  /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  * / timer   : Eddy Maue  --   Créer le :12/28/06
  Procedure Timer
    Local aEnv(25),nh
    nh = _WonTop()
    If This.nHW = nh OR nh=this.MyH
      Return
    Endif

    _EdGetEnv(nh,@aEnv)
    If aEnv(25)=1 == .F. && MODI COMMAND
      Return
    Endif

    this.interval = 0

    Local lnPos,lcClptxt

    lnPos = _EdGetPos(nh)

    _EdSetPos(nh,0)
    lcCTxt = _Cliptext
    _Cliptext = "_screen.cWTitle=SYS(16)"+CrLf+"return"+CrLf
    _EdPaste(nh)


    Sys(1500,"_mfi_save","_mfile")

    Do (_wTitle(nh))


    _EdSelect(nh,0,_EdGetPos(nh))
    _EdCut(nh)
    _EdSetPos(nh,lnPos)
    _Cliptext = lcCTxt

    _screen.Caption_Screen.cWTitle
    this.nHW = nh
    this.Interval = 100

  Endproc && timer

Enddefine



Define Class custFunc As Custom

  Procedure addScreen(pc,uItem)
    If Type("_screen."+pc)="U"
      _Screen.AddProperty(pc)
    Endif
    doIt = "_screen."+pc
    &doIt = uItem
  Endproc

  Procedure DefKey(pcK,pcDef)
    doIt = "on key label "+pcK+" "+pcDef
    &doIt

  Endproc

  Procedure AddTools(pcLib)
    If Lower(Alltrim(pcLib))$Lower(Set("Library"))==.F.
      Set Library To (Home()+"foxtools.fll")
    Endif
  Endproc

Enddefine

Commentaires
le 29/12/2006, Christophe Chenavier a écrit :
Dans la fenêtre de code faire "Clic droit" puis choisir l'option "Propriétés"
Le nom complet du prg est affiché au bas de la fenêtre de propriétés.

le 29/12/2006, eddymaue a écrit :
as-tu un truc pour récupérer ce nom complet avec Fox ?
le 30/12/2006, Christophe Chenavier a écrit :
Testé avec l'interface en français (vfp9 sp1) :

ON KEY LABEL F10 EXECSCRIPT("MOUSE Click Right"+CHR(13)+[KEYBOARD "{UPARROW}+{ENTER}+{CTRL+C}+{ENTER}"]+CHR(13)+"DOEVENTS"+CHR(13)+"MESSAGEBOX(STREXTRACT(_cliptext,'Nom du fichier'+CHR(160)+':'+CHR(13),'Taille'))")



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