Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть / 7 сообщений из 7, страница 1 из 1
18.06.2019, 16:24
    #39827830
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
На форме размещены несколько Grid-ов, которые через свои DataSource подключены к своим ADOStoreProcedure.
Требуется динамически обращаться к свойству Sort объекта ADOStoreProcedure соответствующего Grid-а.
Фрагмент кода
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[/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]


Как выкрутиться
...
Рейтинг: 0 / 0
18.06.2019, 16:29
    #39827833
Мигалка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
а вот вы m830
Код: pascal
1.
as TDBGrid;

зачем делаете?
...
Рейтинг: 0 / 0
18.06.2019, 16:30
    #39827836
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
m830Как выкрутиться
Код: pascal
1.
2.
if (AGrid.DataSource.DataSet is TADOStoreProcedure) then 
  ADOStoreProcedure(AGrid.DataSource.DataSet).Sort; 



P.S: Пару дней назад похожий вопрос видел.
...
Рейтинг: 0 / 0
18.06.2019, 16:52
    #39827849
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
alekcvp,

Компилятор не пускает
[dcc32 Error] Unit2.pas(200): E2003 Undeclared identifier: 'ADOStoredProc'
...
Рейтинг: 0 / 0
18.06.2019, 16:54
    #39827852
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
alekcvp,

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

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

Спасибо за наводку
...
Рейтинг: 0 / 0
18.06.2019, 16:55
    #39827853
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
alekcvp,

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

Код: pascal
1.
2.
if (AGrid.DataSource.DataSet is TADOStoreProcedure) then 
  TADOStoreProcedure(AGrid.DataSource.DataSet).Sort; 
...
Рейтинг: 0 / 0
18.06.2019, 17:58
    #39827895
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть
Кроик Семён,

Ну забыл кнопочку нажать на копипасте, ходют тут всякие по мытому, отвлекают! Что теперь, расстрелять что-ли?..
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обратиться к свойству объекта, если компилятор его не знает, а у родителя оно есть / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]