Accueil > > > VC/MFC - GESTION DE CTABCTRL - GESTION D'ONGLETS
VC/MFC - GESTION DE CTABCTRL - GESTION D'ONGLETS
Information sur la source
Description
j'ai plutot mis longtemps à gérer les onglets correctements
Le pb est d'avoir une table a onglets sur un dialog box
et cet table à onglet ne couvrant qu'une partie de la boite de dialogue
aujourd'hui, qqn me pose la question, voici la réponse que je lui est faite (explications orales en moins)
ci dessous figure un brouillon de source qui sera repris ultérieurement.
Un exemple concret est dans le fichier joint
la procédure donnée si dessous y a été simplifiée
En plus, il montre des choses amusantes comme le fait que l'on puisse y rendre cachées les sous boites.... avec IDOK et IDCANCEL
Bonne prog
Source
- 1 Créer nun obj graphiq tab CTRL
-
- lui associer une var de ctrl CTabCTRL
-
- 2 Créer une boite pr les sous fenetres
- style : Child & NoBordered
- more style : control
-
- 3 Créer les classes associées aux sous fenetres
- sachant que leur constructeur doit initialiser un ptr sur la classe mere
- (simplification gestion des CTRL au sein de la sous classe)
-
-
- DChoixTraitement::DChoixTraitement(CWnd* pParent/*=NULL*/):CDialog(DChoixTraitement::IDD, pParent)
- {
- /// -----------------------------------------------------------------------------------
- /// ---------------- DChoixTraitement::DChoixTraitement(CWnd* pParent) ----------------
- /// -----------------------------------------------------------------------------------
- /// ----- Objectif : Constructeur de la classe : DChoixTraitement
- /// ----- Auteur(s) : Magic_Nono 07/07/04
- /// ----- PostCond : Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
- /// -----------------------------------------------------------------------------------
- /// ----- CWnd* pParent(par défaut : 'NULL') : pointeur sur la fenetre mère
- /// -----------------------------------------------------------------------------------
- //{{AFX_DATA_INIT(DChoixTraitement)
- m_cTraceCode=FALSE;
- m_cRepartitCode=FALSE;
- m_cMiseEnForme=FALSE;
- m_cCommenteCode=FALSE;
- m_bCommenterManuellement = FALSE;
- //}}AFX_DATA_INIT
- m_pFPrinc=(DMetaProgPrinc*)pParent;
- }
-
- Permettre aux fenetres de se détrure en fin de prog
- avec une fonction PostNcDestroy
- appellée ainsi
- avec le classwizard en méthode prédéfinie de la classe
- dont voici le détail
- void DChoixTraitement::PostNcDestroy()
- {
- /// -------------------------------------------------------------------
- /// ---------------- DChoixTraitement::PostNcDestroy() ----------------
- /// -------------------------------------------------------------------
- /// ----- Objectif : Appelé à la destruction de la fenetre
- /// ----- Auteur(s) : Magic_Nono 10/08/04
- /// ----- PreCond : /
- /// ----- PostCond : /
- /// -------------------------------------------------------------------
- //fonction appelée à la destruction de la fenetre mere
- // TODO: Add your specialized code here and/or call the base class
- CDialog::PostNcDestroy();
- delete(this);
- }
-
-
-
- 4 ds la cl princ
- mettre un pointeur par sous fenetre (var membre)
-
- ds OnInitDialog
- initialiser les onglets
-
- c_tabChoixTrtt.DeleteAllItems();
- /// Algo : init titres
- ///nota : pb possible en mode release : soluce :
- ///+ char titre[50]
- ///+ strcpy(titre,"yyyyyyyy");
- ///+ tabCtrlItem.pszText = titre;
- BString plomp;
- // TC_ITEM tabCtrlItem;
- // tabCtrlItem.mask=TCIF_TEXT;
- plomp=BLang::getTxtLangue("choixTraitement",false);
- // tabCtrlItem.pszText=plomp;
- c_tabChoixTrtt.InsertItem( 0,plomp);
- plomp=BLang::getTxtLangue("choixNettoyage",false);
-
- // tabCtrlItem.pszText=_T(plomp);
- c_tabChoixTrtt.InsertItem( 1,plomp );
- // tabCtrlItem.pszText=_T(plomp);
- c_tabChoixTrtt.InsertItem( 2,BLang::getTxtLangue("choixInfo",false) );
- // tabCtrlItem.pszText=_T(plomp);
- c_tabChoixTrtt.InsertItem( 3,BLang::getTxtLangue("choixAssistant",false) );
- // tabCtrlItem.pszText=_T(plomp);
- c_tabChoixTrtt.InsertItem( 4,BLang::getTxtLangue("choixAide",false) );
-
-
- pour chaque sous fenetre, créer une instance
- m_pChoixDeveloppement=new DChoixDevel(this);
- m_pChoixDeveloppement->Create(IDD_DCHOIX_DEVELOPPEMENT,this);
- m_pChoixDeveloppement->ShowWindow(SW_HIDE);
-
- positionner la fenêtre
- /// Algo : init sous fenetres (positionnement)
- {
- //getSystemMetric
- CRect rectTab;
- c_tabChoixTrtt.GetWindowRect(&rectTab);
- ScreenToClient(&rectTab);
- rectTab.left+=5;
- rectTab.top+=25;
- unsigned int largeur=rectTab.Width()-10,hauteur=rectTab.Height()-10;
- m_pChoixDeveloppement->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
- m_pChoixTraitement->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
- m_pChoixInfo->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
- }
-
-
-
- gérer les affichages
- m_pChoixDeveloppement->ShowWindow(iTraitement==3?SW_SHOW:SW_HIDE);
-
- initialiser l'onglet courent
- c_tabChoixTrtt.SetCurSel(tmp);
-
- récupérer l'evt sur modification ds le tabCTRL
- BOOL DMetaProgPrinc::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
- {
- /// ----------------------------------------------------------------------------------------------------------------
- /// ---------------- DMetaProgPrinc::OnNotify(WPARAM wParam ,LPARAM lParam ,LRESULT* pResult) -> BOOL ----------------
- /// ----------------------------------------------------------------------------------------------------------------
- /// ----- Objectif : action... pour la récup de cht d'onglet
- /// ----- Auteur(s) : Magic_Nono 10/08/04
- /// ----- PreCond : 1 evt récupéré
- /// ----- PostCond : /
- /// ----------------------------------------------------------------------------------------------------------------
- /// ----- WPARAM wParam : TODO
- /// ----- LPARAM lParam : paramètre complémentaire
- /// ----- LRESULT* pResult : TODO
- /// ----------------------------------------------------------------------------------------------------------------
- /// ----- retour (BOOL) : cf.obj
- /// ----------------------------------------------------------------------------------------------------------------
- // UpdateData(true);
- if(wParam==IDC_TAB_SELECTION_TRAITEMENT)
- {
- NMHDR*plomp=(NMHDR*)lParam;
- if(plomp->code==TCN_SELCHANGE)
- majChoix();
- }
- return CDialog::OnNotify(wParam, lParam, pResult);
- }
-
- et le gérer
-
- void DMetaProgPrinc::majChoix()
- {
- /// ----------------------------------------------------------
- /// ---------------- DMetaProgPrinc::majChoix() ----------------
- /// ----------------------------------------------------------
- /// ----- Objectif : cht de la sélection du tab CTRL
- /// ----- Auteur(s) : Magic_Nono 10/08/04
- /// ----- PreCond : /
- /// ----- PostCond : /
- /// ----------------------------------------------------------
- int iTraitement=c_tabChoixTrtt.GetCurSel();
- m_pChoixTraitement->ShowWindow(iTraitement<=1?SW_SHOW:SW_HIDE);
- if(iTraitement<=1)
- {
- m_pChoixTraitement->active(iTraitement==0);
- }
- else
- {
- m_pChoixTraitement->ShowWindow(SW_HIDE);
- }
- m_pChoixInfo->ShowWindow(iTraitement==2?SW_SHOW:SW_HIDE);
- m_pChoixDeveloppement->ShowWindow(iTraitement==3?SW_SHOW:SW_HIDE);
- c_aide.ShowWindow(iTraitement==4?SW_SHOW:SW_HIDE);
- UpdateData(false);
- majAffichage();
- }
-
-
-
-
- ____
- nota d mon prog, je gère les affichages ainsi... (fonction tronquée des élts ne concernant pas la gestion d'onglet : gestion menus....)
-
-
- void DMetaProgPrinc::majAffichage()
- {
- /// --------------------------------------------------------------
- /// ---------------- DMetaProgPrinc::majAffichage() ----------------
- /// --------------------------------------------------------------
- /// ----- Objectif : Mise à jours des éléments de la fenêtre accessibles ou non
- /// ----- Explic : 1 check extention & 2 maj Affichage
- /// ----- Auteur(s) : Magic_Nono 05/09/03
- /// ----- PreCond : /
- /// ----- PostCond : /
- /// --------------------------------------------------------------
- UpdateData(true);
- try
- {
- if(m_pChoixInfo==NULL ||m_pChoixDeveloppement==NULL ||m_pChoixTraitement==NULL)
-
- /// algo : sécu
- return;
- /// algo : MaJ ext-> int
- m_pChoixDeveloppement->UpdateData(true);
- m_pChoixInfo->UpdateData(true);
- m_pChoixTraitement->UpdateData(true);
-
- /// algo : SI un langage traité
- if(m_iLangage!=LANGAGE_AUCUN)
- {
- int iTraitement=c_tabChoixTrtt.GetCurSel();
- if(iTraitement!=2)
- m_pChoixInfo->desactive();
- if(iTraitement!=3)
- m_pChoixDeveloppement->desactive();
- if(iTraitement>1)
- m_pChoixTraitement->desactive();
- ///algo : SI mode développement ss fichier & pas développement ni aide
- if(developpementSeuls && iTraitement!=3 && iTraitement!=4) //pas aide ou dvt ...
- {
- ///algo : warning puis (*)
- c_launch.EnableWindow(false);
- return;
- }
- switch(iTraitement)
- {
- case 0: //traiter
- case 1: //nettoyer
- c_launch.EnableWindow(m_pChoixTraitement->active(iTraitement==0));
- break;
- case 2: //information
- c_launch.EnableWindow(m_pChoixInfo->active());
- break;
- case 3: //développer - wizards
- c_launch.EnableWindow(m_pChoixDeveloppement->active(developpementSeuls ,m_cAvecHeader==TRUE));
- }
- }
- ...
- /// algo : Mise à jour des fenetres
- m_pChoixDeveloppement->UpdateData(false);
- m_pChoixInfo->UpdateData(false);
- m_pChoixTraitement->UpdateData(false);
- }
- TRAITE_EXCEPTION_B;
- UpdateData(false);
- }
-
1 Créer nun obj graphiq tab CTRL
lui associer une var de ctrl CTabCTRL
2 Créer une boite pr les sous fenetres
style : Child & NoBordered
more style : control
3 Créer les classes associées aux sous fenetres
sachant que leur constructeur doit initialiser un ptr sur la classe mere
(simplification gestion des CTRL au sein de la sous classe)
DChoixTraitement::DChoixTraitement(CWnd* pParent/*=NULL*/):CDialog(DChoixTraitement::IDD, pParent)
{
/// -----------------------------------------------------------------------------------
/// ---------------- DChoixTraitement::DChoixTraitement(CWnd* pParent) ----------------
/// -----------------------------------------------------------------------------------
/// ----- Objectif : Constructeur de la classe : DChoixTraitement
/// ----- Auteur(s) : Magic_Nono 07/07/04
/// ----- PostCond : Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
/// -----------------------------------------------------------------------------------
/// ----- CWnd* pParent(par défaut : 'NULL') : pointeur sur la fenetre mère
/// -----------------------------------------------------------------------------------
//{{AFX_DATA_INIT(DChoixTraitement)
m_cTraceCode=FALSE;
m_cRepartitCode=FALSE;
m_cMiseEnForme=FALSE;
m_cCommenteCode=FALSE;
m_bCommenterManuellement = FALSE;
//}}AFX_DATA_INIT
m_pFPrinc=(DMetaProgPrinc*)pParent;
}
Permettre aux fenetres de se détrure en fin de prog
avec une fonction PostNcDestroy
appellée ainsi
avec le classwizard en méthode prédéfinie de la classe
dont voici le détail
void DChoixTraitement::PostNcDestroy()
{
/// -------------------------------------------------------------------
/// ---------------- DChoixTraitement::PostNcDestroy() ----------------
/// -------------------------------------------------------------------
/// ----- Objectif : Appelé à la destruction de la fenetre
/// ----- Auteur(s) : Magic_Nono 10/08/04
/// ----- PreCond : /
/// ----- PostCond : /
/// -------------------------------------------------------------------
//fonction appelée à la destruction de la fenetre mere
// TODO: Add your specialized code here and/or call the base class
CDialog::PostNcDestroy();
delete(this);
}
4 ds la cl princ
mettre un pointeur par sous fenetre (var membre)
ds OnInitDialog
initialiser les onglets
c_tabChoixTrtt.DeleteAllItems();
/// Algo : init titres
///nota : pb possible en mode release : soluce :
///+ char titre[50]
///+ strcpy(titre,"yyyyyyyy");
///+ tabCtrlItem.pszText = titre;
BString plomp;
// TC_ITEM tabCtrlItem;
// tabCtrlItem.mask=TCIF_TEXT;
plomp=BLang::getTxtLangue("choixTraitement",false);
// tabCtrlItem.pszText=plomp;
c_tabChoixTrtt.InsertItem( 0,plomp);
plomp=BLang::getTxtLangue("choixNettoyage",false);
// tabCtrlItem.pszText=_T(plomp);
c_tabChoixTrtt.InsertItem( 1,plomp );
// tabCtrlItem.pszText=_T(plomp);
c_tabChoixTrtt.InsertItem( 2,BLang::getTxtLangue("choixInfo",false) );
// tabCtrlItem.pszText=_T(plomp);
c_tabChoixTrtt.InsertItem( 3,BLang::getTxtLangue("choixAssistant",false) );
// tabCtrlItem.pszText=_T(plomp);
c_tabChoixTrtt.InsertItem( 4,BLang::getTxtLangue("choixAide",false) );
pour chaque sous fenetre, créer une instance
m_pChoixDeveloppement=new DChoixDevel(this);
m_pChoixDeveloppement->Create(IDD_DCHOIX_DEVELOPPEMENT,this);
m_pChoixDeveloppement->ShowWindow(SW_HIDE);
positionner la fenêtre
/// Algo : init sous fenetres (positionnement)
{
//getSystemMetric
CRect rectTab;
c_tabChoixTrtt.GetWindowRect(&rectTab);
ScreenToClient(&rectTab);
rectTab.left+=5;
rectTab.top+=25;
unsigned int largeur=rectTab.Width()-10,hauteur=rectTab.Height()-10;
m_pChoixDeveloppement->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
m_pChoixTraitement->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
m_pChoixInfo->SetWindowPos(NULL, rectTab.left , rectTab.top, largeur, hauteur, SWP_NOZORDER);
}
gérer les affichages
m_pChoixDeveloppement->ShowWindow(iTraitement==3?SW_SHOW:SW_HIDE);
initialiser l'onglet courent
c_tabChoixTrtt.SetCurSel(tmp);
récupérer l'evt sur modification ds le tabCTRL
BOOL DMetaProgPrinc::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
/// ----------------------------------------------------------------------------------------------------------------
/// ---------------- DMetaProgPrinc::OnNotify(WPARAM wParam ,LPARAM lParam ,LRESULT* pResult) -> BOOL ----------------
/// ----------------------------------------------------------------------------------------------------------------
/// ----- Objectif : action... pour la récup de cht d'onglet
/// ----- Auteur(s) : Magic_Nono 10/08/04
/// ----- PreCond : 1 evt récupéré
/// ----- PostCond : /
/// ----------------------------------------------------------------------------------------------------------------
/// ----- WPARAM wParam : TODO
/// ----- LPARAM lParam : paramètre complémentaire
/// ----- LRESULT* pResult : TODO
/// ----------------------------------------------------------------------------------------------------------------
/// ----- retour (BOOL) : cf.obj
/// ----------------------------------------------------------------------------------------------------------------
// UpdateData(true);
if(wParam==IDC_TAB_SELECTION_TRAITEMENT)
{
NMHDR*plomp=(NMHDR*)lParam;
if(plomp->code==TCN_SELCHANGE)
majChoix();
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
et le gérer
void DMetaProgPrinc::majChoix()
{
/// ----------------------------------------------------------
/// ---------------- DMetaProgPrinc::majChoix() ----------------
/// ----------------------------------------------------------
/// ----- Objectif : cht de la sélection du tab CTRL
/// ----- Auteur(s) : Magic_Nono 10/08/04
/// ----- PreCond : /
/// ----- PostCond : /
/// ----------------------------------------------------------
int iTraitement=c_tabChoixTrtt.GetCurSel();
m_pChoixTraitement->ShowWindow(iTraitement<=1?SW_SHOW:SW_HIDE);
if(iTraitement<=1)
{
m_pChoixTraitement->active(iTraitement==0);
}
else
{
m_pChoixTraitement->ShowWindow(SW_HIDE);
}
m_pChoixInfo->ShowWindow(iTraitement==2?SW_SHOW:SW_HIDE);
m_pChoixDeveloppement->ShowWindow(iTraitement==3?SW_SHOW:SW_HIDE);
c_aide.ShowWindow(iTraitement==4?SW_SHOW:SW_HIDE);
UpdateData(false);
majAffichage();
}
____
nota d mon prog, je gère les affichages ainsi... (fonction tronquée des élts ne concernant pas la gestion d'onglet : gestion menus....)
void DMetaProgPrinc::majAffichage()
{
/// --------------------------------------------------------------
/// ---------------- DMetaProgPrinc::majAffichage() ----------------
/// --------------------------------------------------------------
/// ----- Objectif : Mise à jours des éléments de la fenêtre accessibles ou non
/// ----- Explic : 1 check extention & 2 maj Affichage
/// ----- Auteur(s) : Magic_Nono 05/09/03
/// ----- PreCond : /
/// ----- PostCond : /
/// --------------------------------------------------------------
UpdateData(true);
try
{
if(m_pChoixInfo==NULL ||m_pChoixDeveloppement==NULL ||m_pChoixTraitement==NULL)
/// algo : sécu
return;
/// algo : MaJ ext-> int
m_pChoixDeveloppement->UpdateData(true);
m_pChoixInfo->UpdateData(true);
m_pChoixTraitement->UpdateData(true);
/// algo : SI un langage traité
if(m_iLangage!=LANGAGE_AUCUN)
{
int iTraitement=c_tabChoixTrtt.GetCurSel();
if(iTraitement!=2)
m_pChoixInfo->desactive();
if(iTraitement!=3)
m_pChoixDeveloppement->desactive();
if(iTraitement>1)
m_pChoixTraitement->desactive();
///algo : SI mode développement ss fichier & pas développement ni aide
if(developpementSeuls && iTraitement!=3 && iTraitement!=4) //pas aide ou dvt ...
{
///algo : warning puis (*)
c_launch.EnableWindow(false);
return;
}
switch(iTraitement)
{
case 0: //traiter
case 1: //nettoyer
c_launch.EnableWindow(m_pChoixTraitement->active(iTraitement==0));
break;
case 2: //information
c_launch.EnableWindow(m_pChoixInfo->active());
break;
case 3: //développer - wizards
c_launch.EnableWindow(m_pChoixDeveloppement->active(developpementSeuls ,m_cAvecHeader==TRUE));
}
}
...
/// algo : Mise à jour des fenetres
m_pChoixDeveloppement->UpdateData(false);
m_pChoixInfo->UpdateData(false);
m_pChoixTraitement->UpdateData(false);
}
TRAITE_EXCEPTION_B;
UpdateData(false);
}
Conclusion
cette version fonctionne sans problème avec VC6
Historique
- 05 novembre 2004 15:34:20 :
- fonction majAffichage() rajjoutée
- 05 novembre 2004 16:24:08 :
- positionnement à ne pas ommettre... sinon, évidemment, rien ne s'affiche !!
- 09 novembre 2004 19:03:49 :
- exemple ajouté
- 16 août 2009 08:14:32 :
- Mise en forme
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Utilisation des CTabCtrl dans VC++ [ par tanguy_laverdure ]
Bonjour,Quelqu'un aurait il deja utilisé le CTabCtrl permettant de mettre un menu a onglet dans une fenetre de dialogue ?Peut t on tout creer avec le
VC++ CTabCtrl et boite de dialog [ par mortiis ]
Bonjour à tous Je fais une application et j'utilise un controle CTabCtrl je réussi à avoir mes onglets avec la ligne m_cTab.InsertIt
interface : désactiver onglet CTabCtrl, VC++6 [ par magic_Nono ]
Bj,Est-il possible de désactiver un onglet d'un CTabCtrl(le rendre griser)comme avec EnableWindowSi ce n'est pas le cas, quelle classe utiliser si fai
onglet CTabCtrl [ par gugaut13 ]
Bonjour, Je viens de creer sous visual C++ une MFC en integrant un Tab control. j'ai reussi a creer les onglets, j'ai ajoute des bouton d'action mai
Comment reactiver une fentre Dialog [ par enrageur ]
Je programme sous visual C++ 6. je concois un petit logiciel avec des fenetres windows (fenetre Dialog par default). Voila mon probleme, j'ouvre une f
Onglet et dialogue box : HELP ! [ par jbmartinez ]
Voilà, je travail sur Dev c++.J'ai déjà trouvé ici des sources sur ce sujet mais étant débutant je n'est pas bien compris ce qu'il fallait que je face
REsiZE Dialog [ par furiouspk ]
Bonjour!!!Je Cherche Le Moyen De LimiTer Le ResiZe D'une Dialog !!Si Vous Avez Une Tite Idée La Dessus??Merci Za Vous.................................
Child Dialog dans une app en MDI [ par LudovicJ ]
Bonjour à tous,Je suis en train de faire une app MDI qui contient plusieurs boites de dialogue.J'arrives à insérer mes boites de dialogue sans pb. Seu
directdraw et dialog box [ par mannix ]
Salut à tous, je débute en c++ et j'ai un peu de mal à comprendre tous les mecanismes qui permettent de manipuler facilement le fenetres. Je voudrais
InvalidateRect a fermeture d'une fenetre fille [ par AlexMAN ]
Bonsoir, Voila, j'ai une ptite kestion qui me turlupine. J'ai une dialog a partir de laquelle je gere l'affichage d'autres dialogs, mais a la fermetur
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|