Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

1

15.01.2016, 16:30

SFGUI ComboBox

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
»Volker_Neff« hat folgendes Bild angehängt:
  • SettingWindow.jpg

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

2

16.01.2016, 12:47

Scheint so als kann man die grösse des Dropdown Menüs nicht anpassen.

C-/C++-Quelltext

1
auto available_space = static_cast<float>( Renderer::Get().GetWindowSize().y ) - ( GetAbsolutePosition().y + item_size.y );

Berechnet den Platz welcher das Dropdown Menü einnehmen wird, also die Höhe des Fensters, minus die Position im Fenster, minus die Höhe eines Elements.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/