DevExpress FAQ

McSimm.Korobov

Пользователь
Пользователь
12 Фев 2005
326
0
0
36
Луганская 4
Вполне возможно, что обитатели форума знают про компоненты DeveloperExpress (www.devexpress.com).

Давайте обмениваться опытом.
Наверно, наилучший способ - это писать вопрос насчёт компонентов и своё решение (если вопрос до сих пор остаётся не решённым, то я и коллеги попытаемся на него ответить).

Если дело пойдёт, то вместе соберём приличный русский фак. Правда, надо будет проверить, есть ли набранные вопросы в Knowledgebase у производителя на сайте.



Итак, для начала пара вопросов, который возникли у меня недавно, но уже нашли своё решение:

1. Как можно поменять строки-подписи для cxComboBox'а?

PHP:
 (<Название Комбобокса>.Properties as TcxImageComboBoxProperties).
Items[<Название Комбобокса>.Index].Description := 'Новый текст';
Index - номер необходимой строчки.



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;
Далее уже можно использовать ColumnIndex по назначению. Пример (установка сортировки по возрастанию для выбранной колонки):

PHP:
  <Активный грид>.GridView.Columns[ColumnIndex].SortOrder :=
  TcxDataSortOrder(soDescending);
 
Последнее редактирование модератором: