<table>-подобный элемент пользовательского интерфейса для wxHaskell/wxWidgets
Я работаю над написанием графического интерфейса на Haskell (и Ur/Web, но это уже другая история), и у меня есть несколько веток разработки, использующих разные библиотеки и подходы, над которыми я работаю одновременно. При попытке перенести часть кода, который у меня был, из библиотек пользовательского интерфейса, поддерживаемых браузером, с элементами HTML (если быть точным, из tripenny-gui) в собственные апплеты с графическим интерфейсом WX, используя графический интерфейс WX (wxHaskell, реактивный-банан), я столкнулся с некоторыми проблемами при определении как перенести какой-то код, который у меня был, который был основан на построении <table>
элемент эквивалентной конструкции wxWidgets. Мне показалось, что не было простого способа реализовать такую вещь самостоятельно, и не было собственного эквивалента. Я ищу предложения по реализации, указатели на существующие реализации, подходящие альтернативы и так далее. Я могу предоставить более глубокую специфику дизайна, который я ищу, если это потребуется.
HTML-таблица просто используется для выравнивания и отображения данных, где одна ячейка в каждой строке является реактивным элементом управления, а количество строк, отображаемых в любой момент времени, также может изменяться реактивно.
1 ответ
HTML-таблица может содержать практически все в своих ячейках, поэтому она слишком богата, чтобы быть представленной любым собственным элементом управления. Очень трудно дать рекомендацию, не зная, что именно у вас есть в таблице, но возможны следующие варианты:
wxHtmlWindow
: это может быть использовано для повторного использования вашего HTML при условии, что он достаточно прост (в основном HTML4), и вы можете встраивать нативные элементы управления в него, если это необходимо.wxGrid
Это самый гибкий виджет, но он не является родным.wxDataViewCtrl
: это встроенный элемент управления под GTK и OS X (но не MSW, где вам нужно использоватьwxListCtrl
для 100% нативного подхода), но он довольно ограничен по сравнению с любым из вышеуказанных решений.