Code: Select all
wxStaticBoxSizer* szrFileBrowserAll;
size_t FileCount;
do {
// Posso aggiornare il browser
Freeze();
// Cancello la roba pre-esistente
if (m_ScrollFiles) {
m_ScrollFiles->Destroy();
}
m_ScrollFiles = nullptr;
ButtonSelected = nullptr;
// Creo la nuova finestra di Scroll
szrFileBrowserAll = (wxStaticBoxSizer*)m_pageFile->GetSizer();
m_ScrollFiles = new wxScrolledWindow(m_pageFile, wxID_ANY, wxDefaultPosition, wxSize(-1,-1), wxVSCROLL);
m_ScrollFiles-> SetBackgroundColour( m_pageFile->GetBackgroundColour() );
m_ScrollFiles-> SetForegroundColour( m_pageFile->GetForegroundColour() );
m_ScrollFiles-> SetFont(m_pageFile->GetFont());
m_ScrollFiles-> ShowScrollbars(wxSHOW_SB_NEVER,wxSHOW_SB_NEVER);
m_ScrollFiles-> SetScrollRate(0, 5);
// La aggiungo al sizer della pagina
szrFileBrowserAll-> Add(m_ScrollFiles, 1, wxLEFT|wxEXPAND, 5);
// Ora creo la sua griglia
wxFlexGridSizer* szr_ScrollFiles = new wxFlexGridSizer(0, 2, 5, 3);
szr_ScrollFiles-> SetFlexibleDirection( wxHORIZONTAL ); //wxBOTH );
szr_ScrollFiles-> SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
szr_ScrollFiles-> AddGrowableCol(1);
m_ScrollFiles-> SetSizer(szr_ScrollFiles);
// Conto i files presenti nella cartella
wxArrayString FileList;
wxStaticText* m_lFileCount;
wxString str;
FileCount = wxDir::GetAllFiles(
*DirName,
&FileList,
FB_Filter,
wxDIR_FILES
);
if (FileCount<1) {
// Nessun file trovato: avviso ed esco
str.Printf("No files available in\n\%s",DirName->c_str());
m_lFileCount = new wxStaticText(m_ScrollFiles, wxID_ANY, str);
m_lFileCount-> SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
//m_lFileCount-> SetMinSize(wxSize(60,-1));
szr_ScrollFiles-> AddGrowableCol(0);
szr_ScrollFiles-> Add(m_lFileCount, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
break;
}
// Giro tutti i files e creo la relativa etichetta e pulsante
wxGradientSwitch* m_bFileButton;
wxFont ButtonFont(
12 ,
wxFONTFAMILY_MODERN ,
wxFONTSTYLE_NORMAL ,
wxFONTWEIGHT_BOLD ,
false ,
wxT("Liberation Mono")
);
for (size_t i=0; i<FileCount; i++) {
// Creo l'etichetta col contatore dei files
str.Printf("%d/%d",i+1,FileCount);
m_lFileCount = new wxStaticText(
m_ScrollFiles, wxID_ANY, str
, wxDefaultPosition, wxSize(-1,-1), wxST_NO_AUTORESIZE|wxALIGN_RIGHT
);
m_lFileCount-> SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
m_lFileCount-> SetMinSize(wxSize(60,-1));
szr_ScrollFiles-> Add(m_lFileCount, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
// Creo il pulsante di selezione del file
str = FileList[i].substr(DirName->Length()+1,1000);
m_bFileButton = new wxGradientSwitch(
m_ScrollFiles,
wxID_BCONFLOADUSB,
str,
wxDefaultPosition,
wxSize(-1,50),
wxBU_EXACTFIT
);
m_bFileButton-> SetFont(ButtonFont);
m_bFileButton-> SetMinSize(wxSize(-1,50));
m_bFileButton-> SetColours_Normal (ButtonNormal );
m_bFileButton-> SetColours_Down (ButtonDown );
m_bFileButton-> SetValue(false);
m_bFileButton-> SetGroupIndex(-1);
m_bFileButton-> Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GUI_MainForm::OnBFileSelected, this);
szr_ScrollFiles-> Add(m_bFileButton, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
//szr_ScrollFiles-> Add(m_bFileButton, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5);
}
} while (false);
// filterbox->SetAutoLayout(true);
szrFileBrowserAll->Layout();
Thaw();
With wxWidgets 3.0.4, it shows like this.
With wxWidgets 3.1.2, instead it shows like this (notice the last visible button). What should i do to have the buttons correctly placed and showed like in the first picture?