Moin ich melde mich mal wieder mit meinen SFGUI Problemen.
Und zwar geht es huete darum das ich eine Möglichkeit suche eine ComboBox, eine Drop-Down-List, in ihrer größe zu begrenzen. Es geht dabei darum das ich ein Auswahlmenü habe in einem Extra SFGUI-Fenster. Dort gibt es auch eine ComboBox mit 36 Elementen. Leider ist weder mein Fenster noch mein Bildschirm groß genung alle Elemente an zu zeugen. Deswegen sollte eigentlich ein Scrollbalken dazu helfen durch die Auswahl zu navigieren. Leider ist dieses Fenster mit der Auswahl der Elemte immer noch viel zu groß. Selbst wenn ich nach ganz unten scrolle bleiben mir immer noch Elemente verdeckt.
Ich habe diesen Code um Git-Hub gefunden und frage mich was der genau macht, bzw warum man ihn so eingebaut hat.
HIer wird doch davon ausgegangen das das Element so angelegt ist das es ganz oben am Bildschirmrand ist oder?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
omboBox::IndexType ComboBox::GetDisplayedItemCount() const {
float border_width( Context::Get().GetEngine().GetProperty<float>( "BorderWidth", shared_from_this() ) );
float padding( Context::Get().GetEngine().GetProperty<float>( "ItemPadding", shared_from_this() ) );
const std::string& font_name( Context::Get().GetEngine().GetProperty<std::string>( "FontName", shared_from_this() ) );
unsigned int font_size( Context::Get().GetEngine().GetProperty<unsigned int>( "FontSize", shared_from_this() ) );
const sf::Font& font( *Context::Get().GetEngine().GetResourceManager().GetFont( font_name ) );
const float line_height( Context::Get().GetEngine().GetFontLineHeight( font, font_size ) );
const sf::Vector2f item_size(
GetAllocation().width - 2 * border_width,
line_height + 2 * padding
);
auto available_space = static_cast<float>( Renderer::Get().GetWindowSize().y ) - ( GetAbsolutePosition().y + item_size.y );
auto num_displayed_entries = static_cast<IndexType>( available_space / item_size.y );
num_displayed_entries = ( GetItemCount() < num_displayed_entries ? GetItemCount() : num_displayed_entries );
return num_displayed_entries;
}
|
Bzw was mich eigentlich interesiert ist ob es eine Möglicheit gibt die Anzahl auf einen Selbst gewählent Wert zu minimieren.
Ich hoffe mein Anliegen ist halbwegs rüber gekommen
LG
Volker