Delphi 1
ActiveControl имеет DataSet?
Для успешного кодирования необходимо включить typinfo в список используемых модулей. Код данного примера инвертирует логическое свойство Active набора данных, связанного с активным элементом управления при каждом нажатии пользователем клавиши ESC.
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
varPropInfo: PPropInfo ;
PropValue: TObject;
ds: TDataSource ;
beginif 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;
|
OAmiry/Borland [000566]