Bonsoir a tous.
J'ai inséré 8 combo box dans mon programme, et je voudrait faire plusieur choses que je n'arrive pas a faire :
_changer la caractere des items dans els combobox(notament plus gros//lisible...)
_et surtout comment traiter les informations.Il parrait que c'est getSelected et getItem mais je sais pas comment les utiliser, comment ca fonctionne.
_Et aussi a quoi correspond ca :
"
swprintf(message, 100, L"50", 224, 232);
boxx4->addItem(message);
"
==> , 224, 232); Ca ca correspond a quoi?
-et enfin, j'ai créé un bouton, et lorsq'on appuie dessus une ligne de code s'ajoute a un fichier.Or en cliquand une fois sur le bouton, la ligne de code senregistre 20 ou 30 fois.Etplus j'appuie, plus ca s'enregistre...c'est facheu, et meme une essayant de mettre une variable qui augmente quand on clique, qui empeche le re-enregistrement...(dans le code ci-dessous le bloquage n'y est pas mais ca change rein de toute facon...)
if (bouton->isPressed() == true )
{
IGUIComboBox *item = env->getSelected (box);
IGUIComboBox *result = env->getItem(s32 item);
enregistrement();
cout << result << endl;
}
Merci a tous
Dernière modification par skapin (23-09-2007 14:23:09)
Hors ligne
Pour utiliser les combobox je vois pas trop le problème ? tu fais combo->addItem("truc"); ca te renvoie l'id de celui çi, et après tu peux récupérer le texte à l'id correspondant en faisant combo->getID(id). le getSelected renvoie l'id de l'item sélectionné.
Pour ton problème d'enregistrement, tu peux créer une variable bool, et faire un test avant l'enregistrement pour voir si elle est a true. Tu la remet à zéro si bouton->isPressed == false et c'est bon.
Hors ligne
Pour le bouton j'ai deja fait avec un bool et ca bug quand meme...
Pour la comboBox, je vois pas comment récupéré la variable choisi par l'utilisateur, car je peut pas prevoir l'id car il varie.En faite je sais pas ce que je dois ecrire pour Savoir Et traiter l'option choisie...
Sinon ta pas un exemple que je voie commentca fonctionne?
Dernière modification par skapin (23-09-2007 19:21:27)
Hors ligne
#include <iostream> #include <irr/irrlicht.h> #include <fstream> #include <string> //#include <stdlib.h> //#include <stdio.h> //#include <math.h> long convertion(long* h , long* m); long dif(long* a , long* b); long difference(long* a , long* b, long* c , long* d, long* e , long* f, long* g , long* h ); long conv_heur(long* a); long enregistrement(); using namespace irr; using namespace gui; using namespace std; long enregistrement() { fstream fichier; fichier.open("compta.html", ios::in|ios::out|ios::ate); fichier.seekp(0, ios::beg); if(fichier) { string contenu; getline(fichier, contenu); char integr[] = "<tr><td></td><td></td><td>Texte</td><td></td><td></td><td></td></tr>\n</table></body></html>"; fichier.seekg(0, ios::beg); fichier << contenu << integr << endl; } else { cout << "Impossible d'ouvrir le fichier !" << endl; return 1; } fichier.close(); } long convertion(long* h , long* m) { return ( *h * 60 ) + ( *m ); } long dif(long* a , long* b) { return (( *a ) - ( *b )); } long difference(long* a , long* b, long* c , long* d, long* e , long* f, long* g , long* h ) { long somme = 0; somme = ((((*c * 60 ) + ( *d )) - ((*a * 60 ) + ( *b ))) + (((*g * 60 ) + ( *h )) - ((*e * 60 ) + ( *f )))); return somme; } double conv_heur(double* a) { double dessus = 0, heur = 0, minute = 0; heur = *a / 60; dessus = ceil(heur); minute = heur - (dessus); return (heur, minute); } int main(void) { FILE* fichier = NULL; IrrlichtDevice *device = createDevice (video::EDT_OPENGL, core::dimension2d<s32>(800,400),32,false,true,false,0); video::IVideoDriver* driver = device->getVideoDriver (); scene::ISceneManager *scenegraph = device->getSceneManager (); IGUIEnvironment *env = device->getGUIEnvironment(); device->setWindowCaption(L"Comptabilisation Des Horaires"); wchar_t message[100]; swprintf(message, 100, L"Irrlicht c'est plut%ct :", 244); IGUIComboBox *box = env->addComboBox(core::rect<s32>(20,80,80,105)); box->addItem(L"---"); swprintf(message, 100, L"06", 233); box->addItem(message); swprintf(message, 100, L"07", 233); box->addItem(message); swprintf(message, 100, L"08", 233); box->addItem(message); swprintf(message, 100, L"09", 224, 232); box->addItem(message); swprintf(message, 100, L"10", 233); box->addItem(message); swprintf(message, 100, L"11", 224, 232); box->addItem(message); swprintf(message, 100, L"12", 224, 232); box->addItem(message); swprintf(message, 100, L"13", 224, 232); box->addItem(message); swprintf(message, 100, L"14", 224, 232); box->addItem(message); swprintf(message, 100, L"15", 224, 232); box->addItem(message); swprintf(message, 100, L"16", 224, 232); box->addItem(message); swprintf(message, 100, L"17", 224, 232); box->addItem(message); swprintf(message, 100, L"18", 224, 232); box->addItem(message); swprintf(message, 100, L"19", 224, 232); box->addItem(message); swprintf(message, 100, L"20", 224, 232); box->addItem(message); box->addItem(L"21"); IGUIComboBox *boxx = env->addComboBox(core::rect<s32>(100,80,160,105)); boxx->addItem(L"---"); swprintf(message, 100, L"00", 233); boxx->addItem(message); swprintf(message, 100, L"05", 233); boxx->addItem(message); swprintf(message, 100, L"10", 233); boxx->addItem(message); swprintf(message, 100, L"15", 224, 232); boxx->addItem(message); swprintf(message, 100, L"20", 233); boxx->addItem(message); swprintf(message, 100, L"25", 224, 232); boxx->addItem(message); swprintf(message, 100, L"30", 224, 232); boxx->addItem(message); swprintf(message, 100, L"35", 224, 232); boxx->addItem(message); swprintf(message, 100, L"40", 224, 232); boxx->addItem(message); swprintf(message, 100, L"45", 224, 232); boxx->addItem(message); swprintf(message, 100, L"50", 224, 232); boxx->addItem(message); boxx->addItem(L"55"); //------------------------------------------------------------- IGUIComboBox *box2 = env->addComboBox(core::rect<s32>(190,80,250,105)); box2->addItem(L"---"); swprintf(message, 100, L"06", 233); box2->addItem(message); swprintf(message, 100, L"07", 233); box2->addItem(message); swprintf(message, 100, L"08", 233); box2->addItem(message); swprintf(message, 100, L"09", 224, 232); box2->addItem(message); swprintf(message, 100, L"10", 233); box2->addItem(message); swprintf(message, 100, L"11", 224, 232); box2->addItem(message); swprintf(message, 100, L"12", 224, 232); box2->addItem(message); swprintf(message, 100, L"13", 224, 232); box2->addItem(message); swprintf(message, 100, L"14", 224, 232); box2->addItem(message); swprintf(message, 100, L"15", 224, 232); box2->addItem(message); swprintf(message, 100, L"16", 224, 232); box2->addItem(message); swprintf(message, 100, L"17", 224, 232); box2->addItem(message); swprintf(message, 100, L"18", 224, 232); box2->addItem(message); swprintf(message, 100, L"19", 224, 232); box2->addItem(message); swprintf(message, 100, L"20", 224, 232); box2->addItem(message); box2->addItem(L"21"); IGUIComboBox *boxx2 = env->addComboBox(core::rect<s32>(270,80,330,105)); boxx2->addItem(L"---"); swprintf(message, 100, L"00", 233); boxx2->addItem(message); swprintf(message, 100, L"05", 233); boxx2->addItem(message); swprintf(message, 100, L"10", 233); boxx2->addItem(message); swprintf(message, 100, L"15", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"20", 233); boxx2->addItem(message); swprintf(message, 100, L"25", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"30", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"35", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"40", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"45", 224, 232); boxx2->addItem(message); swprintf(message, 100, L"50", 224, 232); boxx2->addItem(message); boxx2->addItem(L"55"); //-------------------------------------- IGUIComboBox *box3 = env->addComboBox(core::rect<s32>(360,80,420,105)); box3->addItem(L"---"); swprintf(message, 100, L"06", 233); box3->addItem(message); swprintf(message, 100, L"07", 233); box3->addItem(message); swprintf(message, 100, L"08", 233); box3->addItem(message); swprintf(message, 100, L"09", 224, 232); box3->addItem(message); swprintf(message, 100, L"10", 233); box3->addItem(message); swprintf(message, 100, L"11", 224, 232); box3->addItem(message); swprintf(message, 100, L"12", 224, 232); box3->addItem(message); swprintf(message, 100, L"13", 224, 232); box3->addItem(message); swprintf(message, 100, L"14", 224, 232); box3->addItem(message); swprintf(message, 100, L"15", 224, 232); box3->addItem(message); swprintf(message, 100, L"16", 224, 232); box3->addItem(message); swprintf(message, 100, L"17", 224, 232); box3->addItem(message); swprintf(message, 100, L"18", 224, 232); box3->addItem(message); swprintf(message, 100, L"19", 224, 232); box3->addItem(message); swprintf(message, 100, L"20", 224, 232); box3->addItem(message); box3->addItem(L"21"); IGUIComboBox *boxx3 = env->addComboBox(core::rect<s32>(440,80,500,105)); boxx3->addItem(L"---"); swprintf(message, 100, L"00", 233); boxx3->addItem(message); swprintf(message, 100, L"05", 233); boxx3->addItem(message); swprintf(message, 100, L"10", 233); boxx3->addItem(message); swprintf(message, 100, L"15", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"20", 233); boxx3->addItem(message); swprintf(message, 100, L"25", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"30", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"35", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"40", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"45", 224, 232); boxx3->addItem(message); swprintf(message, 100, L"50", 224, 232); boxx3->addItem(message); boxx3->addItem(L"55"); //-------------------------------------- IGUIComboBox *box4 = env->addComboBox(core::rect<s32>(530,80,590,105)); box4->addItem(L"---"); swprintf(message, 100, L"06", 233); box4->addItem(message); swprintf(message, 100, L"07", 233); box4->addItem(message); swprintf(message, 100, L"08", 233); box4->addItem(message); swprintf(message, 100, L"09", 224, 232); box4->addItem(message); swprintf(message, 100, L"10", 233); box4->addItem(message); swprintf(message, 100, L"11", 224, 232); box4->addItem(message); swprintf(message, 100, L"12", 224, 232); box4->addItem(message); swprintf(message, 100, L"13", 224, 232); box4->addItem(message); swprintf(message, 100, L"14", 224, 232); box4->addItem(message); swprintf(message, 100, L"15", 224, 232); box4->addItem(message); swprintf(message, 100, L"16", 224, 232); box4->addItem(message); swprintf(message, 100, L"17", 224, 232); box4->addItem(message); swprintf(message, 100, L"18", 224, 232); box4->addItem(message); swprintf(message, 100, L"19", 224, 232); box4->addItem(message); swprintf(message, 100, L"20", 224, 232); box4->addItem(message); box4->addItem(L"21"); IGUIComboBox *boxx4 = env->addComboBox(core::rect<s32>(610,80,670,105)); boxx4->addItem(L"---"); swprintf(message, 100, L"00", 233); boxx4->addItem(message); swprintf(message, 100, L"05", 233); boxx4->addItem(message); swprintf(message, 100, L"10", 233); boxx4->addItem(message); swprintf(message, 100, L"15", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"20", 233); boxx4->addItem(message); swprintf(message, 100, L"25", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"30", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"35", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"40", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"45", 224, 232); boxx4->addItem(message); swprintf(message, 100, L"50", 224, 232); boxx4->addItem(message); boxx4->addItem(L"55"); IGUIButton *bouton = env->addButton(core::rect<s32>(600,300,700,330), 0, -1, L"Valider"); IGUIStaticText *texte = env->addStaticText(L"Comptabilisateur Des Horaires", core::rect<s32>(250,10,460,40), true, true, 0, -1, true); IGUIStaticText *arrivee = env->addStaticText(L"Arrivee", core::rect<s32>(20,50,160,75), true, true, 0, -1, true); IGUIStaticText *depart1 = env->addStaticText(L"Depart n1", core::rect<s32>(190,50,330,75), true, true, 0, -1, true); IGUIStaticText *retour = env->addStaticText(L"Retour", core::rect<s32>(360,50,500,75), true, true, 0, -1, true); IGUIStaticText *depart2 = env->addStaticText(L"Depart", core::rect<s32>(530,50,670,75), true, true, 0, -1, true); IGUIFont *font = env->getFont("fontLucida.png"); texte->setOverrideFont(font); arrivee->setOverrideFont(font); depart1->setOverrideFont(font); depart2->setOverrideFont(font); bouton->setOverrideFont(font); retour->setOverrideFont(font); while (device->run ()) { driver->beginScene (true, true, video::SColor (150,0,0,0)); scenegraph->drawAll (); env->drawAll (); driver->endScene (); if (bouton->isPressed() == true ) { enregistrement(); cout << result << endl; } } //On libère la mémoire en détruisant le device device->drop (); return 0; }
Hors ligne
bool done; if (bouton->isPressed()) if (done == false) { done = true; enregistrement(); } } else if (done) done = false;
Les id ne changent pas, et tu les récupère via :
int monID = comboBox->addItem("Texte correspondant");
A part ça... Me dis pas que tu fais une appli uniquement gui avec irrlicht?
Hors ligne
ba si pourquoi?
Ya autre chose de plus approprier ?
Merci pour les conseils!Le system pour la sauvegarde fonctionne niquel.
Mais pour les comboBox j'ai esseyé et j'y arrive toujours pas/comprendre....
En faite je veut, prendre la valeur choisi par l'utilisateur dans chaque menu deroulant, et l'envoyer dans uen fonction qui va transforrmer l'info et la noter dans mon fichier a enregistrer.
Et avec ce que tu m'a passer j'y arrive pas Pourrais tu etre plus explicite ?
Merciii encore
Dernière modification par skapin (24-09-2007 18:41:48)
Hors ligne
Tu peux tout simplement récupérer le texte sélectionné dans la combobox avec MaCombo->getText() y'a rien de bien complexe .
Ensuite bein l'explication du bouton->isPressed() est simple, ton programme exécute une boucle, et tu test à chaque fois si isPressed (est appuyé)... c'est sûr que tu vas pas clicker en 1/10eme de secondes et relaché...Donc ça écrit X nombres de fois que ta boucle aurra eu le temps de s'exécuter avant que tu relaches le bouton de ta souris.
Suffit juste de coder une mini méthode comme Izguit te l'a proposé, après si tu comprends pas ce que tu codes ça t'aidera pas, il te faut chercher le pourquoi du coment et quand t'aurra compris, ton code deviendra logique.
Hors ligne
skapin :
ba si pourquoi?
Ya autre chose de plus approprier ?
Euh d'après le code qu'on voit t'es en train de coder un gestionnaire d'heures de boulot. Et irrlicht c'est un moteur 3D, donc c'est loin d'être le plus approprié pour faire ce type d'applis : tu va te faire chier, ca va bouffer toutes les ressources cpu de la machine, et ca va être moche
Après tu nous a peut-être caché la partie 3d mais visiblement il y en a pas...
Hors ligne
non mais son code j'ai compris, c'est quand meme basique, cetait pour le combo, mais c'est bon avec ta methode ca ira je pense.
Et oui en effet ya pas de moteur 3D du tout dans mon programme.Mais bon je connaissait que irrlicht pour pouvoir faire mes menus déroulant...Mais si ya une autre librairie plus approprié je veux bien ca serai pas un mal du tout!
(et aussi comment grosir le texte dans la liste déroulante :p)
Merci a tout deux c'est vrement simpa
(jecris quoi pour gettext()...
const wchar_t* moche;
moche = box->getText();
enregistrement(moche);
j'ai du mal a saisir pour enregistrer dans une variable et autre..
Dernière modification par skapin (24-09-2007 20:18:47)
Hors ligne
const wchar_t* moche; moche = box->getItem(box->getSelected()); enregistrement(moche);
Mais franchement change de langage/lib : irrlicht est pas DU TOUT adapté, tu te fais chier. En C++ il y a QT et gtk qui sont pas mal et cross platform, sinon fais le en api win32 mais c'est ultra merdique. Mais bon apparemment ca fait pas très longtemps que tu codes (je me trompes peut-être, ne vois rien d'offensant là-dedans), tu devrais peut être prendre des solutions un peu plus simples style VB.net (qui serait BEAUCOUP plus adapté)
Hors ligne
ué je suis en train de voir avec gtk.
Et oui en c++ ca fait que tres peu de temps, mais bon apres je connais phph/mysql meme si ca n'a que peu de point commun.
Merci beaucoups en tout cas^^
Hors ligne
je risque de mettre longtemp a refaire tout mon code, alors que pour finiril me manque seulement a traiter le texte ca serait simpa de me dire comme s'ecrit exactement la variable car jarrive pas a la faire marcher /
Hors ligne
skapin :
ca serait simpa de me dire comme s'ecrit exactement la variable car jarrive pas a la faire marcher /
Quelle variable ?
Sinon pour grossir le texte tu es obligé de charger une autre police/texture. Tu ne peut pas changer dynamiquement la taille car les polices sont chargées à partir de bitmap font (donc des textures).
Au pire tu as un outil livré avec le SDK pour créer des bitmap font à partir de fichiers .ttf
Hors ligne
ué je sais je l'ai fait pour mon bonton texte static, mais quand je veut lappliquer a la combobox ca plante a la compil...
enregsitrer le texte choisi par l'utilisateur dans la combobox, dans une variable qui permettra de traiter l'info saisi
Hors ligne
stringc textSelect= Combo->getText();
et après te suffira de convertir selon ta méthode d'écriture...
textSelect.c_str() peut être ?
Hors ligne
Pour :
if (done == false)
{
done = true;
stringc textSelect = box->getText();
}
}
il me dit
main.cpp:609: error: `stringc' undeclared (first use this function)
main.cpp:609: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:609: error: expected `;' before "textSelect"
Process terminated with status 1 (0 minutes, 1 seconds)
Dernière modification par skapin (25-09-2007 19:12:08)
Hors ligne
remplace stringc par wchar_t * ou std::string
Mais là les erreurs sont vraiment basiques, tu risques d'en rencontrer plein comme ça... Je te conseille vraiment de commencer par les bases du C++ et de te faire la main, et après tu pourras travailler avec des libs tierces. Parce que là tu risque de pas avancer très vite
Hors ligne
ué mais ca je l'ai fait mais ca me retourne
0xb6e2158 ca comme texte...
ou
0xb6e2168 etc.. ca depent du choix quoi^^
(pour
const wchar_t* textSelect = box->getText();
puis cout pour voir.
Hors ligne
euh Copland t'es sûr de ton getText?
C'est une méthode générique des élément de gui et dans le cas des combo il y a pas une seule caption mais plusieurs donc ?
essaie ça : wchar_t* string = box->getItem(box->getSelected());
Hors ligne