Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

ActiveControl имеет DataSet

Delphi , Базы данных , База данных

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, демонстрирующий, как инвертировать свойство Active для связанного с активным контролем датасета при нажатии клавиши Escape.

Обзор того, что код делает:

  1. Процедура FormKeyUp вызывается каждый раз, когда форма получает событие key-up.
  2. Если нажатая клавиша - это клавиша Escape (VK_ESCAPE), код пытается инвертировать свойство Active для датасета, связанного с активным контролем.
  3. Для достижения этого код использует функцию GetPropInfo, чтобы получить информацию о свойстве DataSource класса активного контрола.
  4. Если свойство DataSource найдено и его тип - это класс (например, TDataSource), код создает экземпляр этого класса с помощью функции GetOrdProp.
  5. Код затем кастит полученный объект в экземпляр класса TDataSource и получает датасет, связанный с ним.
  6. Если датасет не находится в одном из режимов редактирования (dsEditModes), код инвертирует свойство Active для датасета.

Блок обработки исключений ловит любые исключения, возникшие при попытке кастинга, и отображает сообщение об ошибке, если такое событие происходит.

В целом, этот код предоставляет простой способ инвертировать активное состояние датасета, связанного с активным контролем, при нажатии клавиши Escape.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: База данных ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:28:11/0.0031280517578125/0