cxGrid отловить фокус

kill_zdm
Дата: 12.05.2011 10:54:17
Доброго времени суток. Продолжаю борьбу с DevExpress. Есть два cxGrid и кнопки в тулбаре новый, редактировать, удалить ... и собственно необходимо в зависимости от того грида на котором нахожусь выполнить действия. ( вьюшка имеет имя -ViewDetail)
и так пробую
if ViewDetail.Focused=true then ShowMessage('');
и так вот даже эмпирическим методом нарыл
if GridClients.FocusedView=ViewDetail then ShowMessage('');

не помогает.. помогите растормазиться.
Sasha87
Дата: 12.05.2011 11:03:52
создай переменную и запоминай в неё какой грид активен в событии он OnEnter грида.
Или можно вопользоваться функцией cxGrid.ViewExists(CustomGridView).
kill_zdm
Дата: 12.05.2011 11:07:36
if GridClients.Views[0].Focused =true then ShowMessage(''); вот так прокатило... но у меня сложнее, несколько уровней..типа детейла ..как дерево и там еще таблица.. чото if GridClients.Views[1].Focused =true then ShowMessage(''); не прокатывает
Anatoly Podgoretsky
Дата: 12.05.2011 11:07:54
Не надо ловить никакой фокус, а надо использовать ActiveControl

Не надо одну кнопку для двух гридов, тебя потомки проклянут.
kill_zdm
Дата: 12.05.2011 11:12:35
ну с переменной можно, спасибо, но если будут еще идеи, пишите
kill_zdm
Дата: 12.05.2011 11:17:18
Анатолий, что-то я раньше не работал с ActiveControl, пробую так if ActiveControl.Name='ViewDetail' then ShowMessage(''); ..да и если просто пробую ShowMessage(ViewDetail) , у меня пусто... что я не так делаю?
kill_zdm
Дата: 12.05.2011 11:18:02
ой, т.е. ShowMessage(ActiveControl.Name)
Sasha87
Дата: 12.05.2011 11:21:06
может быть так, но не проверено

if (ActiveControl is TcxGridDBTableView) then
TcxGrid(isTcxGridDBTableView(ActiveControl).Parent).Name =
kill_zdm
Дата: 12.05.2011 11:22:32
понятненько, спасибо
RENaissance
Дата: 12.05.2011 11:23:46
kill_zdm,

1. Используй ActiveControl, который является объектом класса TcxGridSite.
2. Прочитай справку про Cloned Views.