在delphi Form窗体的panel 中嵌入 Fmx窗体

1.创建2个工程,一个是window application ,一个bpl 工程(multi-device Forml),创建方式见:

在delphi Form窗体调用Fmx窗体_zjg076000的博客-CSDN博客(这里不再重复)

2.调整一下windows应用的界面,放入panel 来嵌入fmx窗体

3.编写代码

 

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,testfmxform, Vcl.ExtCtrls;

type
  TForm2 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Panel2: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private

  public
       FmxForm: Tfrmtestfrmform;
      FMHWnd: HWND;
  end;

var
  Form2: TForm2;

implementation
    uses FMX.Platform.Win,FMX.Forms;
{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
     frmtestfrmform:=tfrmtestfrmform.Create(self);
     frmtestfrmform.ShowModal;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin

  FmxForm := Tfrmtestfrmform.Create(panel2);
  FmxForm.Left :=0;
  FmxForm.Top := 0;
  FMHWnd := FmxHandleToHWND(FmxForm.Handle);

 SetWindowLong(FMHWnd, GWL_STYLE, GetWindowLong(FMHwnd, GWL_STYLE) or WS_CHILD);

   Winapi.Windows.SetParent(WindowHandleToPlatform(FmxForm.Handle).Wnd, Panel2.Handle);
   MoveWindow(WindowHandleToPlatform(FmxForm.Handle).Wnd, 0, 0, Round(Panel2.Width), Round(Panel2.Height), True);

   FmxForm.WindowState := wsMaximized;
   FmxForm.Show;
   FmxForm.EndUpdate;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   FmxForm.Close;
end;

procedure TForm2.FormResize(Sender: TObject);
begin
     if FmxForm <> nil then
      MoveWindow(WindowHandleToPlatform(FmxForm.Handle).Wnd, 0, 0, Round(Panel2.Width), Round(Panel2.Height), True);
end;

end.

 4.运行效果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi,将一个转换为HTML表格是可行的,需要以下步骤: 1. 在Delphi,使用TWebBrowser组件来显示和呈现HTML内容。该组件可用于加载和渲染网页内容。 2. 在上放置一个TWebBrowser组件,并将其宽度和高度设置为适当的值,以确定所需的HTML表格大小。 3. 在的相关事件(如OnCreate),使用TStringList来创建HTML代码。 4. 使用TStringList的Add方法,将HTML表格的标记(如<table>、<tr>、<td>等)按正确的格式添加到字符串列表。 5. 遍历上的控件列表,并根据需要为每个控件创建HTML行和列。 6. 使用控件的属性(如Caption、Text等)来获取控件的值,并将其放置在相应的HTML单元格。 7. 最后,将生成的HTML代码设置为TWebBrowser的Document属性,以显示HTML表格。 以下是一个示例程序的代码,演示如何将转换为HTML表格: procedure TForm1.FormCreate(Sender: TObject); var HTMLCode: TStringList; Control: TControl; begin HTMLCode := TStringList.Create; try HTMLCode.Add('<table border="1">'); for Control in Self.Controls do begin HTMLCode.Add('<tr>'); HTMLCode.Add('<td>' + Control.Name + '</td>'); HTMLCode.Add('<td>' + Control.Caption + '</td>'); HTMLCode.Add('<td>' + Control.ClassName + '</td>'); HTMLCode.Add('</tr>'); end; HTMLCode.Add('</table>'); WebBrowser1.Navigate('about:blank'); WebBrowser1.Document.Write(HTMLCode.Text); WebBrowser1.Refresh; finally HTMLCode.Free; end; end; 在上述示例,我们创建了一个HTML字符串列表,并使用一个简单的循环来遍历上的控件。每个控件的名称、标题和类名被添加到HTML表格的每行。最后,通过将生成的HTML代码写入TWebBrowser的Document属性,将HTML表格显示在上。 希望这个回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值