为什么打哈欠| 傻狍子为什么叫傻狍子| 眼睑是什么位置图片| 山海经是什么| 什么样的阳光填形容词| 眼睛近视缺什么维生素| 女人月经总是提前是什么原因| 吃什么能补充雌激素| 小三阳和大三阳有什么区别| 今年7岁属什么生肖| 什么是杀青| 1025是什么星座| 补气血喝什么口服液好| 潋滟什么意思| 离异什么意思| 禄蠹是什么意思| 弥散是什么意思| 翡翠有什么作用与功效| soho是什么意思| 明油是什么油| 黄豆炒什么好吃| 肾积水有什么症状| twin什么意思| zzegna是什么牌子价格| 甲减是什么意思| 凝血六项是检查什么的| 产妇可以吃什么水果| 什么是糙米| 司令是什么级别| 电饼铛什么牌子好| ccu是什么| 挺舌反应是什么| 伤口不愈合是什么原因| 怀孕14天有什么症状| 糖尿病人可以吃什么水果| 颢字五行属什么| 清明为什么插柳枝| 羡慕的意思是什么| 焦糖色配什么颜色好看| 梦见买碗是什么意思| 炎黄子孙是什么生肖| 偏头痛看什么科| 为什么身上会长脂肪瘤| 走四方是什么生肖| 照护保险是什么| 睾酮是什么| 魔芋长什么样子| 一什么山| 什么食物养肝护肝最好| 高压低是什么原因| 过人之处是什么意思| 九出十三归指什么生肖| 大脖子病有什么症状| 血清钙偏高是什么原因| 男人为什么喜欢女人| 兔死什么悲| 什么叫认知能力| 意境是什么意思| 十六年是什么婚| 月经血块多是什么原因| 取环后月经量少是什么原因| 别人梦见我死了是什么意思| 什么节日吃饺子| 梦到自己流鼻血是什么预兆| 为什么掉发严重| 君子兰的寓意是什么| 什么地赞叹| 头疼吃什么药| 爱恨情仇是什么意思| 肾上腺结节挂什么科| ed是什么| 960万平方千米是指我国的什么| 女属羊和什么属相最配| 儿童抽动症挂什么科| 茹什么饮什么| 主家是什么意思| 甄别是什么意思| 势均力敌什么意思| 人工牛黄是什么| 巨人观是什么| 蚊子的天敌是什么| 脖子肿了是什么原因| 限高是什么意思| 女人手脚发热吃什么药| 艾灸后痒是什么原因| 湿厕纸是干什么用的| 重庆的市花是什么| 小腿前侧肌肉叫什么| 软组织挫伤用什么药| 三十六计最后一计是什么| 脂蛋白高吃什么药能降下来| 失态是什么意思| 性冷淡什么意思| 一人吃饱全家不饿是什么生肖| 酸奶不能和什么一起吃| 一感冒就咳嗽是什么原因| 经常感觉口渴口干是什么原因| 眼白发青是什么原因| 星期三左眼皮跳是什么预兆| 什么的小学生| 朝对什么| 为什么不开朱元璋的墓| 树脂材料是什么| 吃土豆有什么好处| 梦见手抓屎是什么意思| 为什么胸口疼| 老好人是什么意思| 做完痔疮手术吃什么好| 海带绿豆汤有什么功效| 东边日出西边雨是什么生肖| 化妆的步骤是什么顺序| 观音菩萨是属什么生肖| 不可小觑什么意思| 儿女双全什么意思| 爱情公寓6什么时候上映| bape是什么品牌| 石膏是什么| 千山暮雪结局是什么| 洪七公什么生肖| 什么的水流| 爱情是什么感觉| 瘆人是什么意思| 鸽子是什么意思| 尿路感染吃什么药效果好| 怀孕白细胞高是什么原因| 乳腺疼挂什么科| 火龙果有什么功效| 蒲公英和什么相克致死| 梦见下大雪是什么意思| 低血压的人吃什么好| 尿毒症小便什么颜色| 有血尿是什么原因| 脚冰凉吃什么药| 梦见自己给自己剪头发是什么意思| 肌酐测定低是什么意思| 旗袍配什么鞋| 一什么山泉| 粉墙用什么| 什么是假性近视眼| miles是什么意思| 维生素c是什么| 乳头大是什么原因| 刘晓庆为什么坐牢| 卵巢早衰有什么症状| 肝内小囊肿是什么意思| 叶酸吃到什么时候| 药流后可以吃什么水果| pvd是什么材料| 梦见老公出轨了是什么征兆| 痤疮是什么样子的| 小三阳吃什么食物好得快| 什么长| 但求无愧于心上句是什么| 芙蓉花是什么花| beryl是什么意思| 为什么怀不上孩子| 正常人为什么会得梅毒| 超霸是什么意思| 吃什么可以壮阳| 30年婚姻叫什么婚| 肚子总胀气是什么原因| oz是什么意思| 软笔是什么| 王林为什么叫王麻子| 三七粉不适合什么人吃| 什么地唱歌| 胶囊是什么原料做的| 京东pop是什么意思| 周边是什么意思| 人为什么会有狐臭| 皮肤偏黄适合穿什么颜色的衣服| 人为什么会打哈欠| 护理学主要学什么| NG是什么| 地黄长什么样| 自性是什么意思| 珊瑚红是什么颜色| 头发打结是什么原因| 什么是忧郁症| 习字五行属什么| 梦见卖鱼是什么意思| 巨蟹座跟什么星座最配| 什么是个体工商户| 山楂片泡水喝有什么好处| 盆腔炎有什么症状呢| 梦见龙是什么预兆| 肠腔积气是什么原因| 下午两点多是什么时辰| 软组织挫伤用什么药| 什么是医保| 什么是普拉提| 什么是宫颈息肉| 胃镜取活检意味着什么| lh是什么意思| 吸水石是什么石头| marni是什么牌子| 石家庄有什么特产| 鬼迷心窍什么意思| 吃胎盘有什么好处| 三月十七是什么星座| 爱是什么偏旁| 咳嗽脑袋疼是什么原因| 强字五行属什么| 舌吻是什么感觉| 子宫内膜厚是什么意思| 金蝉脱壳什么意思| b族维生素什么人不能吃| 己巳是什么意思| 乐属于五行属什么| 藏红花和什么一起泡水喝效果好| 高血压有什么症状表现| 二元酸是什么| 血红蛋白低吃什么补最快| 10月19号什么星座| 身体缺钾是什么原因造成的| 干什么| o型血rh阳性是什么意思| 尐是什么意思| 9.11是什么星座| 什么是小男人| 每天吃黄瓜有什么好处| sp是什么面料成分| 窗口是什么意思| 什么病不能吃空心菜| 心脏跳的快吃什么药| dvt是什么意思| 新生儿黄疸吃什么药| 手上起小水泡痒是什么原因| 什么人会得胆囊炎| 什么人不适合喝骆驼奶| 聚乙二醇400是什么| 总lge是什么意思| 不睡人的空床放点什么| 脑供血不足吃什么药| 舌头不舒服挂什么科| 喉咙老是有白痰是什么原因| 蒸鱼豉油什么时候放| 卡介苗是什么| 妈妈的姑姑叫什么| 持之以恒的恒是什么意思| 梦到别人怀孕了是什么意思| ber什么意思| 家是什么生肖| 台州为什么念第一声| 多囊是什么原因引起的| 筋膜炎吃什么药好得快| 鼻基底用什么填充最好| 口舌生疮是什么原因| 女人左眼跳是什么预兆| 鸡蛋价格为什么这么低| 十二指肠溃疡a1期什么意思| 无国界医生是什么意思| 1218是什么星座| 什么叫胰岛素抵抗| 风包念什么| 尿多是什么原因引起的| 灬是什么意思| 抠脚大汉什么意思| 尿检隐血弱阳性是什么意思| pdd是什么意思| 拿什么爱你| 陶白白是什么星座| 脂蛋白a是什么意思| 去湿气吃什么食物| 百度

一步一步学习使用LiveBindings(5) 使用TAdapterBindSource实现对象绑定

一步一步学习使用LiveBindings(5) 使用TAdapterBindSource实现对象绑定

百度   “站到!”听到吼声,徐峰还是继续往前开,谢兴才抓着驾驶室的车窗跟着跑。

在本系列的第1课介绍过TBindSourceDB绑定到TFDMemTableo数据库组件,也介绍了使用TPrototypeBindSource提供样本数据源。接下来看一个新的BindSource组件TAdapterBindSource,如其名所暗示,它是一个桥接器绑定控件,主要用来将自定义的对象与数据源进行绑定。

TAdapterBindSource有一个Adapter属性,它可以接收一个继承自TBindSourceAdapter的组件。Delphi提供了TDataGeneratorAdapter组件,它可以完成类似TPrototypeBindSource组件所完成的工作:定义字段列表,关联数据生成器。

好了,有深度的话不多说了,开始练习吧,打开Delphi 12.3。

1. 单击主菜单中的 File > New > Multi-Device Application - Delphi > Blank Application ,创建一个新的多设备应用程序。
建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_BindToObject.dproj。

你的项目结构应该像这样:
img

2. 从工具面板,拖如下的控件到主窗体。

  • TAdapterBindSource —— 通过它来完成控件绑定操作。
  • TDataGeneratorAdapter —— 通过它来产生设计时的测试数据。
  • TBindNavigator —— 将为示例数据提供导航功能。
  • TGrid —— 将显示某些信息。

简单布局一下之后,界面显示效果如下图所示。

img

3. 创建一个新的Delphi单元,构建将要被绑定的数据对象。可以在Project Manager右击项目名称,选择 Add > New > Unit 菜单项,新建一个单元文件,将该单元另存为“EmployeeAdaptee.pas”,然后将下面的代码敲进去。

unit EmployeeAdaptee;

interface

type
  TEmployee = class(TObject)
  private
    FFirstName: String;         //员工姓
    FLastName: String;          //员工名
    FAge: Byte;                 //年龄
    FStartDate: TDate;          //入职日期
    FPosition: String;          //职位
    FManager: String;           //所属经理
  public
    /// <code>
    /// 构造函数
    /// </code>
    constructor Create(const AFirstName, ALastName: String; const AAge: Byte;
                       const AStartDate: TDate; const APosition, AManager: String); overload;
    property FirstName: String read FFirstName write FFirstName;
    property LastName: String read FLastName write FLastName;
    property Age: Byte read FAge write FAge;
    property StartDate: TDate read FStartDate write FStartDate;
    property Position: String read FPosition write FPosition;
    property Manager: String read FManager write FManager;
  end;

implementation

{ TEmployee }

constructor TEmployee.Create(const AFirstName, ALastName: String; const AAge: Byte;
                             const AStartDate: TDate; const APosition, AManager: String);
begin
  inherited Create;

  FFirstName := AFirstName;
  FLastName := ALastName;
  FAge := AAge;
  FStartDate := AStartDate;
  FPosition := APosition;
  FManager := AManager;
end;
end.

4. 回到主窗体,按F12切换到代码视图,再按下Alt+F11快捷键,在弹出的窗口中选中EmployeeAdaptee.pas,指定将该单元添加到Interface区中。

如果现在切换到LiveBindings Designer设计器,在AdapterBindSource1项中是看不到有任何字段的,为了添加设计时的支持,接下来将AdapterBindSource1的Adapter指向DataGeneratorAdapter1。

5. 选中AdapterBindSource1,指定其Adapter属性为DataGeneratorAdapter1。
img

6. 右键单击DataGeneratorAdapter1,从弹出的菜单中选择“Fields Editor”菜单项,在弹出的对话框中,单击“Add”按钮,在弹出的对话框中可以看到有很多包含FieldData生成器的字段,也有很多是Generator为(none)类型的不包含生成器的字段。在名称文本框中会自动生成Field开头的字段,依次添加如下图所示的字段:

img

7. 现在,如果进入到LiveBindings Designer设计器,可以看到AdapterBindSource1实体中包含了多个字段,这个时候可以通过拖拉的方式来设置绑定。

由于在添加字段时,指定了具体的字段数据生成器,因此在绑定后,就可以在Grid上看到测试数据。
img

8. 接下来需要通过一个事件,来将雇员信息添加到数据绑定中去,请选中AdapterBindSource1组件,然后在属性编辑器中,切换到Events选项卡,双击OnCreateAdapter事件,Delphi将生成骨架代码,然后将如下的代码添加进来。
首先,在Interface的Uses区中添加如下的引用,在第4步已经添加了EmployeeAdaptee,接下来需要添加泛型集合类的引用。
img

接下来需要在private区添加一个集合变量。

type
  TFrmMain = class(TForm)
    AdapterBindSource1: TAdapterBindSource;
    DataGeneratorAdapter1: TDataGeneratorAdapter;
    BindNavigator1: TBindNavigator;
    Grid1: TGrid;
    BindingsList1: TBindingsList;
    LinkGridToDataSourceAdapterBindSource1: TLinkGridToDataSource;
  private
    { Private declarations }
    //定义一个集合类
    FMyEmployee: TObjectList<TEmployee>;
  public
    { Public declarations }
  end;

FMyEmployee将会作为对象数据绑定到TGrid上。

接下来添加OnCreateAdapter事件处理代码:

procedure TFrmMain.AdapterBindSource1CreateAdapter(Sender: TObject;
  var ABindSourceAdapter: TBindSourceAdapter);
begin
 //创建员工集合
  FMyEmployee := TObjectList<TEmployee>.Create(True);
  //创建单个员工并添加到集合
  FMyEmployee.Add(TEmployee.Create('Gomez', 'Addams', 40,Now-365*10,'Software Engineer','Alex'));
  FMyEmployee.Add(TEmployee.Create('Morticia', 'Addams', 38,Now-365*10,'Software Engineer','Alex'));
  FMyEmployee.Add(TEmployee.Create('Pugsley', 'Addams', 8,Now-365*10,'Software Engineer','Alex'));
  FMyEmployee.Add(TEmployee.Create('Wednesday', 'Addams', 12,Now-365*10,'Software Engineer','Alex'));
  // 可以使用TObjectBindSourceAdapter指定单个对象,
  // 示例使用TListBindSourceAdapter指定集合对象。
  ABindSourceAdapter := TListBindSourceAdapter<TEmployee>.Create(Self, FMyEmployee, True);
end;

在OnCreateAdapter事件中,ABindSourceAdapter将被用来生成AdapterBindSource1所使用的真实的数据,示例使用TListBindSourceAdapter类创建了一个TObjectList泛型集合类的员工列表,当然也可以使用TObjectBindSourceAdapter指定单一员工对象。

7. 现在就完成了所有的工作,万事皆备,只欠一Run了,按下F9,或者是主菜单的“Run > Run”菜单项,可以看到,果然现在Grid显示了在OnCreateAdapter事件中创建的员工列表。

img

好了,非常漂亮。

虽然本系列已经写到第5课,但是离真实应用仍然还是有一定的距离,不要着急,只要跟着本系列一步一步的学,很快就能掌握到LiveBindings的精华。

posted @ 2025-08-04 15:38  lincats  阅读(24)  评论(0)    收藏  举报
男性泌尿道感染吃什么药 排骨炖什么菜好吃 红豆是什么意思 精液带血是什么原因 查肾结石挂什么科
脸部麻木是什么原因引起的 腹泻吃什么食物 asd什么意思 鸡喜欢吃什么食物 五行什么意思
即兴是什么意思 1997年的牛是什么命 大姨妈每个月提前来是什么原因 79年属羊的是什么命 黑苦荞茶适合什么人喝
绿豆芽不能和什么一起吃 吃什么补血快效果好 神经性头疼是什么原因造成的 女司机为什么开不好车 谭震林是什么军衔
心服口服是什么意思hcv9jop0ns4r.cn 涂防晒霜之前要涂什么hcv8jop3ns8r.cn 青岛市市长什么级别hcv9jop3ns2r.cn 九月底是什么星座hcv8jop5ns0r.cn 什么味道hcv8jop5ns3r.cn
火腿肠炒什么好吃hkuteam.com 何其是什么意思hcv9jop2ns3r.cn 卵巢早衰有什么症状hcv8jop9ns1r.cn 肝回声细密是什么意思hcv9jop7ns9r.cn 骶髂关节在什么位置hcv8jop6ns2r.cn
1967年是什么年hcv7jop9ns2r.cn 若无其事的若是什么意思hlguo.com 中午12点半是什么时辰hcv8jop0ns7r.cn 供给侧改革什么意思hcv8jop5ns3r.cn 筛查是什么意思hcv7jop9ns8r.cn
足字旁的字跟什么有关hcv8jop9ns4r.cn 胎心不稳定是什么原因adwl56.com 吃什么助消化hcv8jop5ns0r.cn 包粽子用什么叶子hcv7jop6ns4r.cn 西米是什么hcv8jop3ns0r.cn
百度