ActiveControl имеет DataSet

Советы » Компоненты и Базы данных » ActiveControl имеет DataSet

Для успешного кодирования необходимо включить 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

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com