cxgriddetailssite.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,042 行 · 第 1/5 页
PAS
2,042 行
AItemWidth := GetItemWidth(Items[I]);
if AItemWidth > Result then Result := AItemWidth;
end;
if Count > 1 then Inc(Result, ActiveTabOffset);
Inc(Result, TabsAreaOffset + cxGridTabsRootSize - 1);
{$ENDIF}
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.CheckSiteViewInfoHeight(var AHeight: Integer);
begin
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.CheckSiteViewInfoWidth(var AWidth: Integer);
begin
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetBkColor: TColor;
var
AParams: TcxViewParams;
begin
Level.Styles.GetViewParams(lsTabsBackground, nil, nil, AParams);
Result := AParams.Color;
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetFirstVisibleTabIndex: Integer;
begin
{$IFDEF USETABCONTROL}
Result := TabControl.FirstVisibleTab;
{$ELSE}
Result := 0;
{$ENDIF}
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.SetFirstVisibleTabIndex(Value: Integer);
begin
{$IFDEF USETABCONTROL}
TabControl.FirstVisibleTab := Value;
{$ENDIF}
end;
{$IFNDEF USETABCONTROL}
function TcxCustomGridDetailsSiteTabsViewInfo.GetItemHeight(AItem: TcxCustomGridDetailsSiteTabViewInfo): Integer;
begin
Result := AItem.CalculateHeight;
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetItemWidth(AItem: TcxCustomGridDetailsSiteTabViewInfo): Integer;
begin
Result := AItem.CalculateWidth;
end;
{$ENDIF}
function TcxCustomGridDetailsSiteTabsViewInfo.GetPainterClass: TcxGridDetailsSiteTabsPainterClass;
begin
Result := TcxGridDetailsSiteTabsPainter;
end;
{$IFDEF USETABCONTROL}
function TcxCustomGridDetailsSiteTabsViewInfo.AreTabsRotated: Boolean;
begin
Result := IsVertical;
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetTabControlBounds: TRect;
begin
Result := Bounds;
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetTabControlClass: TcxGridLevelTabControlClass;
begin
Result := TcxGridLevelTabControl;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabControl;
begin
InitTabControlHotKeyParams;
InitTabControlData;
InitTabControlLayout;
InitTabControlStyle;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabControlData;
var
I: Integer;
AActiveLevel, ALevel: TcxGridLevel;
begin
AActiveLevel := ActiveLevel;
for I := 0 to Level.VisibleCount - 1 do
begin
ALevel := Level.VisibleItems[I];
if (ALevel = AActiveLevel) or SiteViewInfo.IsTabVisible(ALevel) then
TabControl.AddLevel(ALevel);
end;
TabControl.ActiveLevel := AActiveLevel;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabControlHotKeyParams;
begin
TabControl.UnderlineHotKeys := SiteViewInfo.SupportsTabAccelerators;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabControlLayout;
begin
TabControl.Rotate := AreTabsRotated;
TabControl.TabPosition := GetTabPosition;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabControlStyle;
var
ATabsInfo: TcxGridLevelTabs;
begin
ATabsInfo := TcxCustomGrid(SiteViewInfo.Control).LevelTabs;
if BkColor <> clDefault then
TabControl.Color := BkColor;
TabControl.ImageBorder := ATabsInfo.ImageBorder;
TabControl.Images := ATabsInfo.Images;
TabControl.TabCaptionAlignment := ATabsInfo.CaptionAlignment;
TabControl.Style := ATabsInfo.Style;
TabControl.TabSlants := ATabsInfo.Slants;
TabControl.LookAndFeel.MasterLookAndFeel := SiteViewInfo.LookAndFeel;
InitTabsStyle;
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.InitTabsStyle;
var
ATabDefaultParams, ATabParams: TcxViewParams;
I: Integer;
begin
SiteViewInfo.GetLevelTabDefaultParams(ATabDefaultParams);
for I := 0 to TabControl.Tabs.Count - 1 do
begin
SiteViewInfo.GetLevelTabParams(TabControl.Levels[I], ATabParams);
if ATabParams.Color <> ATabDefaultParams.Color then
TabControl.Tabs[I].Color := ATabParams.Color;
end;
end;
{$ENDIF}
procedure TcxCustomGridDetailsSiteTabsViewInfo.BeforeRecalculation;
begin
{$IFDEF USETABCONTROL}
InitTabControlHotKeyParams;
{$ENDIF}
end;
procedure TcxCustomGridDetailsSiteTabsViewInfo.Calculate(const ABounds: TRect);
{$IFNDEF USETABCONTROL}
var
ATabLeft, ATabTop, ATabSize, I: Integer;
procedure CalculateFirstTabPos;
begin
ATabLeft := Bounds.Left + TabsAreaOffset;
ATabTop := Bounds.Top + TabsAreaOffset;
if (Count <> 0) and Items[0].Active then
if IsVertical then
Dec(ATabTop, Items[0].BorderWidth[bTop])
else
Dec(ATabLeft, Items[0].BorderWidth[bLeft]);
end;
function GetTabWidth: Integer;
begin
if IsVertical then
Result := ATabSize
else
Result := -1;
end;
function GetTabHeight: Integer;
begin
if IsVertical then
Result := -1
else
Result := ATabSize;
end;
procedure CalculateNextTabPos;
begin
if IsVertical then
Inc(ATabTop, Items[I].Height)
else
Inc(ATabLeft, Items[I].Width);
end;
{$ENDIF}
begin
Bounds := ABounds;
AdjustBounds;
{$IFDEF USETABCONTROL}
TabControl.BoundsRect := GetTabControlBounds;
TabControl.Parent := SiteViewInfo.Container;
{$ELSE}
CalculateFirstTabPos;
ATabSize := TabSize;
for I := 0 to Count - 1 do
begin
Items[I].Calculate(ATabLeft, ATabTop, GetTabWidth, GetTabHeight);
CalculateNextTabPos;
end;
{$ENDIF}
end;
function TcxCustomGridDetailsSiteTabsViewInfo.GetHitTest(const P: TPoint): TcxCustomGridHitTest;
{$IFNDEF USETABCONTROL}
var
I: Integer;
{$ENDIF}
begin
{$IFDEF USETABCONTROL}
Result := TabControl.GetHitTest(TabControl.ScreenToClient(SiteViewInfo.Container.ClientToScreen(P)));
{$ELSE}
Result := nil;
for I := 0 to Count - 1 do
begin
Result := Items[I].GetHitTest(P);
if Result <> nil then Break;
end;
{$ENDIF}
end;
function TcxCustomGridDetailsSiteTabsViewInfo.ProcessDialogChar(ACharCode: Word): Boolean;
{$IFNDEF USETABCONTROL}
var
I: Integer;
{$ENDIF}
begin
{$IFDEF USETABCONTROL}
Result := TabControl.HandleDialogChar(ACharCode);
{$ELSE}
for I := 0 to Count - 1 do
begin
Result := Items[I].Visible and Items[I].ProcessDialogChar(ACharCode);
if Result then Exit;
end;
Result := False;
{$ENDIF}
end;
{$IFNDEF USETABCONTROL}
{ TcxGridDetailsSiteLeftTabViewInfo }
function TcxGridDetailsSiteLeftTabViewInfo.CalculateHeight: Integer;
begin
Result := inherited CalculateHeight;
if Active then Inc(Result, BorderWidth[bTop] + BorderWidth[bBottom]);
Inc(Result, BorderSize[bTop] + BorderSize[bBottom]);
end;
function TcxGridDetailsSiteLeftTabViewInfo.CalculateWidth: Integer;
begin
Result := inherited CalculateWidth;
Inc(Result, BorderWidth[bLeft] + BorderWidth[bRight]);
end;
function TcxGridDetailsSiteLeftTabViewInfo.GetAlignmentVert: TcxAlignmentVert;
begin
Result := vaCenter;
end;
function TcxGridDetailsSiteLeftTabViewInfo.GetBorders: TcxBorders;
begin
Result := [bLeft];
if Active then
Result := Result + [bTop, bBottom]
else
begin
Include(Result, bRight);
if HasFirstBorder then Include(Result, bTop);
if HasLastBorder then Include(Result, bBottom);
end;
end;
procedure TcxGridDetailsSiteLeftTabViewInfo.Calculate(ALeftBound, ATopBound: Integer;
AWidth: Integer = -1; AHeight: Integer = -1);
begin
if not Active then
begin
Inc(ALeftBound, TabsViewInfo.ActiveTabOffset);
if AWidth <> -1 then Dec(AWidth, TabsViewInfo.ActiveTabOffset);
end;
inherited;
end;
{$ENDIF}
{ TcxGridDetailsSiteLeftTabsViewInfo }
procedure TcxGridDetailsSiteLeftTabsViewInfo.AdjustBounds;
begin
Bounds.Right := Min(Bounds.Left + Width, Bounds.Right);
end;
procedure TcxGridDetailsSiteLeftTabsViewInfo.CheckSiteViewInfoHeight(var AHeight: Integer);
begin
inherited;
if AHeight < Height then AHeight := Height;
end;
function TcxGridDetailsSiteLeftTabsViewInfo.GetIsVertical: Boolean;
begin
Result := True;
end;
{$IFDEF USETABCONTROL}
function TcxGridDetailsSiteLeftTabsViewInfo.GetTabPosition: TcxTabPosition;
begin
Result := tpLeft;
end;
{$ELSE}
function TcxGridDetailsSiteLeftTabsViewInfo.GetActiveTabOffset: Integer;
begin
Result := ActiveLeftTabOffset;
end;
function TcxGridDetailsSiteLeftTabsViewInfo.GetItemClass: TcxCustomGridDetailsSiteTabViewInfoClass;
begin
Result := TcxGridDetailsSiteLeftTabViewInfo;
end;
function TcxGridDetailsSiteLeftTabsViewInfo.GetRootBorders: TcxBorders;
begin
Result := [bLeft, bTop, bBottom];
end;
function TcxGridDetailsSiteLeftTabsViewInfo.GetRootBounds: TRect;
begin
Result := Bounds;
Result.Left := Result.Right - cxGridTabsRootSize;
end;
{$ENDIF}
procedure TcxGridDetailsSiteLeftTabsViewInfo.GetClientBounds(var AClientBounds: TRect);
begin
Inc(AClientBounds.Left, Width);
end;
{$IFNDEF USETABCONTROL}
{ TcxGridDetailsSiteTopTabViewInfo }
function TcxGridDetailsSiteTopTabViewInfo.CalculateHeight: Integer;
begin
Result := inherited CalculateHeight;
Inc(Result, BorderWidth[bTop] + BorderWidth[bBottom]);
end;
function TcxGridDetailsSiteTopTabViewInfo.CalculateWidth: Integer;
begin
Result := inherited CalculateWidth;
if Active then Inc(Result, BorderWidth[bLeft] + BorderWidth[bRight]);
Inc(Result, BorderSize[bLeft] + BorderSize[bRight]);
end;
function TcxGridDetailsSiteTopTabViewInfo.GetBorders: TcxBorders;
begin
Result := [bTop];
if Active then
Result := Result + [bLeft, bRight]
else
begin
Include(Result, bBottom);
if HasFirstBorder then Include(Result, bLeft);
if HasLastBorder then Include(Result, bRight);
end;
end;
procedure TcxGridDetailsSiteTopTabViewInfo.Calculate(ALeftBound, ATopBound: Integer;
AWidth: Integer = -1; AHeight: Integer = -1);
begin
if not Active then
begin
Inc(ATopBound, TabsViewInfo.ActiveTabOffset);
if AHeight <> -1 then Dec(AHeight, TabsViewInfo.ActiveTabOffset);
end;
inherited;
end;
{$ENDIF}
{ TcxGridDetailsSiteTopTabsViewInfo }
procedure TcxGridDetailsSiteTopTabsViewInfo.AdjustBounds;
begin
Bounds.Bottom := Min(Bounds.Top + Height, Bounds.Bottom);
end;
procedure TcxGridDetailsSiteTopTabsViewInfo.CheckSiteViewInfoWidth(var AWidth: Integer);
begin
inherited;
if AWidth < Width then AWidth := Width;
end;
function TcxGridDetailsSiteTopTabsViewInfo.GetIsVertical: Boolean;
begin
Result := False;
end;
{$IFDEF USETABCONTROL}
function TcxGridDetailsSiteTopTabsViewInfo.GetTabPosition: TcxTabPosition;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?