ドキュメント

View Categories

TableLockedHeaderComponent

3 min read

TableLockedHeaderComponentはヘッダースクロールを無効にしたコンポーネントです。

table_locaked_header_component.hpp

class TableLockedHeaderComponent : public Component
{
public:
  TableLockedHeaderComponent
  (
    MOD mod,
    unsigned int th_height,
    std::vector<unsigned int> td_width_vec,
    std::function<std::list<TdComponent>()> table_header_generator
  );

  ~TableLockedHeaderComponent() = default;

  TableLockedHeaderComponent(
    TableLockedHeaderComponent const& other);
  TableLockedHeaderComponent& operator=(
    TableLockedHeaderComponent const& other);

  void configure();
  
private:
  std::unique_ptr<ScrollDisableComponent> disable;
  std::unique_ptr<TableComponent> header;
};


引数にヘッダーの高さ、列幅、TdComponentのリストを指定します。ScrollDisableComponentでScrollComponentに配置してもy軸方向を固定します。

table_locked_header_component.cpp

TableLockedHeaderComponent::TableLockedHeaderComponent
(
  MOD mod,
  unsigned int th_height,
  std::vector<unsigned int> td_width_vec,
  std::function<std::list<TdComponent>()> table_header_generator
) : Component(mod)
{
  disable = std::make_unique<ScrollDisableComponent>(
      mod
    , false
    , true );

  std::list<TrComponent> tr = std::list<TrComponent>{};
  tr.push_back(TrComponent{mod, table_header_generator() });

  header = std::make_unique<TableComponent>(
      mod
    , th_height
    , td_width_vec
    , tr );
}


TableHeaderGeneratorは文字列のリストを渡してTdComponentのリストを生成するオブジェクト関数です。

table_header_generator.hpp

class TableHeaderGenerator
{
public:
  using MOD = spa::gui::MOD;

public:
  TableHeaderGenerator
  (
    MOD mod,
    unsigned int tr_height,
    std::vector<unsigned int> td_width_vec,
    unsigned char table_bg_color_R,
    unsigned char table_bg_color_G,
    unsigned char table_bg_color_B,
    unsigned char table_bg_color_A,
    unsigned int table_text_c_size,
    unsigned char table_text_color_R,
    unsigned char table_text_color_G,
    unsigned char table_text_color_B,
    std::list<std::string> headers
  );

  std::list<TdComponent> operator()();

private:
  MOD mod;
  unsigned tr_height;
  std::vector<unsigned int> td_width_vec;
  unsigned char table_bg_color_R;
  unsigned char table_bg_color_G;
  unsigned char table_bg_color_B;
  unsigned char table_bg_color_A;
  unsigned int table_text_c_size;
  unsigned char table_text_color_R;
  unsigned char table_text_color_G;
  unsigned char table_text_color_B;
  std::list<std::string> headers;
};


ヘッダーの高さ、列幅、背景色、テキストサイズ、テキストカラーを指定します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です