Bonjour,
je suis entrain de faire une interface pour configurer mon programme!
Je doit donc configurer different path pour certains fichiers!

Voila comment j'ai commencé avec ca:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
wxFlexGridSizer *fgs = new wxFlexGridSizer(2,2, 3, 20);
...
wxStaticText *st1 = new wxStaticText(this, wxID_ANY, wxT("Events File"));
wxTxtCtrl *tc1 new wxTextCtrl(this,wxID_FILE1,fname),
wxButton *bu1 = new wxButton(this,wxID_OPEN,_T("Browse"));
Connect(wxID_OPEN,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(ConfigFrame::OnBrowse));
 
wxBoxSizer *hb1 = new wxBoxSizer(wxHORIZONTAL);
hb1->Add(tc1,1,wxEXPAND);
hb1->Add(bu1);
 
fgs->Add(st1);
fgs->Add(hb1,1,wxEXPAND);
fgs->AddGrowableCol(1);
 
vbox->Add(fgs,0,wxEXPAND | wxALL,10 )
Ca marche tres bien et ca rend tres jolie
Le problème c'est que je doit répéter ce code au moins 10x donc je crée un objet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
class TextCtrlPath: public wxControl
{
public:
	//constructor & destructor
	TextCtrlPath(wxWindow* parent,wxString fpath, wxString fname);
	virtual ~TextCtrlPath();
 
	//functions
	void OnBrowse(wxCommandEvent& event);
private:
	wxString fpath;
	wxString fname;
	wxButton *browse;
	wxTextCtrl *txtctrl;
	wxBoxSizer *hbox;
};
 
TextCtrlPath::TextCtrlPath(wxWindow* parent, wxString fpath, wxString fname) :     wxControl(parent,wxID_ANY),fpath(fpath), fname(fname) {
 
	txtctrl= new wxTextCtrl(this,wxID_FILE1,fname),
	browse = new wxButton(this,wxID_OPEN,_T("Browse"));
	Connect(wxID_OPEN,wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(TextCtrlPath::OnBrowse));
 
	hbox = new wxBoxSizer(wxHORIZONTAL);
	hbox->Add(txtctrl,1,wxEXPAND);
	hbox->Add(browse);
	this->SetSizer(hbox);
	}
Et j'appel dans mon ConfigFrame:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
wxFlexGridSizer *fgs = new wxFlexGridSizer(2,2, 3, 20);
...
wxStaticText *st1 = new wxStaticText(this, wxID_ANY, wxT("Events File"));
TextCtrlPath *tp1 = new TextCtrlPath(this,_T("C:\\"),_T("events.log"));
 
fgs->Add(st1);
fgs->Add(tp1,1,wxEXPAND);
 
fgs->AddGrowableCol(1);
vbox->Add(fgs,0,wxEXPAND | wxALL,10 );

Cependant ça me donne un truc tout zarbi (le wxButton est caché sous le wxTextCtrl, et j'ai un énorme emplacement vide.)

PS: Pas facile ces wxWidget, surtout que ça manque de doc et d'exemples!!! Qqun connaitrait pas un bon site avec des images pour chaque classes (meme en anglais) ??