firemonkey开发通讯录app

2023-10-27

1、添加AddressBook1+MultiView1+speedbuttonX3+labelX#+editboxX3+buttonX2+listbox组件。

2、对listbox右键additem选择tsearchbox类型。

3、设置MultiView1的属性。

4、设置edit1、edit2、edit3的属性。

KillFocusByReturn:=true; 
ReturnKeyType:=Go;

5、编写罗列通讯录以及添加通讯录代码。

procedure TForm1.FillContactList;
var
  I: Integer;
  Contacts: TAddressBookContacts;
begin
  Contacts := TAddressBookContacts.Create;
  try
    AddressBook1.AllContacts(AddressBook1.DefaultSource, Contacts);
    ListBox1.BeginUpdate;
    try
      ListBox1.Clear;
      for I := 0 to Contacts.Count - 1 do
        AddListBoxItem(Contacts.Items[I]);
    finally
      ListBox1.EndUpdate;
    end;
  finally
    Contacts.Free;
  end;

end;

 

procedure TForm1.AddListBoxItem(Contact: TAddressBookContact);
var
  ListBoxItem: TListBoxItem;
begin
  try
    ListBoxItem := TListBoxItem.Create(nil);
    ListBoxItem.Text := Contact.DisplayName;
    ListBoxItem.Tag := Contact.ID;
    ListBox1.AddObject(ListBoxItem);
  finally
    ListBoxItem.Free;
  end;

end;

6、添加删除某条记录以及刷新代码。

procedure TForm1.SpeedButton4Click(Sender: TObject);
var
  Contactlndex, ContactID: Integer;
  Contact: TAddressBookContact;
begin
  Contactlndex := ListBox1.Itemindex;
  if (Contactlndex > -1) then
  begin
    ContactID := ListBox1.Listitems[Contactlndex].Tag;
    Contact := AddressBook1.ContactByID(ContactID);
    if Contact <> nil then
    try
      AddressBook1.RemoveContact(Contact);
      ListBox1.BeginUpdate;
      ListBox1.Items.Delete(Contactlndex);
    finally
      ListBox1.EndUpdate;
      Contact.Free;
    end;
  end;

end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
  FillContactList;
end;

添加通讯录记录代码。

procedure TForm1.Button1Click(Sender: TObject);
var
  Contact: TAddressBookContact;
  eMails: TContactEmails;
  Addresses: TContactAddresses;
begin
  Contact := AddressBook1.CreateContact(AddressBook1.Defaultsource);
  try
    Contact.FirstName := edtFirstName.Text;
    Contact.LastName := edtLastName.Text;
// Add the work mail
    eMails := TContactEmails.Create;
    try
      eMails.AddEmail(TContactEmail.TLabelKind.Work, edtWorkEmail.Text);
      Contact.eMails := eMails;
    finally
      eMails.Free;
    end;
    AddressBook1.SaveContact(Contact);
    try
      ListBox1.BeginUpdate;
      AddListBoxItem(Contact);
    finally
      ListBox1.EndUpdate;
    end;
  finally
    Contact.Free;
  end;
  MultiView1.HideMaster;

end;

取消按钮代码。

procedure TForm1.Button2Click(Sender: TObject);
begin
  edtFirstName.Text := '';
  edtLastName.Text := '';
  edtWorkEmail.Text := '';
  MultiView1.HideMaster;

end;

要求获得权限代码。

uses
    FMX.DialogService;

procedure TForm1.FormShow(Sender: TObject);
begin
// Display this information box while loading the contacts
  if AddressBook1.Supported then
  begin
    TDialogService.ShowMessage(' Loading contacts ...');
    AddressBook1.RequestPermission;
  end
  else
    showmessage('This platform does not support the Address Book service1');

end;

如果有权限执行读入代码。

procedure TForm1.AddressBook1PermissionRequest(ASender: TObject; const AMessage: string; const AAccessGranted: Boolean);
begin

  if AAccessGranted then
  begin
    FillContactlist;
  end
  else
    ShowMessage('You cannot access Address Book. Reason: ' + AMessage);

end;

设置app的使用权限。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

firemonkey开发通讯录app 的相关文章

  • 【C语言】静态通讯录的实现

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 一 项目要求 实现一个通讯录 二 Contact h 三 Con
  • firemonkey开发通讯录app

    1 添加AddressBook1 MultiView1 speedbuttonX3 labelX editboxX3 buttonX2 listbox组件 2 对listbox右键additem选择tsearchbox类型 3 设置Mult
  • OpenErp的权限

    首先引用一篇入门文章 http www oscg cn openerp develop doc 09 可以发现 其实openerp的权限分成了多层次的 菜单 视图 对象 规则 从字面意思就是每层都控制着自己对应的权限 然后我创建了一个新的g
  • tms sparkle创建server以及module实例

    1 使用wizard创建sparkle服务器 2 创建unit1 unit2 unit3单元文件 unit Unit1 interface uses System SysUtils Sparkle HttpServer Module Spa
  • 完全详解权限系统设计方案

    1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们 程序员新入职一家公司需要找人开通各种权限 比如网络连接的权限 编码下载提交的权限 监控平台登录的权限 运营平台查数据的权限等等 在很多时候我们会觉得这么多繁杂的申请给工作带来不
  • 使用delphi开发人工智能程序(参考资料)

    1 幻灯片 https www slideshare net embarcaderotechnet python for delphi developers part 1 introduction 2 python帮助 https open
  • 浅析Android如何从不同的层次保证安全性

    Android上的安全机制可以基本都是从两个方面来进行 1 应用沙盒2 权限约束 先了解一下基本知识 Android是一个分层操作系统 由个4层组成 分别是 Linux Kernel Native Userspace Android Fra
  • OpenWrt系统安全改进<五> --- Web 访问权限分级

    摘要 OpenWrt系统安全改进 lt 四 gt 中介绍的只是在UI层面对用户进行访问控制 对于深层次非法操作并不能起到保护效果 本节介绍针对不同的用户登录请求 使用不同用户启动luci进程 从而实现不同用户进行操作级别的访问控制 机制分析
  • 仿动画效果按钮(firemonkey)

    如图所示 放置一个如此的按钮 1 放置roundrectangle1 2 放置floatanimation1 parent设置为roundrectangle1 3 设置floatanimation1属性 4 放置floatanimation
  • Android暴露组件——被忽略的组件安全

    Intent 简介 Intent 意图 负责完成Android应用 组件之间的交互与通信 常见的Activity的调用 Receiver的发送 Service的启动都需离不开Intent Intent通常包含的信息 Categpry 种类
  • iOS开发实战之app获取通讯录(iOS 9)

    在做通讯类APP的时候 时常会访问到手机的通讯录 来获取联系人的各种属性 那么本文就来讨论一下怎么获取通讯录 注意 iOS 9 版本上可以行 其他版本未试 第一步 先导入系统库 Contacts framework 然后在 h上导入头文件
  • 火猴之抽奖大转盘(firemonkey)

    活动中往往有抽奖环节 如何使用firemonkey制作一个抽奖的程序呢 效果 思路 1 rectangle line text作为可以转动的转盘和指针以及按钮 2 pie 共 10个作为不同颜色的底 每个startangle和endangl
  • bash:XXX.sh权限不够

    在linux上执行shell脚本时提示 bash start sh权限不够 解决办法 chmod 777 start sh
  • ungui中mainform以及login窗体的背景设置

    1 打开mainmodule窗体 2 设置mainmodule的background属性 3 设置mainmodule窗体的loginbackground属性 结果
  • Linux终端执行shell脚本,提示权限不够

    在学习dubbo过程中 上传自己写的脚本 执行的时候提示 权限不够 从网上了解到是因为没有为脚本赋权限 解决方法是使用chmod命令为shell脚本赋予权限 chmod 777 service demo sh 参考 http blog cs
  • 权限系统与RBAC模型概述[绝对经典]

    0 前言 一年前 我负责的一个项目中需要权限管理 当时凭着自己的逻辑设计出了一套权限管理模型 基本原理与RBAC非常相似 只是过于简陋 当时google了一些权限管理的资料 从中了解到早就有了RBAC这个东西 可惜一直没狠下心来学习 更详细
  • 火猴之arc以及gesturemanager的应用(firemonkey)

    效果 目标 1 向左滑动 环形进度条从0 100 2 向右滑动 环形进度条从100 0 思路 1 放置3个arc组件 rotationangle设置为270 stroke的thickness设为30 2 放置gesturemanager组件
  • 【Java】包package的概念和理解以及访问权限

    Java 包 package 为了更好地组织类 Java 提供了包机制 用于区别类名的命名空间 如何创建包 创建包的时候 你需要为这个包取一个合适的名字 之后 如果其他的一个源文件包含了这个包提供的类 接口 枚举或者注释类型的时候 都必须将
  • 如何发布tms xdata server(sqlite)

    1 在fdconnection中将数据库路径设置成 employee db即可 2 在云服务上创建一个文件夹如d sparkle文件夹 3 复制exe sqlite3 dll employee db 数据库 运行 4 结果
  • tms xdata开发连接sqlite数据库的rest server

    1 使用向导 2 设置fdconnection的连接属性 3 设置授权 否则服务无法运行 4 运行tms data modeler 工具 5 将刚刚生成的unipersons pas文件加入到工程中 6 结果

随机推荐

  • 10.Xaml ListBox控件

    1 运行界面 2 运行源码 a Xaml 源码
  • shell执行curl_Linux Shell脚本编程--curl命令详解

    用途说明 curl命令是一个功能强大的网络工具 它能够通过http ftp等方式下载文件 也能够上传文件 其实curl远不止前面所说的那些功能 大家可以通过man curl阅读手册页获取更多的信息 类似的工具还有wget curl命令使用了
  • ubuntu18.04 安装NVIDIA3080ti 显卡驱动及SSH服务和用户添加

    主要参考的这篇博客https blog csdn net weixin 46203866 article details 119425999 spm 1001 2014 3001 55061 显卡驱动下载 下载nvidia驱动程序 RTX
  • PRD 发布报表(2)

    发布报表 发布到bi Server 1 首先启动bi Server 这个在我其他的博文中已经有记述 可以参考 Pentaho学习笔记 bi Server配置 2 然后在PRD中如下图所示 选择发布 注意填写bi Server的账号和密码 选
  • 长篇图解java反射机制及其应用场景

    一 什么是java反射 在java的面向对象编程过程中 通常我们需要先知道一个Class类 然后 new 类名 方式来获取该类的对象 也就是说我们需要在写代码的时候 编译期或者编译期之前 就知道我们要实例化哪一个类 运行哪一个方法 这种通常
  • 中国的官办经济-陈经

    这本书写的不错 从建国到2006年的中国的经济进行了梳理 说明了到底为何中国的经济具有这么大的竞争力 我深深认可其中对于中国人民勤劳 勇敢的描写 经济嘛 就是干活创造价值 中国人民是世界上最勤劳的民族 如果没有走错了 如闭关锁国 一定会跟上
  • Google语法

    目录 Google语法 搜索语法 intitle inurl intext link site filetype related 通配符 注意 快照 cache 举例 Google语法 总结一下平时经常用到的搜索引擎语法 基本都适用于百度搜
  • 项目上传svn 服务器

    1 选中项目右键到 team gt share Project 2 进入到选择界面 选择svn 进入下一个界面 现在可以看到的界面是要选择共享资源的地址了 如果之前已经共享过就会保存在下面了 没有的话我们就自己创建新的资源位置 就是第一个选
  • Blender基础:UV编辑器、UV坐标、UV映射、UV展开

    目录 1 纹理 2 UV编辑器 3 UV坐标 4 UV映射 5 UV展开 6 纹理绘制 7 自动UV展开 8 手动UV展开 9 UV布局调整 10 练习 弯曲文字 1 纹理 纹理Texture 又叫贴图 一般来说 物体的表面不是纯色的 由贴
  • springboot 定时任务(线程配置,并行【同步】、异步等)

    1 定时任务实现方式 SpringBoot自带的Scheduled 可以将它看成一个轻量级的Quartz 而且使用起来比Quartz简单许多 本文主要介绍 执行方式 单线程 串行 多线程 并行 2 创建定时任务 Component Enab
  • 【云原生之Docker实战】使用Docker部署StackEdit在线Markdown编辑器

    云原生之Docker实战 使用Docker部署StackEdit在线Markdown编辑器 一 StackEdit介绍 1 StackEdit简介 2 StackEdit中文版简介 3 StackEdit中文版功能 二 检查本地Docker
  • 关于linux /etc/sysconfig/network中的NOZEROCONF=yes参数

    关于linux etc sysconfig network中的NOZEROCONF yes参数 今天从CSSD Fails to Join the Cluster After Private Network Recovered if ava
  • 【算法研究】Bresenham画线算法

    作者 gnuhpc 出处 http www cnblogs com gnuhpc 0 算法目的这个算法是要画一条平滑的直线 这个工作的难点是确定两点之间的那些像素点 使其近可能的靠近手工绘制的直线 1 基本算法描述现在我们要在一个光栅格子上
  • Django独有报错

    You called this URL via POST but the URL doesn t end in a slash and you have APPEND SLASH set Django can t redirect to t
  • vcruntime140.dll文件下载安装方法以及一些注意事项

    其实vcruntime140 dll文件是Microsoft Visual C Redistributable Packages for Visual Studio 2015中的一个重要组件 它包含了Windows操作系统和其他应用程序所需
  • 加拿大见!拓数派受邀参加第17届PostgreSQL国际开发者大会(PGCon 2023)

    5月30日 6月2日 作为疫情后的第一场线下会议第17届 PostgreSQL 国际开发者大会 PGCon 2023 将在加拿大渥太华隆重举行 拓数派将作为黄金赞助商 受邀参与本次盛会 与全球数据库爱好者们共聚加拿大 此外 拓数派 PieC
  • 由“2013软考之不完美结果”来剖析自己的学习方式误区

    2013年5 25日的软考 昨天晚上可以查成绩了 当时同学走到我面前让查成绩时 心开始跳了 手开始抖了 那一刻的紧张 那一刻的激动 既担心又想知道结果 别急别急 成绩看到了 不高 上午50 下午45 也就是说按百分制算的话 下午只考了60分
  • VScode 安装 ESP-idf 5.0报错:LookupError: unknown encoding: utf-8,gbk

    原因 说明从 pip 源返回的是 utf 8 gbk 编码类型 但是 pip 不能解析 请求了一下 pip 源后发现确实如此 尝试更新 pip python m pip install upgrade pip 但也会报同样的问题 这是因为镜
  • 服务器不能全屏显示,远程服务器如何全屏显示

    远程服务器如何全屏显示 内容精选 换一换 本节操作介绍在Windows和Linux环境中使用SSH密码方式远程登录Linux云服务器的操作步骤 弹性云服务器状态为 运行中 弹性云服务器已经绑定弹性公网IP 绑定方式请参见绑定弹性公网IP 所
  • firemonkey开发通讯录app

    1 添加AddressBook1 MultiView1 speedbuttonX3 labelX editboxX3 buttonX2 listbox组件 2 对listbox右键additem选择tsearchbox类型 3 设置Mult