|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
событие свойства-объекта
есть собственный компонент собирающий некие данные и отдающий их:
Код:
type TNewDataTable = procedure (Sender: TObject) of object; TData3Table = class(TComponent) private ... ... public constructor Create(AOwner:TComponent); override; destructor Destroy; override; //Получение таблицы procedure GetTable; ... ... published //событие готовности данных (можно забирать) property OnNewDataTable: TNewDataTable read FNewDataTable write FNewDataTable; end; Код:
type TPtrStringGrid = class(TStringGrid) private //компонент таблицы Data3Table: TData3Table; procedure OnNewDataTable(Sender: TObject); procedure SetData3Table(const Value: TData3Table); public constructor Create(AOwner:TComponent); override; destructor Destroy; override; ... published ... свойство-объект, приязка в Design Time property Table: TData3Table read Data3Table write SetData3Table; end; .... procedure TPtrStringGrid.SetData3Table(const Value: TData3Table); begin if Data3Table = Value then Exit; Data3Table := Value; Data3Table.OnNewDataTable := OnNewDataTable; end; Кидаю два TPtrStringGrid'а и один TData3Table. Оба грида завязываю на один и тот же TData3Table. Ожидалось, что по событию OnNewDataTable оба грида выберут свою часть данных из общей кучи и отобразят. В реальности отрабатывает только один грид, второй нет. В чем проблема? |
#2
|
||||
|
||||
ты привязываешь только 1 TPtrStringGrid, а нужно их список.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
1) Т.е. список? Делать свойство в TData3Table с списком всех TPtrStringGrid? 2) Как потом с этим списком работать? дергать каждый TPtrStringGrid в цикле? Через сообщения такого не реализовать ? |
#4
|
||||
|
||||
посмотри в исходниках, к примеру, как к TDataSet привязываются TDataSource"ы. у TDataSet есть методы AddDataSource и RemoveDataSource. каждый TDataSource добавляется в его внутренний список FDataSources: TList и удаляется из него когда нужно. при событиях TDataSet"а он пробегая по этому списку оповещает все TDataSource"ы (через вызов их определенного метода).
Пишу программы за еду. __________________ |