Many fixes for design time support of TCDPageControl

git-svn-id: trunk@32998 -
This commit is contained in:
sekelsenmat 2011-10-20 15:36:13 +00:00
parent 1b56619503
commit 95e470df61

View File

@ -438,7 +438,6 @@ type
TCDCustomTabSheet = class(TCustomControl) TCDCustomTabSheet = class(TCustomControl)
private private
FIndex: integer;
CDTabControl: TCDCustomTabControl; CDTabControl: TCDCustomTabControl;
FTabVisible: Boolean; FTabVisible: Boolean;
public public
@ -530,7 +529,6 @@ type
property Caption; property Caption;
property Color; property Color;
property Font; property Font;
property Index: integer read FIndex write FIndex;
property TabVisible: Boolean; property TabVisible: Boolean;
end; end;
@ -2269,9 +2267,12 @@ begin
end; end;
2: 2:
begin // Delete Page begin // Delete Page
//WriteLn('Delete 1');
NewPage := PControl.ActivePage; NewPage := PControl.ActivePage;
if NewPage = nil then Exit; if NewPage = nil then Exit;
PControl.RemovePage(NewPage.Index); //WriteLn('Delete 2');
PControl.RemovePage(PControl.PageIndex);
Hook.PersistentDeleting(NewPage);
end; end;
3: 3:
begin // Next Page begin // Next Page
@ -2326,7 +2327,7 @@ begin
ParentMenuItem.Enabled := PControl.PageCount > 0; ParentMenuItem.Enabled := PControl.PageCount > 0;
for i := 0 to PControl.PageCount - 1 do for i := 0 to PControl.PageCount - 1 do
begin begin
TabPage := TCDTabSheet(PControl.Tabs.Objects[i]); TabPage := PControl.GetPage(i);
NewMenuItem := TMenuItem.Create(ParentMenuItem); NewMenuItem := TMenuItem.Create(ParentMenuItem);
NewMenuItem.Name := 'ShowPage' + IntToStr(i); NewMenuItem.Name := 'ShowPage' + IntToStr(i);
NewMenuItem.Caption := TabPage.Name + ' "' + TabPage.Caption + '"'; NewMenuItem.Caption := TabPage.Name + ' "' + TabPage.Caption + '"';
@ -2363,16 +2364,18 @@ begin
PositionTabSheet(NewPage); PositionTabSheet(NewPage);
FTabs.AddObject(S, NewPage); FTabs.AddObject(S, NewPage);
NewPage.FIndex := FTabs.Count - 1;
SetActivePage(NewPage); SetActivePage(NewPage);
Result := NewPage; Result := NewPage;
end; end;
function TCDPageControl.GetPage(aIndex: integer): TCDTabSheet; function TCDPageControl.GetPage(AIndex: integer): TCDTabSheet;
begin begin
Result := TCDTabSheet(FTabs.Objects[AIndex]); if (AIndex >= 0) and (AIndex < FTabs.Count) then
Result := TCDTabSheet(FTabs.Objects[AIndex])
else
Result := nil;
end; end;
function TCDPageControl.InsertPage(aIndex: integer; S: string): TCDTabSheet; function TCDPageControl.InsertPage(aIndex: integer; S: string): TCDTabSheet;
@ -2391,7 +2394,6 @@ begin
PositionTabSheet(NewPage); PositionTabSheet(NewPage);
FTabs.InsertObject(AIndex, S, NewPage); FTabs.InsertObject(AIndex, S, NewPage);
NewPage.Index := AIndex;
SetActivePage(NewPage); SetActivePage(NewPage);
Result := NewPage; Result := NewPage;
@ -2399,13 +2401,14 @@ end;
procedure TCDPageControl.RemovePage(aIndex: integer); procedure TCDPageControl.RemovePage(aIndex: integer);
begin begin
if AIndex < 0 then Exit; if (AIndex < 0) or (AIndex >= FTabs.Count) then Exit;
if FTabIndex = AIndex then Inc(FTabIndex);
if FTabIndex >= FTabs.Count then Dec(FTabIndex, 2);
Application.ReleaseComponent(TComponent(FTabs.Objects[AIndex])); Application.ReleaseComponent(TComponent(FTabs.Objects[AIndex]));
FTabs.Delete(aIndex); FTabs.Delete(aIndex);
if FTabIndex >= FTabs.Count then Dec(FTabIndex);
Invalidate;
end; end;
function TCDPageControl.FindNextPage(CurPage: TCDTabSheet; function TCDPageControl.FindNextPage(CurPage: TCDTabSheet;
@ -2416,7 +2419,7 @@ begin
if FTabs.Count <> 0 then if FTabs.Count <> 0 then
begin begin
//StartIndex := FPages.IndexOfObject(CurPage); //StartIndex := FPages.IndexOfObject(CurPage);
TempStartIndex := CurPage.Index; TempStartIndex := FTabs.IndexOfObject(CurPage);
if TempStartIndex = -1 then if TempStartIndex = -1 then
if GoForward then if GoForward then
TempStartIndex := FTabs.Count - 1 TempStartIndex := FTabs.Count - 1
@ -2524,10 +2527,11 @@ end;
procedure TCDPageControl.PositionTabSheet(ATabSheet: TCDTabSheet); procedure TCDPageControl.PositionTabSheet(ATabSheet: TCDTabSheet);
var var
lTabHeight: Integer; lTabHeight, lIndex: Integer;
begin begin
// ATabSheet.SetBounds(1, 32 + 1, Width - 3, Height - 32 - 4); // ATabSheet.SetBounds(1, 32 + 1, Width - 3, Height - 32 - 4);
lTabHeight := TCDCustomTabControlDrawer(FCurrentDrawer).GetTabHeight(ATabSheet.Index); lIndex := FTabs.IndexOfObject(ATabSheet);;
lTabHeight := TCDCustomTabControlDrawer(FCurrentDrawer).GetTabHeight(lIndex);
ATabSheet.BorderSpacing.Top := lTabHeight; ATabSheet.BorderSpacing.Top := lTabHeight;
ATabSheet.BorderSpacing.Left := 2; ATabSheet.BorderSpacing.Left := 2;
ATabSheet.BorderSpacing.Right := 3; ATabSheet.BorderSpacing.Right := 3;
@ -2537,10 +2541,7 @@ end;
function TCDPageControl.GetActivePage: TCDTabSheet; function TCDPageControl.GetActivePage: TCDTabSheet;
begin begin
if (FTabIndex > 0) then Result := GetPage(FTabIndex);
Result := TCDTabSheet(FTabs.Objects[FTabIndex])
else
Result := nil;
end; end;
function TCDPageControl.GetPageCount: integer; function TCDPageControl.GetPageCount: integer;