X11
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите, как лучше и правильнее сделать? Мне нужно узнать активный компонент. Это может быть cxGrid, DBGridEh или др. грид. После того, как я узнаю, я выполняю импорт в датасет, привязанный к этому компоненту. Проблема с cxGrid`ом. Щёлкаю по строке грида, т.к. включено свойство ImmediateEditor, то я сразу попадаю как бы в редактор. Поэтому ShowMessage(ActiveControl.ClassName); выдаёт мне TcxCustomInnerTextEdit Теперь, собственно, вопрос! Как узнать, к какому cxGrid`у или к какому cxGridTableView относится этот самый cxCustomInnerTextEdit? ShowMessage(ActiveControl.Parent.ClassName); выдаёт TcxMaskEdit Если выполнить TcxCustomInnerTextEdit(ActiveControl).Hide; то этот код ShowMessage(ActiveControl.ClassName); потом даёт AV, т.к. получается, что никакой компонент на форме не активен. Добавлено: Правильным ли будет такой код ActiveControl.Parent.Parent.ClassName или есть более гибкие и правильные решения? Добавлено: Пока что сделал так. Если есть решение получше, буду весьма благодарен. Код: if ((ActiveControl is TDBGridEh) or (ActiveControl is TFibExTreeView) or (ActiveControl is TcxGridSite) or (ActiveControl is TcxCustomInnerTextEdit)) then begin if (ActiveControl is TDBGridEh) then begin if ImportSpr(TDBGridEh(ActiveControl).DataSource.DataSet) then ShowMessage('Готово'); TDBGridEh(ActiveControl).DataSource.DataSet.Open; end; if (ActiveControl is TcxCustomInnerTextEdit) then begin if ImportSpr(TcxGridDBTableView(TcxGridSite(ActiveControl.parent.parent).gridview).DataController.datasource.dataset) then ShowMessage('Готово'); TcxGridDBTableView(TcxGridSite(ActiveControl.parent.parent).gridview).DataController.datasource.dataset.Open; end; if (ActiveControl is TcxGridSite) then begin if ImportSpr(TcxGridDBTableView(TcxGridSite(ActiveControl).gridview).DataController.datasource.dataset) then ShowMessage('Готово'); TcxGridDBTableView(TcxGridSite(ActiveControl).gridview).DataController.datasource.dataset.Open; end; if (ActiveControl is TFibExTreeView) then ImportTree( TFibExTreeView(ActiveControl) ); |
---------- /не мы такие, жизнь такая/ |
|