Вполне возможно, что обитатели форума знают про компоненты DeveloperExpress (www.devexpress.com).
Давайте обмениваться опытом.
Наверно, наилучший способ - это писать вопрос насчёт компонентов и своё решение (если вопрос до сих пор остаётся не решённым, то я и коллеги попытаемся на него ответить).
Если дело пойдёт, то вместе соберём приличный русский фак. Правда, надо будет проверить, есть ли набранные вопросы в Knowledgebase у производителя на сайте.
Итак, для начала пара вопросов, который возникли у меня недавно, но уже нашли своё решение:
1. Как можно поменять строки-подписи для cxComboBox'а?
Index - номер необходимой строчки.
2. Привязать своё контекстное меню к колонкам грида просто, но как узнать, что при вызове этого меню нажали, например, на третью колонку?
Можно, конечно, обрабатывать нажатие на каждую колонку, но это слишком неэффективно при большом количестве колонок.
Стандартный вариант - создать обработчик для одной колонки и привязать к нему все колонки грида. Однако этот способ не работает, когда нажатия на колонки от других гридов обрабатываются таким образом.
Есть оптимальное решение - создать обработчик OnMouseUp для ГридВью одного из гридов и получать индекс колонки таким образом:
Далее уже можно использовать ColumnIndex по назначению. Пример (установка сортировки по возрастанию для выбранной колонки):
Давайте обмениваться опытом.
Наверно, наилучший способ - это писать вопрос насчёт компонентов и своё решение (если вопрос до сих пор остаётся не решённым, то я и коллеги попытаемся на него ответить).
Если дело пойдёт, то вместе соберём приличный русский фак. Правда, надо будет проверить, есть ли набранные вопросы в Knowledgebase у производителя на сайте.
Итак, для начала пара вопросов, который возникли у меня недавно, но уже нашли своё решение:
1. Как можно поменять строки-подписи для cxComboBox'а?
PHP:
(<Название Комбобокса>.Properties as TcxImageComboBoxProperties).
Items[<Название Комбобокса>.Index].Description := 'Новый текст';
2. Привязать своё контекстное меню к колонкам грида просто, но как узнать, что при вызове этого меню нажали, например, на третью колонку?
Можно, конечно, обрабатывать нажатие на каждую колонку, но это слишком неэффективно при большом количестве колонок.
Стандартный вариант - создать обработчик для одной колонки и привязать к нему все колонки грида. Однако этот способ не работает, когда нажатия на колонки от других гридов обрабатываются таким образом.
Есть оптимальное решение - создать обработчик OnMouseUp для ГридВью одного из гридов и получать индекс колонки таким образом:
PHP:
var
ColumnIndex: Integer;
...
procedure TMainForm.<Название одного из ГридВью>(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
HitTest: TcxCustomGridHitTest;
begin
HitTest := <Активный грид>.GridView.ViewInfo.GetHitTest(X, Y);
if HitTest is TcxGridColumnHeaderHitTest then
ColumnIndex := TcxGridColumnHeaderHitTest(HitTest).Column.Index;
// ....
end;
PHP:
<Активный грид>.GridView.Columns[ColumnIndex].SortOrder :=
TcxDataSortOrder(soDescending);
Последнее редактирование модератором: