Add "code based" data to LayoutGrid
Hello!
I want to add "items" to a TwwLayoutGrid. Until now I was only able to add data via "normal" database tables and LiveBindings.
Is there a way to add "data" manually to the grid without DataSet?
-
Official comment
You can look at our PMemoryBindingDemo included with FirePower which is an example of this. Once you have done these steps you can just drop in any FirePower control and attach it to the bind source (PrototypeBindSource1). Basically you define your record type structure in CustomerData.pas, and then you drop in a TPrototypeBindSource (PrototypeBindSource1) to define your field definitions through its FieldDefs property. Make sure that the FieldDefs matches the type defined in customer data.pas Finally in your OnCreateAdapter event of your prototypebindsource connect it to your data structure
procedure TMemoryBindingForm.PrototypeBindSource1CreateAdapter(
Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter);
begin // Connect to our CustomerList data structure
ABindSourceAdapter :=
TListBindSourceAdapter<TCustomerData>.Create(PrototypeBindSource1,
CustomerList, False);
end;If you want to give it some data, see the InitializeData method in the main form.
procedure TMemoryBindingForm.InitializeData; var customer:TCustomerData; i : integer; mydate: TDateTime; //integer; begin // Initialize data for i := 0 to 1000 do begin customer := TCustomerData.Create; customer.CustNo:= 1000 + i; mydate:= StrToDateTime('1/1/1945') + Random(365*70); // 70 year range customer.StartDate:= myDate; customer.Caption := 'Caption' + inttostr(i); customer.Name := 'Name' + inttostr(i); customer.MyColor:= TwwColorComboEdit.wwColorsMap.Color[i mod (TwwColorComboEdit.wwColorsMap.Count-1)].Value; customer.TrackValue:= Random(100); customer.ProgressValue:= Random(100); CustomerList.Add(customer); end; PrototypeBindSource1.refresh; end;For completeness, here is the code in the unit CustomerData.pas which contains the memory structure.
unit CustomerData; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, Generics.Collections, Generics.Defaults, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TCustomerData = class private FCustNo: integer; FCaption: String; FName: String; FStartDate: TDateTime; FTrackValue: integer; FProgressValue: integer; FMyColor: TAlphaColor; public property CustNo: integer read FCustNo write FCustNo; property Caption: String read FCaption write FCaption; property Name: String read FName write FName; property StartDate: TDateTime read FStartDate write FStartDate; property TrackValue: integer read FTrackValue write FTrackValue; property ProgressValue: integer read FProgressValue write FProgressValue; property MyColor: TAlphaColor read FMyColor write FMyColor; end; var CustomerList: TObjectList<TCustomerData>; implementation initialization CustomerList := TObjectList<TCustomerData>.Create; finalization CustomerList.Free; end.
Comment actions
Please sign in to leave a comment.
Comments
1 comment