Я привожу некоторый код, касающийся описываемой проблемы: он работал, когда я
использовал его в большом приложении. Я не знаю специфического метода создания
компонента TTable вне родителей, поэтому я пошел путем создания своего класса от
TTable во время инициализации модуля. Удобство такого подхода объясняется
наличием под рукой всегда готового к работе экземпляра класса, стоит всего-лишь
добавить модуль к вашему приложению. Конечно, новый класс не должен иметь
одиноко выглядящую процедуру со странной технологией фильтрации данных :=))), да
и не помешала бы публикация нескольких событий, но этот пример призван все-го
лишь продемонстрировать иной подход к решаемой задаче.
unit Unit2;
interface
uses db, DBTables, dialogs;
type
fake = class(Ttable)
procedure fakeFilterRecord(DataSet: TDataSet; var Accept: Boolean);
end;
var
MyTable: fake;
implementation
procedure fake.fakeFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
showmessage('Здравствуй, Вася');
end;
initialization
MyTable := fake.create(nil);
with Mytable do
begin
DataBaseName := 'dbdemos';
TableName := 'biolife';
OnFilterRecord := MyTable.fakeFilterRecord;
Filtered := true;
active := true;
end;
{проверка получением неких данных...}
showmessage(MyTable.fields[1].asstring);
finalization
{Важно! MyTable не имеет родителя, - уничтожаем объект сами,
иначе память не высвобождается...}
MyTable.free;
end.
|
|