delphi分屏开发问题,求助~~~

CaptainShrimp 2015-09-18 10:37:11
现在我用delphi做了个小工具,需要通过分屏显示进行展示,主屏显示一个窗体,副屏显示另一个窗体。首先是通过显示器设置,将桌面扩展到副屏上。然后在程序里添加了如下代码
frmOuterScreen.Left := Screen.Monitors[0].Width + ((Screen.Monitors[1].Width-frmOuterScreen.Width) div 2);
frmOuterScreen.Top := ((Screen.Monitors[1].Height-frmOuterScreen.Height) div 2);
frmOuterScreen.Show();

在Win7系统下进行多屏显示是没问题的,但换到XP系统上以后,两个窗体就只能在主屏上显示。我主屏分辨率是1024*768,我尝试过这样赋值-------frmOuterScreen.Left := 1100; 但窗体仍显示在主屏上,没有扩展到副屏上。

是不是还缺点什么,哪位朋友能指点一下吗?
...全文
227 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2015-09-19
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    function AddUnattachedDisplayDeviceToDesktop() : boolean;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

const ENUM_REGISTRY_SETTINGS = $FFFFFFFF -2;

function TForm1.AddUnattachedDisplayDeviceToDesktop() : boolean;
var displayDevice : TDisplayDevice;
    devMode : TDEVMODE;
    ret : boolean;
    i,index : integer;
begin
  result := true;
  for i := 0 to 100 do
  begin
    index := i;
    //获取显示设备
    ZeroMemory(@displayDevice, sizeof(TDisplayDevice));
    displayDevice.cb := sizeof(TDisplayDevice);
    ret := EnumDisplayDevices(nil,index, displayDevice, 0);
    if ret = false then exit;
    self.Memo1.Lines.Add(BooltoStr(ret));
    self.Memo1.Lines.Add(displayDevice.DeviceName);
    if (displayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE >0) then continue; //主显示器继续
    //获取当前设备的显示模式
    ZeroMemory(@devMode, sizeof(TDEVMODE));
    devMode.dmSize := sizeof(TDEVMODE);
    ret := EnumDisplaySettings(displayDevice.DeviceName,ENUM_REGISTRY_SETTINGS,devMode);
    if ret = false then exit; // Store default failed
    //更新显示模式属性(目的为了扩展桌面)
    devMode.dmOrientation := 1024;  //此处于为demo,具体值为主显示器宽度 ,0,恢复桌面扩展。取-1024扩展显示器会显示在主显示器的左边
    devMode.dmFields := DM_POSITION;
    ChangeDisplaySettingsEx(displayDevice.DeviceName, devMode, 0, CDS_NORESET or CDS_UPDATEREGISTRY, nil);
    ChangeDisplaySettingsEx(displayDevice.DeviceName, devMode, 0, 0, nil);
    result := true;
    exit;
  end;
  result := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form2.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  form1.Left:=screen.Monitors[0].Left;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  AddUnattachedDisplayDeviceToDesktop();
end;

end.
这是一个设置多屏的源码,仅供参考。
Delphi XE2 正式版的破解程序,有效哦。 Delphi XE2 官方完整 delphicbuilder_xe2_win_dl.iso下载地址: http://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso 文件大小: 2.33G MD5: de8b9f897e2ad678643b64898470b707 Delphi Prism XE2 - ISO 1.28G http://altd.embarcadero.com/download/prism/xe2/prism_xe2_win.iso RadPHP XE2 - ISO 343M http://altd.embarcadero.com/download/radphp/xe2/radphp_xe2_win.iso 建议大家用迅雷下载 ************************************** 英巴卡迪诺发布新版RAD Studio XE2开发工具套件 日前,英巴卡迪诺宣布发布新版RAD Studio XE2软件开发工具套件,新版包含了10多年来最深入全面的特性升级。RAD Studio XE2中包含了新版本的Delphi、C++Builder、Prism和RadPHP。主要特性包括完整的Delphi 64位Windows支持,通过全新的FireMonkey富商业应用平台支持Mac OSX和iOS,以及通过RadPHP XE2支持安卓web和移动应用开发。 对Delphi XE2和C++Builder XE2来说,一个极其重要的新特性就是FireMonkey,业界第一款用于创建商业软件的原生的能全面利用到CPU和GPU计算能力的富应用平台。使用 FireMonkey,Delphi和C++Builder开发人员能开发出视觉绚丽的高清和3D应用程序,并与后台的企业级数据库如Oracle、微软 SQL Server、IBM DB2、Sybase和其他数据库互联互通。FireMonkey应用以原生方式运行在Windows PC和Mac上,可以完全利用到现代GPU的处理能力,以不可置信的细节处理能力和优异的性能表现展现数据和用户界面。FireMonkey还可以使 Delphi XE2用户为移动(iOS)设备创建原生的高清和3D应用程序。 Delphi和C++Builder为应用开发提供原生开发方式,而RadPHP XE2则支持web开发和移动设备应用的开发。使用RadPHP XE2,开发人员可以轻松为移动智能电话和平板电脑创建支持触碰和UI优化的web应用。开发人员可以部署他们的移动Web应用为原生移动应用到苹果公司的iOS应用商店和安卓的应用市场。在他们的移动Web应用中,可以直接访问移动设备的硬件,如相机、GPS和重力感应器。 其他新增特性包括: Delphi XE2 和C++Builder XE2 Delphi XE2包括完整的Windows 64位对FireMonkey、编译器、调试器、RTL 和VCL的支持; dbExpress具有新的对InterBase XE, FireBird 2.5, SQL Anywhere 12 和ODBC的连接能力; 新的DataSnap移动连接器,带有原生的平台组件和示例以创建从移动客户端到Delphi DataSnap服务器的连接,支持安卓(Java), iOS (Objective C), 黑莓(Java) 和Windows Phone 7 (C#); 新增和更新的扩展工具,包括FastReport,用于快速设计和生成报表;Documentation Insight,用于Delphi的源代码文档工具; TeeChart、IBX、InstallAware、IP*Works、Aqtime、FinalBuilder、IntraWeb和Indy 的64位版本。 TeeChart、Indy和FinalBuilder还支持Mac平台; C++Builder XE2中还包含了新的代码审计和QA度量工具; LiveBindings使用户能连接任意类型的信息到任意的FireMonkey用户界面和图形对象上。用户可以绑定实时数据到标准的用户界面控件、高清或3D图形元素上,以创建可视化任意类型数据的崭新方式; RadPHP: 集成式为移动优化的Web开发; 部署应用到Web, iOS, 或安卓; 扩展的Zend框架组件集; Embarcadero Prism: 来自RemObjects的全新的.NET Oxygene编译器; 匿名接口实现; FastReport.net

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧