Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
ActiveControl имеет DataSet

Автор: OAmiry (Borland)

Для успешного кодирования необходимо включить typinfo в список используемых модулей. Код данного примера инвертирует логическое свойство Active набора данных, связанного с активным элементом управления при каждом нажатии пользователем клавиши ESC.


procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  PropInfo: PPropInfo;
  PropValue: TObject;
  ds: TDataSource;
begin
  if Key = VK_ESCAPE then
    { Основной код ниже }
  try
    ds := nil;
    { Проверяем, имеет ли компонент свойство DataSource }
    PropInfo := GetPropInfo(ActiveControl.ClassInfo, 'DataSource');
    if PropInfo <> nil then
      { Свойство компонента datasource типа class (например, TDataSource) }
      if PropInfo^.PropType^.Kind = tkClass then
      begin
        PropValue := TObject(GetOrdProp(ActiveControl, PropInfo));
        { Создаем слепок найденного TDataSource }
        ds := (PropValue as DB.TDataSource);
        { Используем dataset, связанный с datasource }
        if not (ds.DataSet.State in dsEditModes) then
          ds.DataSet.Active := not ds.DataSet.Active;
      end;
  except
    on E: EInvalidCast do
      ShowMessage('Ошибка. Ожидался DataSource');
  end;
end;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay