Можно ли создать use TClientDataSet в невизуальном модуле или внутри объекта класса?

StackOverflow https://stackoverflow.com/questions/569254

  •  05-09-2019
  •  | 
  •  

Вопрос

Возможно ли создать и использовать TClientDataSet внутри объекта во время выполнения?

Мне нравится вносить несколько изменений в свою таблицу и применять их все одновременно в виде кэша, и TClientDataSet позволяет мне это делать.Знайте, когда я захочу это сделать, я должен создать TForm.

Возможно ли это?

Обновить

Можно ли его использовать и как, без TDataSetProvider и без TSQLQuery ?Потому что я попробовал это, и это выдало мне сообщение об ошибке no Provider!!

Это было полезно?

Решение

Компоненты - это просто классы, и вы можете использовать их аналогичным образом:

procedure TMyObject.DoSomeDBStuff;
var
  localClientDataset: TClientDataset;
begin
  localClientDataset := TClientDataset.Create( );
  try

  finally
    localClientDataset.Free;
  end;
end;

Вы также можете создать clientdataset-свойство, если хотите:

type
  TMyObject = class
  private
    FClientDB: TClientDataset;
  published
    property Dataset: TClientDataset read FClientDB;
  end;

Однако для некоторых визуальных компонентов может потребоваться визуальный родительский элемент, но для TClientDataSet такого требования быть не должно.

Другие советы

Вы можете создать TClientDataSet во время выполнения.(Смотрите ответ Вегара.) Что касается проблемы с поставщиком, решение состоит в том, чтобы определить поля для него, затем открыть dataset с помощью метода CreateDataSet (не Открытого метода!), и тогда это сработает.

Конечно, вы можете это сделать.Но вы также можете рассмотреть это с помощью модуля данных.Вы можете перетащить невидимые компоненты в datamodule и использовать инспектор объектов для установки значений.

Да, вы можете сделать, TClientDataSet не является визуальным компонентом и не предназначен для использования только внутри форм.

Вы можете создать модуль (.pas без .dfm), содержащий классы и методы, которые могут использовать TClientDataSet и возвращать его также в качестве параметров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top