я послал тот же вопрос, как запрос поддержки в DevExpress, и я получил этот ответ:.
«Здравствуйте Svein
Спасибо за Ваше сообщение Вы можете достичь желаемого результата с помощью. обработчик события OnMouseDown GridView и проверку информации о нем. Приложен пример, который показывает, как выполнить эту задачу. Попробуйте это решение и сообщите нам о ваших результатах ».
Испытательный проект имел простую сетку с колонкой флажка. OnMouseUp-событие GridView имело следующий код:
procedure TForm1.cxGrid1TableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
AHitTest: TcxCustomGridHitTest;
ACellViewInfo: TcxGridDataCellViewInfo;
AEditViewInfo: TcxCustomCheckBoxViewInfo;
ARect: Trect;
AValue: Variant;
begin
AHitTest := TcxGridSite(Sender).GridView.GetHitTest(X, Y);
if AHitTest is TcxGridRecordCellHitTest then
begin
ACellViewInfo := TcxGridRecordCellHitTest(AHitTest).ViewInfo as TcxGridDataCellViewInfo;
if ACellViewInfo.EditViewInfo is TcxCustomCheckBoxViewInfo then
begin
AEditViewInfo := TcxCustomCheckBoxViewInfo(ACellViewInfo.EditViewInfo);
ARect := AEditViewInfo.CheckBoxRect;
if PtInRect(ARect, Point(X, Y)) then
begin
AValue := ACellViewInfo.GridRecord.Values[ACellViewInfo.Item.Index];
TcxGridTableView(TcxGridSite(Sender).GridView).DataController.SetEditValue(
ACellViewInfo.Item.Index, AValue = false, evsValue);
end;
end;
end;
end;
К сожалению, так как MouseUp мероприятие было на сетке, а не колонки, я не могу сделать хранилищу элемента для моих CheckBox-колонн, но по крайней мере сейчас я знаю способ сделать это.
Почему, зачем вы хотите это сделать? Почему вы хотите, чтобы ваше приложение было труднее использовать? Многие пользователи не так хорошо разбираются в использовании мыши, как большинство программистов. Как вы думаете, почему MS создала строку заголовка и кнопку закрытия «x» для всех окон больше, чем до Win2K? –
Я хочу сделать это, потому что это _direct request_ от наших клиентов. Они считают, что слишком легко непреднамеренно переключать флажки так, как сейчас. Иногда они нажимают на ячейку, чтобы сосредоточиться на определенной строке, и даже не замечают, что они ее изменили! Почему флажок работать по-разному, когда он находится в сетке, чем когда он находится в форме?Поэтому в заключение я полностью не согласен с вами :-) –