|
发表于 2008-1-28 09:16:23
|
显示全部楼层
在计划中心信息中:
procedure TPLANCENTERINFO.InitTreeColumn(ADataTreeList: TDataTreeList;
ADataSetBroker: TDataSetBroker; AShowFields, AImageFeilds: TStrings);
var
I: Integer;
C: TDataTreeListColumn;
M: TDataTreeListImageColumn;
B: TTreeListBand;
begin
ADataTreeList.DataSource := nil;
ADataTreeList.Bands.Clear;
B := ADataTreeList.Bands.Add;
B.Fixed := TGridBandFixed.bfLeft;
B := ADataTreeList.Bands.Add;
B.Fixed := TGridBandFixed.bfNone;
for I := 0 to AShowFields.Count - 1 do
begin
if AImageFeilds.IndexOf(AShowFields[I]) = -1 then
begin
C := TDataTreeListColumn.Create(ADataTreeList);
C.FieldName := AShowFields[I];
C.SummaryFooterType := TSummaryType.cstNone;
C.Visible := IsShowPlanField(ADataSetBroker.DataSet, C.FieldName);
if SysUtils.SameText(C.FieldName, 'FPLANTITLE') then
C.BandIndex := 0 else
C.BandIndex := 1;
ADataTreeList.AddColumn(C);
end
else
begin
M := TDataTreeListImageColumn.Create(ADataTreeList);
M.FieldName := AShowFields[I];
M.DisableEditor := True;
M.DisableGrouping := True;
{ if AShowFields[I] = '_STATE' then
begin
M.DisableCaption := True;
PlanGraphicLib.TPlanGraphicLib.GetPlanStateGlyph(M.HeaderGlyph);
M.Width := 18;
M.Sizing := False;
M.OnCustomDrawCell := DoTreeCustomDrawStateCell;
M.BandIndex := 0;
end
else }if AShowFields[I] = '_PERCENT' then
。。
end
else if AShowFields[I] = '_WBS' then
begin
M.DisableCaption := False;
M.Caption := '序号';//这里就是 。
M.Width := 100;
M.OnCustomDrawCell := DoTreeCustomDrawWBSCell;//编号方法
M.DisableDragging := True;
M.DisableEditor := True;
M.DisableGrouping := True;
M.BandIndex := 0;
end
else
。。。
end;
procedure TPLANCENTERINFO.DoTreeCustomDrawWBSCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
begin
//这里
PlanGraphicLib.TPlanGraphicLib.DoCustomDrawWBSCell(Sender, ACanvas, ARect, ANode, AColumn,
ASelected, AFocused, ANewItemRow, AText, AColor, AFont, AAlignment, ADone);
end;
{
计划图形库中
}
static procedure TPLANGRAPHICLIB.DoCustomDrawWBSCell(Sender: TObject;
ACanvas: TCanvas; ARect: TRect;
ANode: TTreeListNode; AColumn: TTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean;
var AText: string;
var AColor: Integer; AFont: TFont;
var AAlignment: TAlignment;
var ADone: Boolean);
var
lText: string;
lNode: TTreeListNode;
begin
if ADone then Exit;
lText := '';
lNode := ANode;
while lNode <> nil do
begin
if lText = '' then
lText := SysUtils.Format('%d', [lNode.Index + 1]) else // 这里 (1)
lText := SysUtils.Format('%d.%s', [lNode.Index + 1, lText]);//这里 '%d.%s' (1.2)
lNode := lNode.Parent; //父子形成树形
end;
DoDrawBrushColor(Sender, ACanvas.Brush, ANode, AColor, ASelected, AFocused);
ACanvas.Pen.Color := ACanvas.Brush.Color;
ACanvas.Rectangle(ARect);
if。。
。。。
ADone := True;
end; |
|