delphi 类似excle分割的分页多页显示

发布时间 2023-04-25 17:01:43作者: zhangjinbao66

需要使用第三方控件:例如:DEV的 TcxPageControl、 tms的TAdvPageControl 和 TAdvOfficePage.

1、TcxPageControl 用法

(1)通过单元文件打开窗体

procedure WndProc(var Msg: TMessage); override;

procedure TForm1.WndProc(var Msg: TMessage);
var
iPageIndex, AIndex: Integer;
PageHint: string;
begin
case Msg.Msg of
WM_DESTROYCHILDFORM:
begin
Application.ProcessMessages;
if Msg.LParam <> 0 then
begin
for iPageIndex := 0 to MainPageControl.PageCount - 1 do
begin
if MainPageControl.Pages[iPageIndex].Tag = THandle(Msg.WParam) then
begin
PageHint := MainPageControl.Pages[iPageIndex].Hint;
MainPageControl.Pages[iPageIndex].Free;
MainPageControl.ActivePageIndex := MainPageControl.PageCount - 1;
Break;
end;
end;
end;
end;
end;
inherited WndProc(Msg);
{$ENDREGION}
end;

 

var
NewTS: TcxTabSheet;
begin
try
//Unit1From:=TUnit1From.Create(nil);
Application.CreateForm(TUnit1From, Unit1From);
NewTS:=TcxTabSheet.Create(MainPageControl);
NewTS.PageControl:=MainPageControl;
NewTS.AllowCloseButton:=True;
NewTS.Caption:=Unit1From.Caption;
NewTS.Tag:=Unit1From.Handle;
NewTS.Hint:='窗体测试';
Unit1From.BorderStyle:=bsNone;
Winapi.Windows.SetParent(Unit1From.Handle, NewTS.Handle);
Unit1From.Left := 0;
Unit1From.Top := 0;
NewTS.OnResize := MyTabSheetResize;
MainPageControl.ActivePageIndex := MainPageControl.PageCount - 1;
MainPageControlChange(MainPageControl);
except
on e:Exception do
begin
ShowMessage('异常:'+e.Message);
end;
end;

//子窗体代码如下

procedure TUnit1From.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
PostMessage(Form1.Handle, WM_USER+629, Self.Handle, Self.Tag);
//Unit1From:=nil;
end;

procedure TUnit1From.FormCreate(Sender: TObject);
begin
Self.Tag:=Self.Handle;
end;

(2)通过DLL打开窗体

下次再写