Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть

m830
Дата: 18.06.2019 16:24:54
На форме размещены несколько Grid-ов, которые через свои DataSource подключены к своим ADOStoreProcedure.
Требуется динамически обращаться к свойству Sort объекта ADOStoreProcedure соответствующего Grid-а.
Фрагмент кода
[/SRC]
AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid; // GrName - Имя Grid-а

Edit4.Text:=AGrid.DataSource.DataSet.Filter;    // Компилируется и работает , т.к. свойство Filter у DataSet есть

Edit3.Text:=AGrid.DataSource.DataSet.Sort;     // Не компилируется т.к. свойства Sort у DataSet нет

Edit2.Text:=AGrid.DataSource.DataSet.Name;   // Показывает имя ADOStoreProcedure1 

ADOStoreProcedure1.Sort:='';                          // Работает, но не позволяет динамически выбирать Grid            

[SRC delphi]

Как выкрутиться
Мигалка
Дата: 18.06.2019 16:29:32
а вот вы
m830
as TDBGrid;
зачем делаете?
alekcvp
Дата: 18.06.2019 16:30:59
m830
Как выкрутиться

if (AGrid.DataSource.DataSet is TADOStoreProcedure) then 
  ADOStoreProcedure(AGrid.DataSource.DataSet).Sort; 


P.S: Пару дней назад похожий вопрос видел.
m830
Дата: 18.06.2019 16:52:05
alekcvp,

Компилятор не пускает
[dcc32 Error] Unit2.pas(200): E2003 Undeclared identifier: 'ADOStoredProc'
m830
Дата: 18.06.2019 16:54:55
alekcvp,

Вот так работает

TADOStoredProc(AGrid.DataSource.DataSet).Sort:='';

Спасибо за наводку
Кроик Семён
Дата: 18.06.2019 16:55:35
alekcvp,

лёгкая корректировка:

if (AGrid.DataSource.DataSet is TADOStoreProcedure) then 
  TADOStoreProcedure(AGrid.DataSource.DataSet).Sort; 
alekcvp
Дата: 18.06.2019 17:58:44
Кроик Семён,

Ну забыл кнопочку нажать на копипасте, ходют тут всякие по мытому, отвлекают! Что теперь, расстрелять что-ли?..