wxControl contenant un Button et un TxtControl
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:
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:
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:
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) ??