2018年6月3日 星期日

BCB 筆記5 (TValueListEditor)

轉報告下一步就是自動產生報告
要自動產生報告,不外乎就是填表格。

你可以用 DrawGrid 或 StringGrid 來製作表格
但我認為 DrawGrid 和 StringGrid 都是完成度很高的元件
完成度很高代表若目的與設計方向不同,用起來就會綁手綁腳
要覆寫很多功能或者沒有與你目的相同的東西

我想當初 Grid 就是來完成表格,不是給你填,
所以在填值方面不會有太多方便的功能。
填表格通常會想要用下拉式表單 ( ComboBox )
網路上找想用 Grid 來做下拉式表單不外乎兩種
1. 創一個 ComboBox 但"位置"在 Grid 的該 Cell 上
2. 在該 Cell 真的創一個 ComboBox

但我兩種都不用
我這裡要介紹的元件是 TValueListEditor 來 Implement 我要給填的表格
TValueListEditor 只有兩個 Column 一個 Key 和 Value
所以要三欄的你只好乖乖用他給 Grid 元件,或者用CustomGrid 自己做一個 Grid

但 TValueListEditor 她有 EditStyle 可改,讓你的表格更靈活

void __fastcall MyValueListEditorClass::setDropList(TValueListEditor* List, int index, TStringList* li){
    List->ItemProps[index]->EditStyle = esPickList;
    List->ItemProps[index]->PickList = li;
    List->ItemProps[index]->ReadOnly = true;
}
我將 EditStyle 變成 esPickList 就等於是下拉式表格
表格內容就是 PickList (TStringList*)
我覺得比用 Grid 方便許多,結果如下
有些人(我)會想刪掉 TValueListEditor 上面的 FixRow
但是我找了很多方法都不行,最後只能開大絕

    MyValueListEditor->RowHeights[0] = 0;
輕鬆!!!

0 意見:

張貼留言

Popular Posts