x11 Posted November 28, 2020 Share Posted November 28, 2020 Задача простая: передать в процедуру сохранения (восстановления) настроек сетку. В одном случае сетка TUniDBGrid, а в другом - сетка TUniDBGridTree. Нет смысла писать отдельно процедуры для TUniDBGrid и отдельно для TUniDBGridTree, т.к. сохранение/восстановление настроек заключается в обработке свойств столбцов: width, index, visible, expanded. В обоих сетках это всё одинаковое. procedure StoreGridToDB(grid: TUniGrid) Какой тип (класс) указать в качестве параметра? Или как сделать правильное приведение типов? Посмотреть иерархию классов: http://www.unigui.com/doc/online_help/api/uniDBTreeGrid_TUniDBTreeGrid.html http://www.unigui.com/doc/online_help/api/uniDBGrid_TUniDBGrid.html обе сетки можно привести к общему родителю TUniCustomDBGrid, но у TUniCustomDBGrid нет свойства columns, вернее оно есть, но оно в секции protected. Тогда вопрос: как добраться к protected свойству. Quote Link to comment Share on other sites More sharing options...
stas Posted November 29, 2020 Share Posted November 29, 2020 type TMyuniDBGrid=class(TUniCustomDBGrid); procedure DoMyGrid(Grid:TUniCustomDBGrid); begin TMyUniDBGrid(Grid).Columns end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted November 29, 2020 Author Share Posted November 29, 2020 Ошибка несоответствия типов: [dcc32 Error] ufrdFav.pas(143): E2010 Incompatible types: 'TUniCustomDBGridHack' and 'TUniDBGrid' UniMainModule.StoreRestore.StoreGridToDB(dbgFav); Объявлено так: Type TUniCustomDBGridHack = class(TUniCustomDBGrid); procedure TStoreRestore.StoreGridToDB(grid: TUniCustomDBGridHack); begin ... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted November 29, 2020 Share Posted November 29, 2020 41 minutes ago, x11 said: grid: TUniCustomDBGridHack Grid: TUniCustomDBGrid 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.