//Adding Root //Called in FromCreate
dbExecute(dbRegelung, 'SELECT * FROM RegelungAuswahl WHERE Ventilatorregelung = 1 and IsParent = 1 ORDER BY Ordnen');
If not dbRegelung.IsEmpty then begin
dbExecute(dbSprachen, 'SELECT * FROM Sprachen WHERE ID = ' + dbRegelung.FieldByName('BezID').AsString);
//Root
XNode := VST.AddChild(Nil);
if VST.AbsoluteIndex(XNode) > -1 then begin
Data := VST.GetNodeData(Xnode);
Data^.Regelung := dbSprachen.FieldByName(FeldD).AsString;
Data^.Tag:= dbRegelung.FieldByName('ID').AsString;
VST.MultiLine[XNode] := True;
end;
AddChilds(dbRegelung, XNode, VST, 'Ventilatorregelung');
dbRegelung.Next;
end;
Procedure AddChilds(var Recordset: TSQLQuery; Root : PVirtualNode; VST : TVirtualStringTree; Regelungsart : String);
var
Node : PVirtualNode;
Data : PTreeData;
Query : TSQLQuery;
SplitString : Array of String;
i : Integer;
begin
Query := TSQLQuery.Create(NIl);
//Childs
dbExecute(Query, 'SELECT * FROM RegelungAuswahl WHERE '+Regelungsart+' = 1 and IsChild = 1 ORDER BY Ordnen ');
While not Query.EOF do begin
//Check if Child is Child of Root
SplitString := Query.FieldByName('ChildOF').AsString.Split(';');
For i := 0 to Length(SplitString) - 1 do begin
IF (SplitString[i] = Recordset.FieldByName('ID').AsString)then begin
dbExecute(dbSprachen, 'SELECT * FROM Sprachen WHERE ID = ' + Query.FieldByName('BezID').AsString);
Node := VST.AddChild(Root);
Data := VST.GetNodeData(Node);
Data^.Regelung := dbSprachen.FieldByName(FeldD).AsString;
Data^.Tag:= Query.FieldByName('ID').AsString;
VST.MultiLine[Node] := True;
AddChilds(Query, Node, VST, Regelungsart);
end;
end;
Query.Next;
end;
Query.Free;
end;
procedure TRegCheckList.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
case Column of
0: CellText := Data^.Regelung;
1: CellText := Data^.Beschreibung;
end;
end;
procedure TRegCheckList.VSTMeasureItem(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; var NodeHeight: Integer);
begin
if Sender.MultiLine[Node] = True then
begin
TargetCanvas.Font := Sender.Font;
NodeHeight := VST.ComputeNodeHeight(TargetCanvas, Node, 0);
end;
end;