你可以用Screen.Height Screen.Width来区别
解决方案 »
- 如何编写短信发送软件(会者不难)
- Application.ProcessMessages; 什么意思,做什么用的?在c#中用什么代替??
- Form的调用问题
- 求源代码ADO+access2000
- 如何对sqlserver里的数据库进行备份?
- 有个朋友天天做这样的事情:。。。。。。谁来帮我编个程??
- shelltreeview 和imagelist建立关联后,怎么还是看到shelltreeview的图标?
- 我想做打印报表,表格式,有什么好的free控件?
- 谁有VCLZip for Delphi 6?给我发一份可以吗?还有,VCLZip中如何将所有的文件一次性解出来?
- 请问DELPHI编写的程序可以不使用动态链接库等。而在别的机器上别的WIN操作系统运行吗?
- 高分请教:如何得到当前操作系统所有打开的窗口的标题? 分不够可再加
- 怎么加载sql文件 我的方法错在哪
我的方法根据高手的指点定义两个全局变量。SCREENX,SCREENY:INTEGER;
procedure Tmainwinform.FormCreate(Sender: TObject);
var
sx, sy: Integer;
DevMode: TDeviceMode;
begin
sx := GetSystemMetrics(SM_CXSCREEN); //分辨率宽
sy := GetSystemMetrics(SM_CYSCREEN); //分辨率高
//用于在程序结束时把分辨率 改回原始状态
screenx := sx; //分辨率宽
screeny := sy; //分辨率高
if (sx <> 1024) and (sy <> 768) then
begin
DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
DevMode.dmPelsWidth := 1024;
DevMode.dmPelsHeight := 768;
ChangeDisplaySettings(DevMode,0); //设置新的显示参数
end;
程序关闭时把分辨率修改为原来状态:
procedure Tmainwinform.FormClose(Sender: TObject;
var Action: TCloseAction);
var
sx, sy: Integer;
DevMode: TDeviceMode;
begin
sx := GetSystemMetrics(SM_CXSCREEN); //分辨率宽
sy := GetSystemMetrics(SM_CYSCREEN); //分辨率高
if (sx <> screenx) and (sy <> screeny) then
begin
DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
DevMode.dmPelsWidth := screenx;
DevMode.dmPelsHeight := screeny;
ChangeDisplaySettings(DevMode,0); //设置新的显示参数
end;
actiON:=cafree;
end;其中两个全局参数很重要。
DWORD iModeNum, // specifies the graphics mode
LPDEVMODE lpDevMode // points to structure to receive settings
);
LONG ChangeDisplaySettings( LPDEVMODE lpDevMode,
DWORD dwflags
);
var
DevMode: TDeviceMode;
BarData: TAppBarData;
begin
EnumDisplaySettings(nil, 0, DevMode);
DevMode.dmFields := DM_DISPLAYFREQUENCY or DM_PELSWIDTH or DM_PELSHEIGHT;
DevMode.dmDisplayFrequency := Rate;
DevMode.dmPelsWidth := x;
DevMode.dmPelsHeight := y;
ChangeDisplaySettings(DevMode, 0);
BarData.cbSize := SizeOf(BarData);
BarData.uEdge := ABE_BOTTOM ;
BarData.rc.Left := 1242672;
BarData.rc.Top := 4395012;
BarData.rc.Right := 1242444;
BarData.rc.Bottom := 309;
SHAppBarMessage(ABM_SETPOS, BarData);
Caption := IntToStr(BarData.rc.Left);
end;