begin process at 2012 02 13 07:43:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

n curseurs dynamiques


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

n curseurs dynamiques

lundi 20 avril 2009 à 16:52:39 | n curseurs dynamiques

ringo44

Bonjour, voici mon problème je dispose de plusieurs sliders sur une même fenêtre disposés les uns en dessous des autres qui représentent des plages horaires. Lorsque l'on bouge l'un des curseurs d'un slider il est évident qu'il ne pourra pas être placé avant le curseur le précédant (car heure plus tardive). Je voulais savoir comment il était possible de gérer cela, de récupérer la valeur de chaque slider et savoir lequel a été bougé si jamais on se trompe en les bougeant ?Merci.
lundi 20 avril 2009 à 17:25:32 | Re : n curseurs dynamiques

buno

Administrateur CodeS-SourceS
Hello,
Tu peux faire une fonction de vérification que tu pourras lancer après chaque action utilisateur...
Le contenu de la fonctin est comme tu as dit:
- récupération des valeurs des sliders
- comparaison
- ajustement au besoin ou message d'erreur

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 21 avril 2009 à 08:56:03 | Re : n curseurs dynamiques

ringo44

Merci mais quelle fonction de vérification dois-je utiliser car je n'en ai pas la moindre idée et voici également mon code, merci.

// Dlg_Demo_Slider.cpp : implementation file
//

#include "stdafx.h"
#include "SliderMultiple.h"
#include "Dlg_Demo_Slider.h"

#include "Utilitaire.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlg_Demo_Slider dialog


CDlg_Demo_Slider::CDlg_Demo_Slider(CWnd* pParent /*=NULL*/)
 : CDialog(CDlg_Demo_Slider::IDD, pParent)
{
 //{{AFX_DATA_INIT(CDlg_Demo_Slider)
 //}}AFX_DATA_INIT
}


void CDlg_Demo_Slider::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CDlg_Demo_Slider)
 DDX_Control(pDX, IDOK, m_OK);
 //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlg_Demo_Slider, CDialog)
 //{{AFX_MSG_MAP(CDlg_Demo_Slider)
 ON_BN_CLICKED(IDC_BUTTON1, OnMoins)
 ON_BN_CLICKED(IDC_BUTTON2, OnPlus)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlg_Demo_Slider message handlers

BOOL CDlg_Demo_Slider::OnInitDialog()
{
CDialog::OnInitDialog();
CString strTemp;

if(nb_slider-7>0)
 largeur_dyna=nb_slider-7;       // Variable permettant de redimensionner la largueur de la plupart des contrôles
else
 largeur_dyna=0;
m_parametres= m_OK.GetParent();


nb_slider=6;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);

return TRUE;
}

/***************************************************************************
       Incrémentation
****************************************************************************/

void CDlg_Demo_Slider::OnMoins()
{
libere_slider();
nb_slider--;
if (nb_slider<1) nb_slider=1;

CString strTemp;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);
}

/***************************************************************************
       Décrémentation
****************************************************************************/

void CDlg_Demo_Slider::OnPlus()
{
libere_slider();
nb_slider++;
if (nb_slider>15) nb_slider=15;
CString strTemp;

strTemp.Format("%d", nb_slider);
SetDlgItemText(IDC_NBSLIDER,strTemp);

affich_slider();
UpdateData(FALSE);
}


/**************************************************************************
    Création et Initialisation des Sliders
***************************************************************************/

void CDlg_Demo_Slider::OnOK()
{
 // TODO: Add extra validation here
 
 CDialog::OnOK();
}


void CDlg_Demo_Slider::affich_slider()
{
CString strTemp;
int j;


if (!(pSliderCtrl=(CSliderCtrl**)malloc(sizeof(CSliderCtrl*)*nb_slider)))  // réservation mémoire   
 return;

for (j=0;j<nb_slider;j++)
 {
 RECT rect={20,20,20,20};
 pSliderCtrl[j]=new CSliderCtrl();

 DWORD dwStyle = TBS_NOTICKS | WS_CHILD | WS_VISIBLE | WM_HSCROLL ;

 (*pSliderCtrl[j]).Create(dwStyle|TBS_BOTTOM|TBS_HORZ ,rect, m_parametres,m_OK.GetDlgCtrlID()+(10000+j));
 (*pSliderCtrl[j]).SetWindowPos(&m_OK,120,10+(j*20),175,20,SWP_NOZORDER);
 //(*pSliderCtrl[j]).SetRange(1,20);
 (*pSliderCtrl[j]).SetPos(j);                              //retrait de chq slider pour les différencier
 
 }

}

/********************************************************************************
      Libération mémoire
********************************************************************************/

void CDlg_Demo_Slider::libere_slider()
{
CString strTemp;         //variable locale
int j;

for (j=0;j<nb_slider;j++)
 delete (pSliderCtrl[j]);      //pointeur de fenêtre
free (pSliderCtrl);
}

mardi 21 avril 2009 à 09:57:05 | Re : n curseurs dynamiques

buno

Administrateur CodeS-SourceS
Hello,
Il n'y a pas de fonctions de validation toute prête, cela dépend de ton besoin. C'est ce que j'ai expliqué au dessus:
- récupération des valeurs des sliders
- comparaison
- ajustement au besoin ou message d'erreur

Par exemple, si tu as 2 sliders, et que la valeur du 1er doit être inférieure à celle du 2e:

int iValeur1 = slider1.GetPos();
int iValeur2 = slider2.GetPos();
if (iValeur1 >= iValeur2)
{
  MessageBox(NULL,"le slider 2 doit être supérieur au slider 1","Erreur",MB_OK);
}

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 21 avril 2009 à 10:18:20 | Re : n curseurs dynamiques

ringo44

Ok mais le problème majeur c'est que j'ai des sliders crées dynamiquement comment reconnaître alors lequel l'utilisateur utilise ? Merci.
mardi 21 avril 2009 à 10:25:13 | Re : n curseurs dynamiques

buno

Administrateur CodeS-SourceS
A chaque fois que l'utilisateur utilise un slide, tu as une notification particulière (onChange() ou un truc du genre).


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 21 avril 2009 à 10:47:00 | Re : n curseurs dynamiques

ringo44

Merci mais comme je débute je ne trouve pas ce que vous me dîtes. Pouvez vous m'aider? Merci.
mardi 21 avril 2009 à 11:01:04 | Re : n curseurs dynamiques

buno

Administrateur CodeS-SourceS
As-tu vraiment besoin de savoir quel slider a été modifié? Tu peux faire la validation sur tous les sliders (si tu n'en as pas 50, bien sûr)

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 21 avril 2009 à 11:10:31 | Re : n curseurs dynamiques

ringo44

En fait les différents sliders correspondent à des plages horaires si un utilisateur bouge le curseur il change l'heure, il me faut récupérer cette heure sachant que par exemple le curseur 15 ne pourra pas être avant le curseur 1. Il y aura maximum 15 sliders. Voilà mon objectif principal mais comment faire ? Merci.
mardi 21 avril 2009 à 11:28:17 | Re : n curseurs dynamiques

buno

Administrateur CodeS-SourceS
Si les valeurs doivent être dans l'ordre croissant, et si tu as N sliders max, tu peux faire un truc comme ça:

void validation(void)
{
  for (int i=0; i<N && pSliderCtrl[i+1]!=NULL; i++)
  {
    if (pSliderCtrl[i]->GetPos() > pSliderCtrl[i+1]->GetPos())
    {
      char msg[128];
      sprintf(msg,"le slider %d a une valeur supérieur au slider %d",i, i+1);
      MessageBox(NULL,msg,"Erreur",MB_OK);
    }
  }
}

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

1 2 3 4 5 6 7

Cette discussion est classée dans : curseurs, dynamiques, slider


Répondre à ce message

Sujets en rapport avec ce message

urgent : pbl de curseurs dynamiques [ par jolinar ] c'est un de mes activités que je dois rendre et ça fait une semaine que je cherche l'erreur.C'est une base créée sous access2000, mais j'utilise chez DLL dynamiques [ par jfloviou ] Salut,je cherche a utiliser les DLL dynamique sous VC 6.0Je cree donc un projet win32 dynamic-link library, et je met mon code comme il faut dedans... Slider avec mfc [ par orj ] Comment fait on pour initialiser un slider avec mfc par exemple a 50...merci davance. Tableaux dynamiques... [ par neodelphi ] Muarf rebonjour tout le monde, je croit que j'ai pas fini de venir ici lol...Bon dévelopant un jeu et débutant le c++ j'aimerai en savoir un peu plus allocations dynamiques [ par djkill55 ] kelkun pourait m expliker rapidement a koi serve les allocation dynamike et k elle est la diference entre:callocmallocreallocj arrive pa a comprendre. Slider bar en API Win32 [ par sebseb42 ] voila, j'utilise un controle Slider dans une fenetre que je gere en API Win32 (pas de MFC)je voudrais definir sa position initial, pour placer ;e curs Calque pour application graphique [ par Grand_steak ] Bonjour, J'aimerai un petit coup de main pour développer mon appli. graphique.Je dessine une courbe contenant un nbre important de point.Jusque là, pa CONTROL SLIDER [ par xarier ] salut out le monde voila j'ai creé un fenetre dialog et j'inclue le control slider mais quand j'execute mon code le control n'est plus la je crois qu' Création de dialoque box avec slider [ par pac2 ] Salut!Je programme avec Visual C++ 6.0. J'ai créé une dialogue box dans laquelle j'ai placé des sliders (comme pour les contrôleurs de volume par exem WM_CTLCOLORSTATIC & slider control api win32 [ par youpiyoyo ] slt j'aurai besoin d'un coup de mainj'ai mis un slider control dans ma boite de dlg et vu ke j'utilise WM_CTLCOLORSTATIC pour changer la couleur d'un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,638 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales