как установить sizer в wxListCtrl - PullRequest
       4

как установить sizer в wxListCtrl

0 голосов
/ 19 февраля 2011

Я хочу создать фрейм, который содержит панель и в которой он имеет wxListCtrl, когда я минимизирую или максимизирую фрейм, Listctrl не зависит от Frame.so.Может кто-нибудь сказать мне, как я могу сделать мой кадр wxListCtrl зависимым.Я знаю, sizer будет работать здесь, я использовал его, я думаю, что использовал его неправильно.мой код:

Id_Search_Report::Id_Search_Report(const wxString &title)
      :wxFrame (NULL,1,title,wxDefaultPosition,wxSize(985,650),wxDEFAULT_FRAME_STYLE)
    {
/*
\---------------------------------------------------------------------------------
              INITIALIZAION OF COUNTER WITH 0
---------------------------------------------------------------------------------
*/
        this->counter=0;
/*
---------------------------------------------------------------------------------
              CALLING PANEL CONSTRUCTOR
---------------------------------------------------------------------------------
*/
        panel_first =new wxPanel(this, wxID_ANY, wxDefaultPosition,  wxDefaultSize, wxTAB_TRAVERSAL,wxT(""));
        wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
                panel_first->SetSizer(vbox);

/*
---------------------------------------------------------------------------------
              CALLING LIST CONTROL CONSTRUCTOR
---------------------------------------------------------------------------------
*/
        data_list_control= new wxListCtrl(panel_first, wxID_ANY, wxPoint(0,0), wxDefaultSize, wxLC_REPORT,wxDefaultValidator);
        vbox->Add(data_list_control,1,wxEXPAND);

/*
---------------------------------------------------------------------------------
               CALLING CLOSE BUTTON CONSTRUCTOR
---------------------------------------------------------------------------------
*/
        submit=new wxButton(panel_first,41,BUTTON_CLOSE ,wxPoint(880,620), wxDefaultSize);
        back =new wxButton(panel_first, 42,BUTTON_BACK ,wxPoint(880,630), wxDefaultSize);
/*
---------------------------------------------------------------------------------
               CREATING EVENT FOR CLOSE BUTTON CLICKED
---------------------------------------------------------------------------------
*/
        Connect(41, wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(Id_Search_Report::onbuttonclick));
/*
---------------------------------------------------------------------------------
               INITIALIZATION OF LIST CONTROL COLOUMN
               INSERT COLOUMN PARAMETERS ARE:-(ID, HEADER TEXT, ALLIGNMENT(2 FOR MIDDLE)
---------------------------------------------------------------------------------
*/
        data_list_control->InsertColumn(0,COLOUMN_1,2);
        //data_list_control->SetColumnWidth(0, 80);
        data_list_control->InsertColumn(1,COLOUMN_2,2);
        //data_list_control->SetColumnWidth(1, 80);
        data_list_control->InsertColumn(2,COLOUMN_3,2);
        //data_list_control->SetColumnWidth(2, 80);
        data_list_control->InsertColumn(3,COLOUMN_4,2);
        //data_list_control->SetColumnWidth(3, 80);
        data_list_control->InsertColumn(4,COLOUMN_5,2);
        //data_list_control->SetColumnWidth(4, 80);
        data_list_control->InsertColumn(5,COLOUMN_6,2);
        //data_list_control->SetColumnWidth(5, 80);
        data_list_control->InsertColumn(6,COLOUMN_7,2);
        //data_list_control->SetColumnWidth(6, 80);
        data_list_control->InsertColumn(7,COLOUMN_8,2);
        //data_list_control->SetColumnWidth(7, 80);
        data_list_control->InsertColumn(8,COLOUMN_9,2);
        //data_list_control->SetColumnWidth(8, 80);
        data_list_control->InsertColumn(9,COLOUMN_10,2);
        //data_list_control->SetColumnWidth(9, 80);
        data_list_control->InsertColumn(10,COLOUMN_11,2);
        //data_list_control->SetColumnWidth(10, 80);
        data_list_control->InsertColumn(11,COLOUMN_12,2);
        //data_list_control->SetColumnWidth(11, 80);
        //sizer


    }

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Насколько я понимаю вашу очередь, вы хотите изменить размер элементов управления, так как размер верхнего фрейма изменяется пользователем.

Для этого вам нужно реагировать на события sizer, сгенерированные, когдаФрам меняет размер.Как то так:

EVT_SIZE(Id_Search_Report::OnSize)

void MyFrame::OnSize(wxSizeEvent& )
{
  if( data_list_control) {
    data_list_control->SetSize(GetClientRect());
  }
}
0 голосов
/ 30 марта 2011

Мне кажется, что вы на самом деле не создали рамку. Хотя вы унаследовали класс wxFrame (), вы еще не создали фрейм. Я бы назвал

 wxFrame::Create( parent, id, caption, pos, size, style )

прежде чем что-либо еще, чтобы дать вам кадр первым. Тогда, возможно, вы захотите сослаться на этот кадр с чем-то вроде

Id_Search_Report *myFrame = this;

для ясности вместо использования этого указателя и поместите вашу панель поверх этого фрейма.

надеюсь, что поможет

...