Firemonkey: użycie TGrid w Embarcadero C ++ Builder XE3
Próbuję zbudować narzędzie, które odczytuje dane z bazy danych i wyświetla je jako tabelę za pomocą TGrid w Firemonkey. Muszę używać różnych typów kolumn, takich jak TCheckColumn i TPopupColumn, ale nie mogę znaleźć żadnego dobrego przewodnika ani przykładu, jak ich używać w C ++ Builder.
W każdym razie udało mi się zrozumieć użycie TStringColumn, TProgressColumn ustawiającej wartość komórki w zdarzeniu TGrid onGetValue.
Czy ktokolwiek z was wie, jak ustawić wartość dla kolumn typu TCheckColumn, TImageColumn i TPopupColumn?
dzięki Daniele
---AKTUALIZACJA---
Udało mi się użyć kolumny TProgressColumn. To właśnie robię w konstruktorze formularza:
// TStringColumn
Grid1->AddObject(new TStringColumn(this));
// TCheckColumn
TCheckColumn* c = new TCheckColumn(this);
Grid1->AddObject(c);
// TPopupColumn
// list of values
TStringList * l = new TStringList(NULL);
l->Add(L"First");
l->Add(L"Second");
l->Add(L"Third");
TPopupColumn* p = new TPopupColumn(this);
// adding the list to the PopupColumn
p->Items = l;
Grid1->AddObject(p);
// TProgressColumn
Grid1->AddObject(new TProgressColumn (this));
Grid1->RowCount = 3 ;
a to jest metoda Grid1GetValue:
// TStringColumn
if(Col == 0) Value = TValue::From<String>(Row);
// TCheckColumn !! Can't make it work
if(Col == 1) Value = TValue::From<Boolean>(true);
// TPopupColumn
if(Col == 2) Value = TValue::From<int>(2);
// TProgressColumn
if(Col == 3) Value = TValue::From<double>(50.0);
---AKTUALIZACJA---
jeśli zapisuję wartość kolumny za pomocą metody OnSetValue
void __fastcall TForm1::Grid1SetValue(...)
{
if(Col == 1) check = Value;
}
a następnie ustaw go metodą OnGetValue:
void __fastcall TForm1::Grid1GetValue(...)
{
// TCheckColumn !! Can't make it work
if(Col == 1) Value = check;// TValue::From<Boolean>(true);
}
Po kliknięciu na jedno pole wyboru wszystkie pozostałe pola wyboru zmieniają stan. Zatem komponent działa poprawnie ... teraz chodzi o to, jak ustawić wartość na true lub false we właściwy sposób.