Aber grundsätzlich geht es darum: wie packt man Variablen in ein Array
Wenn ich richtig sehe, möchtest du die Eigenschaften der Columns eines VirtualTrees speichern/wiederherstellen. Einfach geht es mit einem
mORMot DocVariant:
Delphi-Quellcode:
uses
VirtualTrees, VirtualTrees.Types,
mormot.core.base,
mormot.core.json,
mormot.core.variants;
type
TViewManager = class(TObject)
strict private
const
COLUMN_VALUENAME_INDEX = 'idx';
COLUMN_VALUENAME_WIDTH = 'wth';
COLUMN_VALUENAME_POSITION = 'pos';
COLUMN_VALUENAME_VISIBLE = 'vis';
public
class function SaveListViewColumnsToJson(pmTreeList: TCustomVirtualStringTree): RawJson;
end;
type
TCustomVirtualStringTreeAccess = class(TCustomVirtualStringTree);
class function TViewManager.SaveListViewColumnsToJson(pmTreeList: TCustomVirtualStringTree): RawJson;
var
header: TVTHeader;
column: TVirtualTreeColumn;
columnValues: TDocVariantData;
begin
Assert(pmTreeList <> Nil);
columnValues.InitFast(dvArray);
header := TCustomVirtualStringTreeAccess(pmTreeList).Header;
for var columnIdx: Integer := 0 to header.Columns.Count - 1 do
begin
column := header.Columns[columnIdx];
if (coResizable in column.Options)
and (column.Width > 0) then
begin
columnValues.AddObject([
COLUMN_VALUENAME_INDEX, columnIdx,
COLUMN_VALUENAME_WIDTH, column.Width,
COLUMN_VALUENAME_POSITION, column.Position,
COLUMN_VALUENAME_VISIBLE, (coVisible in column.Options)]);
end;
end;
Result := columnValues.ToJson;
end;
Das Wiederherstellen lässt sich auf die gleiche Weise umsetzen.
Bis bald...
Thomas