Aide - Recherche - Membres - Calendrier
Version complète : Créer un dialogue d'"attente"
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Patrice
Suite à une question de Philippe_DSF, voici un petit bout de code qui peut être utile à tout le monde. Il s'agit d'une fonction qui permet d'afficher et d'effacer un dialogue d'attente (du style "Veuillez patienter, traitement en cours"). Pour avoir une idée de ce que ça donne, c'est le code utilisé dans "Cabine" lorsque vous copiez la base de données vers une carte mémoire ou bien lors d'un calcul de trajet avec correspondances dans les Horaires AF.

CODE
static void WaitManage(Boolean bShow)

{

    static FormPtr             waitform;

    static WinHandle           winActive;

   static FormActiveStateType theFormState;



    // Show wait dialog

    if (bShow)

    {

 // Sauvegarde de l'état de la fenêtre courante

 FrmSaveActiveState(&theFormState);

 winActive = WinGetDrawWindow();



 // Show wait dialog

 waitform = FrmInitForm(waitFormID);

 if (waitform)

 {

     FrmSetActiveForm(waitform);

     FrmDrawForm(waitform);

     // Sony HR

     ReplaceBitmapSony(waitform, waitBimpID);

 }

    }

    else

    {

 // Close wait dialog

 if (waitform)

 {

     FrmEraseForm(waitform);

     FrmDeleteForm(waitform);

 }

 waitform = 0;



 // Restaure l'état précédent

 WinSetDrawWindow(winActive);

 FrmRestoreActiveState(&theFormState);

    }

}


Les ressources doivent (évidemment intégrer un dialogue dont l'ID est waitFormID (dans l'exemple) et contenant le message que vous voulez. Pour l'utiliser, appelez simplement WaitManage(true) avant le traitement "long" et appelez WaitManage(false) une fois que ce traitement est terminé.

Attention, certains appels de cette fonction peuvent sembler superflus : ils ne le sont pas. Il y a des différences de comportement selon les versions de PalmOS...

Code inspiré d'un article PeekPocket que je n'arrive plus à retrouver... rolleyes.gif
Tabetozor
Tu as regardé dans les archives peekpocket de PA?
Patrice
CITATION(Tabetozor)
Tu as regardé dans les archives peekpocket de PA?

Yes, justement... De toutes manières, mon code n'est pas perdu : j'en ai fait une fonction générique icon_lol2.gif
Guy-Lux
5 you sourire.gif
Patrice
Bon... Je viens de remarquer que j'ai 2 versions différentes de cette fonction. La suivante doit fonctionner sur des versions plus anciennes de PalmOS (disponibilité de FrmSaveActiveState() oblige)

CODE
void WaitManage(Boolean bShow)

{

    static FormPtr   prevform;

    static FormPtr   waitform;

    static WinHandle winActive;



    // Show wait dialog

    if (bShow)

    {

 // Sauvegarde de l'état de la fenêtre courante

 prevform  = FrmGetActiveForm();

 winActive = WinGetDrawWindow();



 // Show wait dialog

 waitform = FrmInitForm(waitFormID);

 if (waitform)

 {

     FrmSetActiveForm(waitform);

     FrmDrawForm(waitform);

 }

    }

    else

    {

 // Close wait dialog

 if (waitform)

 {

     FrmEraseForm(waitform);

     FrmDeleteForm(waitform);

 }

 waitform = 0;



 // Restaure l'état précédent

 WinSetDrawWindow(winActive);

 FrmSetActiveForm(prevform);

    }

}
Patrice
J'ai retrouvé ma source dans les archives PeekPocket (pas facile de faire des recherches, là-dedans...) : c'est ICI.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.