Page 1 sur 1

Gestion de temps de développement..

Publié : lun. 10/sept./2012 10:46
par microdevweb
Bonjour,

Voici une logiciel de gestion de temps de développement


Image

Version Beta 1.14 (du 11 septembre 2012) n'hésitez pas à me signaler les bug. ATTENTION quant vous fermer la fenêtre vous rendez la fenêtre invisible mais vous ne quitter pas le programme F8 pour rendre la fenêtre à nouveau visible click droit sur l'icone dans le Systray (Barre de menu) pour quitter.

Voici le lien pour télécharger
http://www.mediafire.com/?dq8lc5ro8tam4mc

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 10:55
par falsam
J'aurais préféré une application portable :)

Tu ne gères pas les apostrophes.
Ex : Réunir l'équipe

ça doit venir de ta requête de mise à jour de la base. Encadre tes variables par Chr(34)

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 11:10
par microdevweb
Oui j'ai remarqué un bug j'y travaille... Merci

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 11:21
par falsam
Teste aussi les guillemets.

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 13:02
par jbernard13
Il fait quoi ton programme svp ?

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 13:33
par Ar-S
Version Beta n'hésitez pas à me signaler les bug. ATTENTION quant vous fermer la fenêtre vous rendez la fenêtre invisible mais vous ne quitter pas le programme F8 pour rendre la fenêtre à nouveau visible click droit sur l'icone dans le Systray (Barre de menu) pour quitter.
Un petit messagerequester() ou une infobulle (balloon) sur le systray serait un plus pour remédier à ce soucis lorsqu'on ferme.

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 13:40
par microdevweb
Merci Falsam,

Corrections faites.
Bonjour Ar_S,
un Messarequester deviendrais pénible je penses à force ou alors seulement au première usage. Hummm je ferais cela dans la prochaine version. Notes qu'à la base j'ai fais ce logiciel pour un usage perso.

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 13:42
par Ar-S
Oui c'est sûr que ça serait lourd, l'infobulle est plus judicieuse.

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 15:01
par falsam
@microdevweb : j'ai de nouveau modifié le code que tu connais déja de telle manière que si un utilisateur cache la fenêtre de l'application, une infobulle en zone de notification rappelle à l'utilisateur quelle est la touche à presser pour faire apparaître de nouveau cette fenêtre.

Code : Tout sélectionner

Enumeration
  #Mainform
  #MenuPopUp
  
  #Time  
  #StartTime
  #ElapsedTime
  
  #NOTIFYICONDATA_V4_SIZE = 508
EndEnumeration

;NOTIFYICONDATA structure
;http://msdn.microsoft.com/en-us/library/windows/desktop/bb773352(v=vs.85).aspx
Structure NOTIFYICONDATA_
   cbSize.l
   hwnd.i
   uId.l
   uFlags.l
   uCallbackMessage.l
   hIcon.i
   StructureUnion
      szTip.c[64]
      szTipEx.c[128]
   EndStructureUnion
   dwState.l
   dwStateMask.l
   szInfo.c[256]
   StructureUnion
      uTimeout.l
      uVersion.l
   EndStructureUnion
   szInfoTitle.c[64]
   dwInfoFlags.l
   guidItem.GUID
   hBalloonIcon.i
EndStructure

Global MainformStatus.b

;Le temps qui passe
Procedure Compte_Temps()
  SetGadgetText(#Time, FormatDate("%hh:%ii:%ss", Date()))
  SetGadgetData(#Time, Date()) 
    
  SetGadgetText(#ElapsedTime, FormatDate("%hh:%ii:%ss", GetGadgetData(#Time)-GetGadgetData(#StartTime))) 
EndProcedure

;Afficher un message dans la zone de notification (By : em_uk)
Procedure SysTrayIconBalloon_(uId, hWindow, Title$, Message$, timeOut, flags)
   Protected nId.NOTIFYICONDATA_
   If OSVersion() >= #PB_OS_Windows_Vista
      nId\cbSize = #NOTIFYICONDATA_V3_SIZE
   ElseIf OSVersion() >= #PB_OS_Windows_XP
      nId\cbSize = #NOTIFYICONDATA_V3_SIZE
   ElseIf OSVersion() >= #PB_OS_Windows_2000
      nId\cbSize = #NOTIFYICONDATA_V2_SIZE
   Else
      nId\cbSize = #NOTIFYICONDATA_V1_SIZE
   EndIf
   If nId\cbSize
      nId\uVersion    = 4
      Shell_NotifyIcon_(#NIM_SETVERSION, @nId)
      nId\uId         = uId
      nId\hwnd        = hWindow
      nId\dwInfoFlags = flags
      nId\uFlags      = #NIF_INFO
      nId\uTimeout    = timeOut
      PokeS(@nId\szInfo, Message$, SizeOf(nId\szInfo))
      PokeS(@nId\szInfoTitle, Title$, SizeOf(nId\szInfoTitle))
      ProcedureReturn Shell_NotifyIcon_(#NIM_MODIFY, @nId)
   EndIf
   ProcedureReturn #False
EndProcedure

;Affiche ou chache la fenetre
Procedure ShowHideWindow(*Value)
  Repeat   
    If GetAsyncKeyState_(#VK_F8) & $1 ;Touche F8
     
      If MainformStatus = #False
        HideWindow(#MainForm, #False)
        MainformStatus = #True
        
      Else
        HideWindow(#Mainform, #True)
        MainformStatus = #False
        SysTrayIconBalloon_(1, WindowID(#Mainform),"Information","Touche F8 pour Pour afficher la fenetre", 50, #NIIF_INFO)
      EndIf
     
    EndIf
  ForEver
EndProcedure

MainformStatus=#True

OpenWindow(#MainForm, 100, 150, 300, 150, "SysTray Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreatePopupMenu(#MenuPopUp)
MenuItem(0, "Afficher la fenetre")
MenuItem(1, "Quitter")

TextGadget(#PB_Any, 10, 20, 80, 20, "Il est")
StringGadget(#Time,100, 20, 80, 24, "00:00:00")

TextGadget(#PB_Any, 10, 45, 80, 20, "Début")
StringGadget(#StartTime,100, 45, 80, 24, "00:00:00")

TextGadget(#PB_Any, 10, 75, 80, 20, "Temps passé")
StringGadget(#ElapsedTime,100, 75, 80, 24, "00:00:00")

AddSysTrayIcon(1, WindowID(#Mainform), LoadIcon_(#Null, #IDI_WARNING))
SysTrayIconToolTip(1, "Touche F8" +#CRLF$+ "Pour afficher la fenetre")

AddWindowTimer(#Mainform, 123, 100)
CreateThread(@ShowHideWindow(), #Null)

;Initialisation de l'heure de début d"exécution
SetGadgetText(#StartTime, FormatDate("%hh:%ii:%ss", Date()))
SetGadgetData(#StartTime, Date()) 

TextGadget(#PB_Any, 10, 120, 280, 20, "Touche F8 pour cacher/afficher  la fenêtre")


Repeat
  Event = WaitWindowEvent(100)    
  
  If Event = #PB_Event_Timer And EventTimer() = 123
    Compte_Temps()
  EndIf    

  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu()
        Case 0
          HideWindow(#Mainform, #False)
        Case 1
          End 
      EndSelect
      
    Case #PB_Event_SysTray
      If EventType() = #PB_EventType_LeftDoubleClick
        HideWindow(#Mainform, #False)
      EndIf
      
      If EventType() = #PB_EventType_RightClick
        DisplayPopupMenu(#MenuPopUp, WindowID(#Mainform))
      EndIf
      
      
    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 17:13
par microdevweb
Merci pour ce code Falsam,

Je vais regarder à tout ça...

Nouvelle version 1.11 avec de nombreuse correction de bug

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 17:46
par microdevweb
Voila version 1.12 avec une infobulle quant on rend la fenêtre invisible (merci à Falsam pour son aide précieuse)

Re: Gestion de temps de développement..

Publié : lun. 10/sept./2012 21:01
par falsam
Ooops à mon avis il y a un souci.
-Pas de base de données à l'installation.
-La touche F8 est devenu inactive. L'application apparait bien dans le processus du gestionnaire de tache.
-Impossible de créer une tache, mais sans base de données ça me parait normal.
-Ton setup est toujours estampillé 1.11

Je pense que tu devrais procéder à une installation vierge de ton application avant de la distribuer.

Re: Gestion de temps de développement..

Publié : mar. 11/sept./2012 8:55
par microdevweb
Oui il y a un sérieux Bug,

Je remonte tous mes bkp pour voir le soucis. Heureusement que j'ai patché toutes les modification depuis la version 1.0

Re: Gestion de temps de développement..

Publié : mar. 11/sept./2012 9:49
par microdevweb
Voila la version 1.14 (qui ne devrait plus buger)
Le bug se trouvait dans le path 1.11 pour rendre la fenêtre toujours au premier plan
j'ajoute maintenant le StickyWindow à chaque ouverture de fenêtre

Code : Tout sélectionner

Procedure Gere_Blocage_Fenetre()
  DisableWindow(#Window_Main,0)
  If IsWindow(#Window_Project) : DisableWindow(#Window_Project,0) : EndIf
  If IsWindow(#Window_Tache): DisableWindow(#Window_Tache,0) : EndIf
  If IsWindow(#Window_Project) : DisableWindow(#Window_Main,1) : EndIf
  If IsWindow(#Window_Project_Fic) : DisableWindow(#Window_Project,1) : EndIf
  If IsWindow(#Window_Tache): DisableWindow(#Window_Main,1):EndIf
  If IsWindow(#Window_TacheFic): DisableWindow(#Window_Tache,1):EndIf
  If IsWindow(#Window_Historique) : DisableWindow(#Window_Main,1):EndIf
  ;*Path 1.11 * Path 1.14
;   If Not IsWindow(#Window_Project) And Not IsWindow(#Window_Tache) And Not (#Window_Project_Fic)  And Not (#Window_TacheFic) And Not (#Window_Historique) 
;     StickyWindow(#Window_Main,1)
;   Else
;     StickyWindow(#Window_Main,0)
;   EndIf
  ;*
EndProcedure