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. 一起学习PHP中GD库的使用(一)

    又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎.从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们 ...

  2. 在PHP中操作文件的扩展属性

    在操作系统的文件中,还存在着一种我们可以自己定义的文件属性.这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容.它们可以将一个键值对信息永久得关联到文件上,一般现在的 Li ...

  3. linux,apache,php,mysql常用的查看版本信息的方法

    1. 查看linux的内核版本,系统信息,常用的有三种办法:   uname -a:   more /etc/issue;    cat /proc/version; 2. 查看apache的版本信息 ...

  4. CF573D-Bear and Cavalry【动态dp】

    正题 题目链接:https://www.luogu.com.cn/problem/CF573D 题目大意 给出\(n\)个人\(n\)匹马,每个人/马有能力值\(w_i\)/\(h_i\). 第\(i ...

  5. Java实现四大基本排序算法和二分查找

    Java 基本排序算法 二分查找法 二分查找也称为折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜 ...

  6. 面试官一口气问了MySQL事务、锁和MVCC,我

    面试官:你是怎么理解InnoDB引擎中的事务的? 候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败 候选者:事务其目的是为了「保证数据最终的一致性」. 候选者:举个例子,我给你发 ...

  7. Apache ShardingSphere:由开源驱动的分布式数据库中间件生态

    2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人.Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以<Apache Sh ...

  8. Winfrom窗体初始化和窗体Load方法前后

    运行结果为 [窗体初始化之前!]>[窗体初始化!]>[窗体Load!]

  9. NOIP&CSP 考前 Dev-cpp 的选项问题和考试心态

    (进入考场后您将获得一个崭新的 \(Dev-cpp\),没有中文,没有编译选项,没有缺省源:我还将获得一个崭新的脑子,没有心态,没有智商,没有调试能力--) 中文 \[Step1 \] \[Step2 ...

  10. CF992E Nastya and King-Shamans(线段树二分+思维)

    这是一道卡常好题 从160s卡到36s qwq 由于题目设计到原数组的单点修改,那么就对应着前缀和数组上的区间加. 很显然能想到用线段树来维护这么个东西. 那么该如果求题目要求的位置呢 我们来看这个题 ...