Page 1 sur 1

[RESOLU]Création de Gadgets : Problème de lenteur

Publié : jeu. 31/mai/2007 13:16
par Progi1984
Etant en train de créer un gadget de type OutlookBar, j'ai un problème de lenteur :

File:1->OGadget.pb
Image

Le problème est que la création de la fenetre rame ! Je ne sais pas si ca vient de la création du gadget ou des addGadgetitem...
De plus, cela rame pas tout le temps ! Dès fois, la création ne va pas ramer et certaines fois plusieurs secondes !

Merci d'avance pour votre aide !

Publié : jeu. 31/mai/2007 15:05
par brossden
Tu utilises une lib : ObjectManager.lib !

Peux tu nous donner le lien pour la telecharger ?

Publié : jeu. 31/mai/2007 16:14
par Progi1984
Regarde dans ton dossier Compiler du dossier Purebasic :)

Publié : jeu. 31/mai/2007 17:59
par Anonyme2
Je l'ai ouvert 15 fois de suite et c'est immédiat. Ca ne rame pas.

Publié : jeu. 31/mai/2007 18:14
par flaith
Denis a écrit :Je l'ai ouvert 15 fois de suite et c'est immédiat. Ca ne rame pas.
Pareil pour moi

Publié : ven. 01/juin/2007 18:27
par Flype
chez moi effectivement çà rame dur parfois.

il y a quelque fois 10 ou 15 secondes d'attente.

Publié : sam. 02/juin/2007 7:23
par lionel_om
flaith a écrit :
Denis a écrit :Je l'ai ouvert 15 fois de suite et c'est immédiat. Ca ne rame pas.
Pareil pour moi
+1

Publié : sam. 02/juin/2007 16:39
par Progi1984
Pour ceux qui ont des ralentissements : à quel niveau : AddGadgetItem ou Creation du Gadget ?

Pour ceux qui n'en ont pas : testé avec et sans le débuggueur ?

Merci à tous !

Publié : dim. 03/juin/2007 16:16
par Progi1984
Incide : En remplacant le containergadget par un imagegadget, je gagne pas mal de secondes !

Publié : dim. 03/juin/2007 17:39
par Dr. Dri
testé avec et sans debugger sans ralentissement, mais j'en ai déjà eu une fois.

essaye ça :

Code : Tout sélectionner

LockWindowUpdate_( WindowID(#Fenetre) )

;création des gadgets

LockWindowUpdate_(#Null)
Dri

Publié : lun. 04/juin/2007 7:47
par Progi1984
J'ai mis cela dans la fonction OB_AddGadgetItem3, comme cela :

Code : Tout sélectionner

Procedure OB_AddGadgetItem3(*gadget.PB_Gadget, Position, Texte.s , ImageID, Options)
	Protected Inc_a.l
	If *gadget
		Protected *info.S_ROutlookBar = OUTLOOKBAR_ID(*gadget\gadget)
    With *info
      LockWindowUpdate_(\HwndParent) 
      CreateGadgetList(GadgetID(\HwndStaticBg))
      If Position = -1
      	Position = \NbHeader
      Else
      	For Inc_a = \NbHeader To Position+1 Step -1
      		\ButtonID[Inc_a]\ID 					= \ButtonID[Inc_a-1]\ID
      		\ButtonID[Inc_a]\Pos\top			=	\ButtonID[Inc_a-1]\Pos\top + 20
      	Next
      EndIf
      \ButtonID[Position]\ID = ButtonGadget(#PB_Any,0,\ButtonID[Position]\Pos\top,\width,20,Texte)
      \NbHeader +1
    	If Position > -1
    		For Inc_a = 0 To \NbHeader-1
	    		ResizeGadget(\ButtonID[Inc_a]\ID, 0,\ButtonID[Inc_a]\Pos\top,\width,20)
	      Next
      EndIf
      \State = Position
    	OB_SetGadgetState(*gadget, Position)
    	InvalidateRect_(*gadget\Gadget, 0, #True)
    	UseGadgetList(\HwndParent)
    	LockWindowUpdate_(#Null)
    EndWith
	EndIf
EndProcedure
Est ce comme cela qu'il fallait l'utiliser ?

---

J'ai mis à jour le code... tout en haut ! Donc si vous voulez bien le tester, svp !

Publié : mar. 05/juin/2007 10:01
par Progi1984
Bon, le problème est réglé ! Mieux vaux utiliser SetProp_, GetProp_ et RemoveProp_ pour la création d'un gadget que d'utiliser la lib gérant les objects !