0

これが私のレイアウトです:

  • グリッド(比率1)と[OK]/[キャンセル]ボタンバーを含むサイザーがあります

  • すべてはwxDialogにあります

ここにあります:

|||||||||||||||
|             |
|    GRID     |
|             |
|             |
|             |
|||||||||||||||
| OK  CANCEL  |
|||||||||||||||

問題は、グリッドに含まれる行が多すぎて画面がオーバーフローするため、最終的にダイアログの上部が表示されないことです。ダイアログでFit()を呼び出すときに、その高さを制限する方法はありますか?

私はこのようなものを試しました:しかしSetSizeHints(-1,-1,-1,500);SetMaxSize(500,500)それはうまくいきませんでした。

また、私はそれを試みました:this->SetSize(this->GetSize().GetX(), 500);、しかし、垂直スクロールバーがグリッドに表示されるため、十分な幅がなく、水平スクロールバーが表示されます。

編集

コンストラクターで私はwxGrid(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize)

4

1 に答える 1

2

これを処理する最も簡単な方法は、固定サイズのグリッドを使用することです。収まりきらない行がある場合は、スクロール バーが表示されます。コンストラクターで必要なサイズを設定します。

new wxGrid( this, IDC_grid, wxPoint(-1,-1),wxSize(igridxsize,igridysize));

ユーザーがアプリケーション ウィンドウのサイズを変更するときなど、グリッドのサイズを調整したい場合は、もう少し複雑です。ウィンドウ サイズ イベントを処理し、必要に応じてグリッド サイズを変更する必要があります。

これらの行に沿ったもの:

myDialog::OnSize(wxSizeEvent& event);
{
wxSize dialogSize = event.GetSize();
myGrid->OnSize( wxSizeEvent(
     dialogSize.GetWidth() * 0.9, dialogSize.GetHeight() * 0.7 ));
}
于 2011-05-26T13:15:08.137 に答える