窗体相互传值
# PinToo之窗体相互传值
# 1. 说明
该功能构建窗体之间可相互进行值互传以及控件控制的功能。点击窗体中的按钮,打开另外一个窗体并将源窗体中的数据传递给另外一个窗体。
通过范例学习,可以掌握窗体间传值的方法。
# 2. 设计明细
开启PinToo设计器。该范例需要使用到三个菜单模块,此处需新建三个模块,分别命名为Home
,SecondPage
,ThirdPage
。

窗体构建的示例如下图所示。或者点击左上角的[打开模板Lib文件]
,选择模板文件来打开对应模板。
①:TfxSuperButton组件,控件名称为fxSuperButtonPage
。
②:TfxSuperButton组件,控件名称为fxSuperButtonForm
。
③:TfxMemo组件,控件名称为fxMemo1
。
fxRunFrame属性设置
Height
:设置页面高度=800
。Width
:设置页面宽度=400
。
①fxSuperButtonPage属性设置
Height
:设置控件高度=150
。Width
:设置控件宽度=150
。ButtonType
:设置按钮类型,设置为TfxSvgButton
。Name
:设置控件名称=fxSuperButtonPage
。Opactiy
:设置控件透明度=0.9
。ButtonType.Text
:设置按钮文本=传送界面(页面模式)
。ButtonType.SvgData
:设置SVG数据,其数据内容如下。
<path d="M47.2741279602051,15.2713918685913 L68.3908996582031,3 L68.341064453125,21.2513561248779 L47.2243003845215,33.5227508544922 L47.2741279602051,15.2713918685913 Z" p-id="6930" fill="#FFFF7517" stroke="Null"></path> <path d="M18.4457092285156,31.7162971496582 L39.5624656677246,19.4449081420898 L68.3908996582031,3 L47.2741279602051,15.2713918685913 L18.4457092285156,31.7162971496582 Z" p-id="6931" fill="#FFFFB845" stroke="Null"></path> <path d="M47.2741279602051,15.2713918685913 L47.2243003845215,33.5227508544922 L110.387725830078,70.0005493164063 L110.350326538086,84.7635803222656 L47.1744728088379,48.2982521057129 L44.3464469909668,46.6662254333496 L18.4457092285156,31.7162971496582 L47.2741279602051,15.2713899612427 Z" p-id="6932" fill="#FFFFDF5A" stroke="Null"></path> <path d="M47.2243003845215,33.5227508544922 L68.341064453125,21.2513580322266 L131.504425048828,57.7291603088379 L110.387725830078,70.0005493164063 L47.2243003845215,33.5227508544922 Z" p-id="6933" fill="#FFFFB845" stroke="Null"></path> <path d="M110.387725830078,70.0005493164063 L131.504425048828,57.7291603088379 L131.467071533203,72.4921951293945 L110.350326538086,84.7635803222656 L110.387725830078,70.0005493164063 Z" p-id="6934" fill="#FFFF7517" stroke="Null"></path> <path d="M110.437561035156,109.244087219238 L81.6091156005859,125.6640625 L81.658935546875,107.412719726563 L18.4955444335938,70.9473648071289 L18.5329170227051,56.1843299865723 L81.6963043212891,92.6496734619141 L84.5243377685547,94.2817001342773 L110.437515258789,109.244087219238 Z" p-id="6935" fill="#FF76C8FF" stroke="Null"></path> <path d="M105.641098022461,82.0103149414063 L102.813064575195,80.378288269043 L39.6621246337891,43.9129409790039 L18.5329170227051,56.1843299865723 L81.6963043212891,92.6496734619141 L84.5243377685547,94.2817001342773 L110.437515258789,109.244087219238 L131.554290771484,96.9726867675781 L105.641098022461,82.0103149414063 Z" p-id="6936" fill="#FF2789FF" stroke="Null"></path>
1
2
3
4
5
6
7②fxSuperButtonForm属性设置
Height
:设置控件高度=150
。Width
:设置控件宽度=150
。ButtonType
:设置按钮类型,设置为TfxSvgButton
。Name
:设置控件名称=fxSuperButtonForm
。Opactiy
:设置控件透明度=0.9
。ButtonType.Text
:设置按钮文本=传送界面(窗口模式)
。ButtonType.SvgData
:设置SVG数据,其数据内容如下。
<path d="M98.8268280029297,67.6139526367188 M96.8694152832031,67.6139526367188 C96.8694152832031,68.6950073242188 97.7458038330078,69.5713500976563 98.8268280029297,69.5713500976563 C99.9078826904297,69.5713500976563 100.784240722656,68.6950073242188 100.784240722656,67.6139526367188 C100.784240722656,66.5328979492188 99.9078826904297,65.6565399169922 98.8268280029297,65.6565399169922 C97.7458038330078,65.6565399169922 96.8694152832031,66.5328979492188 96.8694152832031,67.6139526367188 Z" p-id="8310" fill="#FFFF8429" stroke="Null"></path> <path d="M84.5912780761719,111.488525390625 C84.5912780761719,113.551879882813 82.9186096191406,115.224563598633 80.8552551269531,115.224563598633 L24.0422172546387,115.224563598633 L24.0422172546387,58.4115409851074 C24.0422172546387,56.3491973876953 25.7133102416992,54.6769409179688 27.7756462097168,54.6754989624023 L48.1835556030273,54.6754989624023 L48.1835556030273,44.3665008544922 L27.906135559082,44.3665008544922 C20.0782279968262,44.3679389953613 13.7332153320313,50.7141189575195 13.7332172393799,58.5420303344727 L13.7332172393799,125.6640625 L80.8552551269531,125.6640625 C88.6841735839844,125.6640625 95.03076171875,119.317459106445 95.03076171875,111.488525390625 L95.03076171875,91.0832214355469 L84.5912780761719,91.0832214355469 Z" p-id="8311" fill="#FF48BCFF" stroke="Null"></path> <path d="M54.9692153930664,16.0493698120117 L54.9692153930664,84.2975616455078 L123.217422485352,84.2975616455078 C130.424377441406,84.2975616455078 136.266784667969,78.4551696777344 136.266784667969,71.2481994628906 L136.266784667969,3 L68.0185852050781,3 C60.8116188049316,3 54.9692153930664,8.8424015045166 54.9692153930664,16.0493698120117 Z M123.217422485352,73.8580627441406 L65.4087219238281,73.8580627441406 L65.4087219238281,16.0493698120117 C65.4087219238281,14.6079750061035 66.5772094726563,13.4394950866699 68.0185852050781,13.4394950866699 L125.827285766602,13.4394950866699 L125.827285766602,71.2481994628906 C125.827285766602,72.6895904541016 124.658813476563,73.8580627441406 123.217422485352,73.8580627441406 Z" p-id="8312" fill="#FFFF8429" stroke="Null"></path> <path d="M106.18928527832,69.5517730712891 L119.499649047852,69.5517730712891 C120.616744995117,69.5517730712891 121.522308349609,68.6462097167969 121.522308349609,67.5291290283203 L121.522308349609,37.854866027832 C121.523529052734,37.6714210510254 121.451141357422,37.4951438903809 121.321334838867,37.3655128479004 C119.624908447266,35.7056274414063 117.607482910156,36.8761558532715 117.607482910156,38.5190734863281 L117.607482910156,64.9623107910156 C117.607467651367,65.3348999023438 117.305435180664,65.6369476318359 116.932830810547,65.6369476318359 L105.523773193359,65.6369476318359 C105.34033203125,65.6357269287109 105.164047241211,65.7081146240234 105.034408569336,65.8379211425781 C103.375839233398,67.5278167724609 104.54638671875,69.5517578125 106.18928527832,69.5517578125 Z" p-id="8313" fill="#FFFF8429" stroke="Null"></path>
1
2
3
4③fxMemo1属性设置
Height
:设置控件高度=325
。Width
:设置控件宽度=355
。Opacity
:设置控件透明度=0.9
。Lines
:设置编辑框中显示的文字内容。双击该属性或者点击属性右侧的[...]
打开编辑器,输入内容。参考内容如下图。

④:TfxSuperButton组件,控件名称为fxSuperButtonTran
。
⑤:TfxMemo组件,控件名称为fxMemo1
。
fxRunFrame属性设置
Height
:设置页面高度=800
。Width
:设置页面宽度=400
。
④fxSuperButtonTran属性设置
Height
:设置控件高度=150
。Width
:设置控件宽度=150
。ButtonType
:设置按钮类型,设置为TfxSvgButton
。Name
:设置控件名称=fxSuperButtonTran
。Opactiy
:设置控件透明度=0.9
。ButtonType.Text
:设置按钮文本=传送界面
。ButtonType.SvgData
:设置SVG数据,其数据内容如下。
<path d="M99.0241088867188,68.1489410400391 M97.0504913330078,68.1489410400391 C97.0504913330078,69.2389373779297 97.9341278076172,70.1225433349609 99.0241088867188,70.1225433349609 C100.114120483398,70.1225433349609 100.99772644043,69.2389373779297 100.99772644043,68.1489410400391 C100.99772644043,67.0589294433594 100.114120483398,66.1753234863281 99.0241088867188,66.1753234863281 C97.9341278076172,66.1753234863281 97.0504913330078,67.0589294433594 97.0504913330078,68.1489410400391 Z" p-id="8310" fill="#FFFF8429" stroke="Null"></path> <path d="M84.6707000732422,112.386779785156 C84.6707000732422,114.467224121094 82.9841766357422,116.153747558594 80.9037322998047,116.153747558594 L23.6203079223633,116.153747558594 L23.6203079223633,58.8703308105469 C23.6203079223633,56.7909126281738 25.3052387237549,55.104808807373 27.384651184082,55.1033554077148 L47.9615287780762,55.1033554077148 L47.9615287780762,44.7090034484863 L27.5162200927734,44.7090034484863 C19.6235008239746,44.7104530334473 13.2259521484375,51.1091766357422 13.2259540557861,59.0018997192383 L13.2259540557861,126.6796875 L80.9037322998047,126.6796875 C88.7974700927734,126.6796875 95.1966094970703,120.280532836914 95.1966094970703,112.386779785156 L95.1966094970703,91.8125305175781 L84.6707000732422,91.8125305175781 Z" p-id="8311" fill="#FF48BCFF" stroke="Null"></path> <path d="M54.8033714294434,16.157413482666 L54.8033714294434,84.9706878662109 L123.616653442383,84.9706878662109 C130.883270263672,84.9706878662109 136.774047851563,79.0799255371094 136.774047851563,71.8132781982422 L136.774047851563,3 L67.9607849121094,3 C60.694149017334,3 54.8033714294434,8.89077568054199 54.8033714294434,16.157413482666 Z M123.616653442383,74.4447479248047 L65.3293151855469,74.4447479248047 L65.3293151855469,16.157413482666 C65.3293151855469,14.7040853500366 66.5074768066406,13.5259304046631 67.9607849121094,13.5259304046631 L126.248123168945,13.5259304046631 L126.248123168945,71.8132781982422 C126.248123168945,73.2666015625 125.069976806641,74.4447479248047 123.616653442383,74.4447479248047 Z" p-id="8312" fill="#FFFF8429" stroke="Null"></path> <path d="M106.447525024414,70.1027984619141 L119.868087768555,70.1027984619141 C120.994445800781,70.1027984619141 121.907501220703,69.1897430419922 121.907501220703,68.0634155273438 L121.907501220703,38.1434516906738 C121.908737182617,37.9584884643555 121.835739135742,37.7807540893555 121.704864501953,37.6500473022461 C119.994384765625,35.9764213562012 117.960266113281,37.1566390991211 117.960266113281,38.813159942627 L117.960266113281,65.475341796875 C117.960250854492,65.8510131835938 117.655715942383,66.1555633544922 117.280029296875,66.1555633544922 L105.776504516602,66.1555633544922 C105.591537475586,66.1543273925781 105.413803100586,66.2273254394531 105.283081054688,66.3582000732422 C103.610778808594,68.0620880126953 104.791030883789,70.102783203125 106.447525024414,70.102783203125 Z" p-id="8313" fill="#FFFF8429" stroke="Null"></path>
1
2
3
4⑤fxMemo1属性设置
Height
:设置控件高度=315
。Width
:设置控件宽度=310
。Opacity
:设置控件透明度=0.8
。Lines
:设置编辑框中显示的文字内容。双击该属性或者点击属性右侧的[...]
打开编辑器,输入内容。参考内容如下图。

⑥:TfxSuperButton组件,控件名称为fxSuperButtonTran
。
⑦:TfxMemo组件,控件名称为fxMemo1
。
fxRunFrame属性设置
Height
:设置页面高度=480
。Width
:设置页面宽度=320
。
⑥fxSuperButtonTran属性设置
Height
:设置控件高度=150
。Width
:设置控件宽度=150
。ButtonType
:设置按钮类型,设置为TfxSvgButton
。Name
:设置控件名称=fxSuperButtonTran
。Opactiy
:设置控件透明度=0.9
。ButtonType.Text
:设置按钮文本=传送界面
。ButtonType.SvgData
:设置SVG数据,其数据内容如下。
<path d="M99.0241088867188,68.1489410400391 M97.0504913330078,68.1489410400391 C97.0504913330078,69.2389373779297 97.9341278076172,70.1225433349609 99.0241088867188,70.1225433349609 C100.114120483398,70.1225433349609 100.99772644043,69.2389373779297 100.99772644043,68.1489410400391 C100.99772644043,67.0589294433594 100.114120483398,66.1753234863281 99.0241088867188,66.1753234863281 C97.9341278076172,66.1753234863281 97.0504913330078,67.0589294433594 97.0504913330078,68.1489410400391 Z" p-id="8310" fill="#FFFF8429" stroke="Null"></path> <path d="M84.6707000732422,112.386779785156 C84.6707000732422,114.467224121094 82.9841766357422,116.153747558594 80.9037322998047,116.153747558594 L23.6203079223633,116.153747558594 L23.6203079223633,58.8703308105469 C23.6203079223633,56.7909126281738 25.3052387237549,55.104808807373 27.384651184082,55.1033554077148 L47.9615287780762,55.1033554077148 L47.9615287780762,44.7090034484863 L27.5162200927734,44.7090034484863 C19.6235008239746,44.7104530334473 13.2259521484375,51.1091766357422 13.2259540557861,59.0018997192383 L13.2259540557861,126.6796875 L80.9037322998047,126.6796875 C88.7974700927734,126.6796875 95.1966094970703,120.280532836914 95.1966094970703,112.386779785156 L95.1966094970703,91.8125305175781 L84.6707000732422,91.8125305175781 Z" p-id="8311" fill="#FF48BCFF" stroke="Null"></path> <path d="M54.8033714294434,16.157413482666 L54.8033714294434,84.9706878662109 L123.616653442383,84.9706878662109 C130.883270263672,84.9706878662109 136.774047851563,79.0799255371094 136.774047851563,71.8132781982422 L136.774047851563,3 L67.9607849121094,3 C60.694149017334,3 54.8033714294434,8.89077568054199 54.8033714294434,16.157413482666 Z M123.616653442383,74.4447479248047 L65.3293151855469,74.4447479248047 L65.3293151855469,16.157413482666 C65.3293151855469,14.7040853500366 66.5074768066406,13.5259304046631 67.9607849121094,13.5259304046631 L126.248123168945,13.5259304046631 L126.248123168945,71.8132781982422 C126.248123168945,73.2666015625 125.069976806641,74.4447479248047 123.616653442383,74.4447479248047 Z" p-id="8312" fill="#FFFF8429" stroke="Null"></path> <path d="M106.447525024414,70.1027984619141 L119.868087768555,70.1027984619141 C120.994445800781,70.1027984619141 121.907501220703,69.1897430419922 121.907501220703,68.0634155273438 L121.907501220703,38.1434516906738 C121.908737182617,37.9584884643555 121.835739135742,37.7807540893555 121.704864501953,37.6500473022461 C119.994384765625,35.9764213562012 117.960266113281,37.1566390991211 117.960266113281,38.813159942627 L117.960266113281,65.475341796875 C117.960250854492,65.8510131835938 117.655715942383,66.1555633544922 117.280029296875,66.1555633544922 L105.776504516602,66.1555633544922 C105.591537475586,66.1543273925781 105.413803100586,66.2273254394531 105.283081054688,66.3582000732422 C103.610778808594,68.0620880126953 104.791030883789,70.102783203125 106.447525024414,70.102783203125 Z" p-id="8313" fill="#FFFF8429" stroke="Null"></path>
1
2
3
4⑦fxMemo1属性设置
Height
:设置控件高度=200
。Width
:设置控件宽度=260
。Opacity
:设置控件透明度=0.8
。Lines
:设置编辑框中显示的文字内容。双击该属性或者点击属性右侧的[...]
打开编辑器,输入内容。参考内容如下图。
# 3. 程序设计
点击程序设计界面右下角的按钮,切换至单元选择界面,勾选需要使用的单元。程序主页窗体Home
与ThirdPage
需要引用ufxVirtualForm
单元。
# 3.1. 程序初始设置
该程序无初始设置。
# 3.2. 事件设置
- ①fxSuperButtonPage-OnClick事件
点击按钮,以页面模式打开副页面。
Procedure fxSuperButtonPageOnClick(Sender: TObject);
//以页面模式打开第二个窗体,并传值
var
Page: TfxRunFrame;
Begin
Page := fxOpenFrameToPage('SecondPage'); //第二个窗体模块名称为SecondPage
Page.TagString := fxMemo1.Lines.Text;
TfxMemo(Page.FindComponent('fxMemo1')).Lines.Add(TfxRunFrame(Page).TagString);
End;
2
3
4
5
6
7
8
9
- ②fxSuperButtonForm-OnClick事件
点击按钮,以窗体模式打开副页面。
Procedure fxSuperButtonFormOnClick(Sender: TObject);
//以窗口模式打开第二个窗体,并传值
var
Form: TfxRunFrame;
Begin
Form := fxOpenFrameToForm('ThirdPage',[syFree],'');// 第三个窗体模块名称为ThirdPage
Form.TagString := fxMemo1.Lines.Text;
TfxMemo(Form.FindComponent('fxMemo1')).Lines.Add(TfxRunFrame(Form).TagString);
End;
2
3
4
5
6
7
8
9
- ④fxSuperButtonTran-OnClick事件
点击按钮,将副页面中的内容回传至主界面并切换至主界面。
Procedure fxSuperButtonTranOnClick(Sender: TObject);
//将内容传递回主界面
var
Page: TfxRunFrame;
Begin
Page := fxOpenFrameToPage('Home');
Page.TagString := fxMemo1.Lines.Text;
TfxMemo(Page.FindComponent('fxMemo1')).Lines.Add(TfxRunFrame(Page).TagString);
End;
2
3
4
5
6
7
8
9
- ⑥fxSuperButtonTran-OnClick事件
点击按钮,将副页面窗口中的数据回传至主界面并关闭窗口。
Procedure fxSuperButtonTranOnClick(Sender: TObject);
//将内容传递回主界面
var
Page: TfxRunFrame;
Begin
Page := fxOpenFrameToPage('Home');
Page.TagString := fxMemo1.Lines.Text;
TfxMemo(Page.FindComponent('fxMemo1')).Lines.Add(TfxRunFrame(Page).TagString);
//尽在Form模式下的窗体可以使用,Page模式不适用。
GetVirtualForm(self).ModalResult := mrNone;
End;
2
3
4
5
6
7
8
9
10
11
# 4. 运行结果
使用鼠标在 PinToo 菜单,点击[保存至数据库]
按钮,将其保存至数据库,点击[调试运行]
确认能够正常打开。

通过同步中心,将程序上传至手机PinToo运行;同步时,请确保手机已经运行PinToo,并且已经登陆。




点击主页面的[传送界面(页面模式)]
,打开新的页面,主页面编辑框中的内容会传递给新的页面的编辑框中。在新页面点击[传送界面]
,返回到主页面,将页面编辑框中的内容传递给主页面。
点击主页面的[传送界面(窗体模式)]
,打开新的窗体,主页面编辑框中的内容会传递给新的窗体的编辑框中,在编辑框中点击[传送界面]
,关闭该窗体返回到主页面,将窗体编辑框中的内容传递给主页面。