hmm, komisch komisch.
ich poste mal alles zu dem multiline was ich im letzten projekte verwendet habe.
bei multiline wird der static text nicht angezeigt.
der tree ist schon komplett aufgebaut wird nur noch durch folgendes in multiline gesetzt
Delphi-Quellcode:
vst_vergleich.IterateSubtree(nil, SetVstMultilineCallback,nil);
procedure Tfrm_vergleich.SetVstMultilineCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
begin
sender.MultiLine[node]:=True;
Abort:=false;
end;
Im onMeasureItem errechne ich noch von allen spalten die maximale höhe+5.
der Knoten soll aber mindestens DefaultNodeHeight haben.
Delphi-Quellcode:
procedure Tfrm_vergleich.vst_vergleichMeasureItem(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; var NodeHeight: Integer);
var
i: integer;
begin
if Sender.MultiLine[Node] then
begin
NodeHeight:=vst_vergleich.DefaultNodeHeight;
for i:=0 to vst_vergleich.Header.Columns.Count-1 do
NodeHeight := Max(vst_vergleich.ComputeNodeHeight(TargetCanvas, Node, i)+5, NodeHeight);
end;
end;
so nur noch mein vst:
Delphi-Quellcode:
var
vst_vergleich: TVirtualStringTree;
vst_vergleich := TVirtualStringTree.Create(Self);
with vst_vergleich do
begin
Name := 'vst_vergleich';
Parent := Self;
Left := 0;
Top := 23;
Width := 792;
Height := 550;
Align := alClient;
Header.AutoSizeIndex := 0;
Header.Font.Charset := DEFAULT_CHARSET;
Header.Font.Color := clWindowText;
Header.Font.Height := -11;
Header.Font.Name := 'Tahoma';
Header.Font.Style := [];
Header.Options := [hoColumnResize, hoVisible];
Header.Style := hsPlates;
HintAnimation := hatNone;
HintMode := hmHint;
LineMode := lmBands;
LineStyle := lsSolid;
ParentShowHint := False;
ShowHint := True;
TabOrder := 1;
TreeOptions.MiscOptions := [toAcceptOLEDrop, toFullRepaintOnResize, toGridExtensions, toInitOnSave, toToggleOnDblClick, toWheelPanning, toVariableNodeHeight];
TreeOptions.PaintOptions := [toShowButtons, toShowDropmark, toShowHorzGridLines, toShowRoot, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toFullVertGridLines];
TreeOptions.SelectionOptions := [toExtendedFocus, toFullRowSelect];
OnGetText := vst_vergleichGetText;
OnPaintText := vst_vergleichPaintText;
OnGetHint := vst_vergleichGetHint;
OnMeasureItem := vst_vergleichMeasureItem;
with Columns.Add do begin
Options := [coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible];
Position := 0;
Tag := 5;
Width := 350;
WideText := 'Bezeichnung';
end;
WideDefaultText := '';
end;
nicht wundern das nur 1 spalte da ist. es werden noch weitere dynamisch hinzugefügt.
das passiert ungefähr so:
Delphi-Quellcode:
fheader:=vst_vergleich.Header.Columns.Add;
fheader.Width:=150;
fheader.Options:=fheader.Options-[coAllowClick];
fheader.Text:='text text';
ich nutze Version 4.3.1 des virtualstringtree.
läuft ohne probleme mit delphi 6 pro, delphi7 enterprise und delphi2005 enterprise
wenn das dann immer noch nicht geht, melde dich mal bitte per icq oder pm bei mir