2013-09-23 4 views
0

в Firemonkey (XE5) Я создал Frame с TStringGrid и хочу добавить "процедура ShowData (aClientSet: TClientSet);" в том, что строки Clientset должны отображаться только с помощью LiveBindings (TBindSourceDB?) Без знания чего-либо еще из набора данных и БЕЗ КОНСТРУКЦИИ? Пожалуйста, как это можно сделать во время выполнения? И как управлять тем, чтобы сетка была пополнена, если набор данных закрыт и снова открыт за рамкой (где загорается TBindings.notify)? Thx.Delphi livebinding TClientDataSet TStringGrid runtime

ответ

0

Следующая работал для меня:

  1. Включите Data.Bind.EngExt, Fmx.Bind.DBEngExt, Fmx.Bind.Grid, System.Bindings.Outputs, Fmx.Bind.Editors, данные. Bind.Components, Data.Bind.Grid и Data.Bind.DBScope в вашем примере использования.
  2. Предполагая, что ваш TStringGrid называется СЕТКА1 и ваш набор данных называется QRY1:

    вар
        BDS: TBindSourceDB;
        bdl: TBindingsList;
        gtd: TLinkGridToDataSource;
    начало
        bds: = TBindSourceDB.Create (Self);
        bdl: = TBindingsList.Create (Self);
        gtd: = TLinkGridToDataSource.Create (bdl);

        gtd.DataSource: = bds;
        gtd.GridControl: = Grid1;

        bds.DataSet: = qry1;
    end;

Надеюсь, это поможет! (Я использовал TFDQuery в качестве своего набора данных, но я уверен, что любой потомок TDataset должен работать нормально.)