Delphi D10.1 移动开发中APP界面基本布局(一)
2017-06-14 14:16
1056 查看
Delphi 目前在移动应用开发上已越来越成熟,其高效、简洁的开发更让人喜欢。
本案例仅使用Delphi自身控件实现,为初学APP开发者提供学习帮助。
http://download.csdn.net/detail/tanqth/9870240
(代码中有详细的批注说明)
说明
案例演示使用Delphi控件完成界面基本布局,其中包括TLayout、TVertScrollBox、 TGridPanelLayout、TTabControl 等控件的基本使用。本案例仅使用Delphi自身控件实现,为初学APP开发者提供学习帮助。
代码下载
案例代码已上传到csdn下载区,下载地址:http://download.csdn.net/detail/tanqth/9870240
(代码中有详细的批注说明)
主要代码示例
1、跨平台调用WEB显示指定网页
procedure TfMain_Form.ImageTapShow(UrlStr: string); //调用系统WEB显示网页 {$IF DEFINED(ANDROID)} var intent: JIntent; begin //安卓下调用WEB显示指定网页 intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, StrToJURI(UrlStr)); SharedActivityContext.startActivity(intent); {$ELSEIF DEFINED(MSWINDOWS)} begin //Win ShellExecute(0, nil, PChar(UrlStr), nil, nil, SW_SHOWNORMAL); {$ELSE} begin {$IFDEF IOS} SharedApplication.OpenUrl(StrToNSUrl(UrlStr)); {$ELSE} _system(MarshaledAString(TEncoding.Default.GetBytes('open ' + UrlStr))); {$ENDIF} {$ENDIF} end;
2、使用TGridPanelLayout显示布局
// 处理显示主要过程 // Grid: 需要显示的Grid控件; idtag:该控件的特定标志,用于区别其他Grid; // num:生成图标个数 index 从第几个图标开始生成 // 这里生成图标都来自于ilMainImage,所有图标需要先载入到ilMainImage。 procedure TfMain_Form.ShowGrid(Grid: TGridPanelLayout; idtag: string; num, index: Integer); var i: Integer; Image: TImage; s: TSizeF; Layout: TLayout; lbl: TLabel; TS: TMemoryStream; begin Grid.BeginUpdate; try // android下需要调用,自己清理上次建的对象.Win32则不用自己清理, // Win32下,Grid.ControlCollection.Clear自动清理了自己建的对象. {$IFDEF ANDROID} while Grid.ControlCollection.Count > 0 do Grid.ControlCollection.Items[0].Control.DisposeOf; {$ENDIF} Grid.Height := 0; for i := index to num + index - 1 do begin // 动态生成 Layout Layout := TLayout.Create(Self); Layout.Name := 'Lay' + idtag + i.ToString; Layout.Align := TAlignLayout.Client; Layout.Padding.Left := 10; Layout.Padding.Bottom := 10; Layout.Padding.Top := 10; Layout.Padding.Right := 10; Layout.Parent := Grid; // Layout父级指向Grid。 // 动态生成 Image Image := TImage.Create(Layout); Image.Name := 'Image' + idtag + i.ToString; Image.Width := 48; Image.Height := 48; Image.Align := TAlignLayout.Center; Image.Margins.Bottom := 10; Image.HitTest := True; Image.Touch.InteractiveGestures := [TInteractiveGesture.LongTap]; Image.TagString := 'Image' + idtag + i.ToString; // 这里用于区分不同点击内容 Image.Tag := i; s.cx := 64; s.cy := 64; Image.Bitmap.Clear(TAlphaColorRec.White); // 创建流,用流来转换图片,实际应用时可直接将图片处理成流来应用 TS := TMemoryStream.Create; ilMainImage.Bitmap(s, i).SaveToStream(TS); // 生成流数据 TS.Position := 0; Image.Bitmap.LoadFromStream(TS); // 流数据载入 Image TS.Free; {$IFDEF MSWINDOWS} Image.OnClick := ImageClick; // 点击事件指向 {$ELSE} Image.OnTap := ImageTak; // 点击事件指向 {$ENDIF} Image.Parent := Layout; // 父级的控件指向Layout // 创建文本标题 lbl := TLabel.Create(Layout); lbl.Parent := Layout; lbl.Name := 'lbl' + idtag + i.ToString; lbl.Text := '测试功能'; // 标题显示内容 lbl.Align := TAlignLayout.Bottom; lbl.Margins.Bottom := 10; lbl.TextAlign := TTextalign.Center; lbl.StyledSettings := []; end; // 计算 Grid与Rectangle整体高度 Grid.Height := Grid.RowCollection.Count * 100; (Grid.Parent as TRectangle).Height := Grid.Height + 30; // 计算每行的高度. for i := 0 to Grid.RowCollection.Count - 1 do begin Grid.RowCollection.Items[i].SizeStyle := TGridPanelLayout.TSizeStyle.Percent; Grid.RowCollection.Items[i].Value := 100 / Grid.RowCollection.Count; end; finally Grid.EndUpdate; end; end;
完成效果
相关文章推荐
- [android开发之内容更新类APP]三、项目的基本功能之布局
- 最佳App开发模式 –帮助创业团队快速布局移动互联网(深圳)
- 移动App开发基本技术面
- [android开发之内容更新类APP]四、项目的基本功能之布局(续)
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(六)实现ViewPager最基本的
- 移动app界面 布局规则
- APP7天快速开发教程2:APP框架搭建、界面布局和屏幕适配
- 【万里征程——Windows App开发】页面布局和基本导航
- [Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,运行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决办法
- Windows App开发之应用布局与基本导航
- [Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,执行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决的方法
- 移动App开发基本技术面
- Windows App开发之应用布局与基本导航
- iOS App开发中Masonry布局框架的基本用法解析
- App.js – 用于移动 Web App 开发的 JS 界面库
- [android开发之内容更新类APP]三、项目的基本功能之布局
- 使用storyboard开发,从来源控制器Push到目标控制器,隐藏Tabbar,在模拟器中,跳转后的界面的布局控件从上往下移动
- 【万里征程——Windows App开发】页面布局和基本导航
- [android更新类的内容开发APP]四、项目布局的基本功能(继续)
- 最佳App开发模式 - APICloud帮助创业团队和开发者快速布局移动互联网