DeWeb 做多平台适配很方便!

多平台适配代码在OnMouseUp中。

X,Y分别表示当前设备的Width/Height;

Button : mbLeft : 屏幕纵向, mbRight:屏幕横向;

Shift:ssShift, ssAlt, ssCtrl,ssLeft, ssRight,

分别对应0:未知/1:PC/2:Android/3:iPhone/4:Tablet

另外,浏览窗体的

screenWidth可以通过dwGetProp(Self,'screenwidth')得到;

screenHeight可以通过dwGetProp(Self,'screenheight')得到;

innerWidth可以通过dwGetProp(Self,'innerwidth')得到;

innerHeight可以通过dwGetProp(Self,'innerheight')得到;

clientWidth可以通过dwGetProp(Self,'clientwidth')得到;

clientHeight可以通过dwGetProp(Self,'clientheight')得到;

其中:

screenWidth/screenHeight为屏幕分辨率。 注意:移动端为虚拟屏幕分辨率

innerWidth/innerHeight为可视区的宽高,包括了滚动条的宽度

clientWidth/clientHeight为可视区的宽高,不包括了滚动条的宽度

效果:http://www.web0000.com

`procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

iInnerW : Integer;

iRowCount : Integer;

iDemo : Integer;

//

oPanel : TPanel;

begin

//Shift:ssShift, ssAlt, ssCtrl,ssLeft, ssRight,

//分别对应0:未知/1:PC/2:Android/3:iPhone/4:Tablet

 if  (ssShift in Shift) or (ssAlt in Shift) then begin
Width := X-30;
iInnerW := StrToIntDef(dwGetProp(Self,'innerwidth'),-1);
//
if iInnerW = -1 then begin
Exit;
end; //
Width := iInnerW; if iInnerW < 1000 then begin
Panel_Inner0.Width := iInnerW;
end else begin
Panel_Inner0.Width := 1000;
end;
Panel_Inner0.Left := (Width - Panel_Inner0.Width) div 2;
//
Panel_Inner1.Width := Panel_Inner0.Width;
Panel_Inner1.Left := Panel_Inner0.Left;
end else begin
if Y>X then begin
//
Width := X; //
Panel_All.Width := X; //
Panel_Inner0.Width := X;
Panel_Inner0.Left := 0;
Panel_Inner1.Width := X;
Panel_Inner1.Left := 0;
Panel_Inner2.Width := X;
Panel_Inner2.Left := 0;
Panel_Inner3.Width := X;
Panel_Inner3.Left := 0; //hide components
Edit_Search.Visible := False;
Button_Search.Visible := False;
Label_FAQs.Visible := False;
StaticText_FAQs.Visible := False;
Label_ContactUs.Visible := False;
StaticText_ContactUs.Visible := False; //label : web develop with delphi
Label_WDWD.Width := X;
Label_WDWD.Font.Size := 18;
Label_WDWD.Caption := 'Web develop with Delphi';
Label_WDWD.Left := 0; //introduce labels
Label_Introduce0.Left := 8;
Label_Introduce1.Left := 8;
Label_Introduce1.Caption := '无需学习HTML/JavaScript/Java/PHP等新知识';
Label_Introduce2.Left := 8; //fee label
Label_Fee.Left := Label_BuyNow.Left + Label_BuyNow.Width; //buttons
Button_Download.Left := 10;
Button_Download.Width := (X-30) div 2;
Button_Download.Caption := 'Download';
Button_BuyNow.Left := Button_Download.Left + 10 + Button_Download.Width;
Button_BuyNow.Width := Button_Download.Width; //demos
iRowCount := X div 180;
Panel_03_Demos.Height := Ceil(gjoDemos.A['items'].Count / iRowCount)*140;
Panel_Inner3.Height := Panel_03_Demos.Height;
for iDemo := 0 to gjoDemos.A['items'].Count-1 do begin
//get the demo panel include image and href(TStaticText)
oPanel := TPanel(FindComponent('Panel_Demo_'+IntToStr(iDemo)));
oPanel.Top := (iDemo div iRowCount) *140;
oPanel.Left := (iDemo mod iRowCount)* 180; end; end;
end;
//set total height
Panel_All.Height := Panel_99_Foot.Top + Panel_99_Foot.Height;
dwSetHeight(self,Panel_All.Height);

end;

`

DeWeb 电脑和手机动态适配的更多相关文章

  1. [UWP]涨姿势UWP源码——适配电脑和手机

    上一篇我们介绍了绘制主界面的MainPage.xaml,本篇则会结合MainPage.xaml.cs来讲一讲如何适配电脑和手机这些不同尺寸的设备. 同时适配电脑和手机存在几个麻烦的地方: 屏幕尺寸差距 ...

  2. 老李分享:android手机测试之适配(1)

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  3. 了解真实的『REM』手机屏幕适配

    rem 作为一个低调的长度单位,由于手机端网页的兴起,在屏幕适配中得到重用.使用 rem 前端开发者可以很方便的在各种屏幕尺寸下,通过等比缩放的方式达到设计图要求的效果. rem 的官方定义『The ...

  4. 通过JS语句判断WEB网站的访问端是电脑还是手机

    通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! 目录腾讯网的适配代码如何判断访问网站的机器类型-如何判断ipadJS 判断浏览器客户端类型(ipad,iphone,android ...

  5. 真实的『REM』手机屏幕适配

    rem 作为一个低调的长度单位,由于手机端网页的兴起,在屏幕适配中得到重用.使用 rem 前端开发者可以很方便的在各种屏幕尺寸下,通过等比缩放的方式达到设计图要求的效果. rem 的官方定义『The ...

  6. Unity 手机屏幕适配

    ////如有侵权 请联系我进行删除 email:YZFHKM@163.com 1.游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知 ...

  7. PHP判断访问终端,电脑或手机访问

    函数代码: //判断电脑或手机访问 function is_mobile(){ $user_agent = $_SERVER['HTTP_USER_AGENT']; $mobile_agents = ...

  8. 使用WebRTC实现电脑与手机通过浏览器进行视频通话

    最近一直在研究WebRTC,做了一个小项目:www.meet58.com,这个项目利用WebRTC.WebSocket可以让各种设备只通过浏览器进行视频聊天,无论是电脑.手机或者是平板.下面就是手机和 ...

  9. 【原创开源】网络版二代双通道示波器开源发布,支持电脑,手机和Pad等各种OS平台访问

    前言感谢大家的支持,提前奉上今年的国庆福利. 一代示波器发布于3年前,去年年底的时候发布了二代示波器,软件性能已经比较强劲,但依然有值得升级改进的地方,经过今年这半年多努力,在二代示波器的基础上再推出 ...

随机推荐

  1. 让tp6显示详细的错误信息及行号

    方法一:默认情况下Ttp6不会显示错误信息,在开发环境下想要查看错误信息需要将Config目录下的app.php文件的show_error_msg改成true 但是这样显示的信息也不够完整, 要看到更 ...

  2. Dapr实战(二) 服务调用

    服务调用是什么 在分布式应用程序中的服务之间进行调用会涉及到许多挑战. 例如: 维护其他服务的地址. 如何安全地调用服务. 在发生短暂的 暂时性错误 时如何处理重试. 分布式应用程序调用链路追踪. 服 ...

  3. Linux系列(21) - 光盘、U盘挂载

    挂载光盘 mount命令.umount命令 step-1 建立挂载点 原理:相当于建立盘符,建个目录读取光盘内容 命令:[root@localhost ~]# mkdir /mnt/cdrom/ 备注 ...

  4. (数据科学学习手札128)在matplotlib中添加富文本的最佳方式

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 长久以来,在使用matplotlib进行绘 ...

  5. js中针对dom的crud

    1.怎样添加.移除.移动.复制.创建和查找节点? 1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 cr ...

  6. 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01

    百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...

  7. python自定义翻页配置

    1.创建pager.py文件,针对翻页进行函数书写 class PageInfo(object): # current_page 当前页数 # all_count 所有行 # per_page 每页的 ...

  8. 【nvidia jetson xavier】 Deepstream Yolov3示例模型运行

    作者声明 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 原文链接:https://www.cnblogs.com/phoenixash/p/15 ...

  9. 题解 [NOI2019]弹跳

    题目传送门 题目大意 给出 \(n\) 做城市,每座城市都有横纵坐标 \(x,y\).现在给出 \(m\) 个限制 \(p,t,l,r,d,u\),表示从 \(p\) 城市出发,可以花费 \(t\) ...

  10. /usr/bin/python^M: bad interpreter: No such file or directory

    利用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 fileformat=unix 利用如下命令修改文件格式 :set f ...