ITPub博客

首页 > 数据库 > Oracle > Oracle Form二次开发实战总结 第四章 布局方法

Oracle Form二次开发实战总结 第四章 布局方法

原创 Oracle 作者:YoungEric 时间:2007-08-30 17:07:16 0 删除 编辑

[@more@]

一个Form. Module可能包含了多个window,多个Data Block,多个canvas,在对象众多的情况下,布局方法遵循一定的规则可让你事半功倍。

如图4.1,一般来说布局,应按照windows-canvases-data block-items的顺序,先简单说明下各对象与布局相关的属性。

图4.1

Window

Property Note

X Position Form启动时X轴坐标

Y Position Form启动时Y轴坐标

Width Form实际宽度

Height Form实际高度

Canvas

Property Note

Window 指定Canvas所在的window

ViewX Position on Canvas 可见部分相对于CanvasX轴坐标,通常置0

View Y Position on Canvas 可见部分相对于CanvasY轴坐标,通常置0

Width Canvas实际宽度

Height Canvas实际高度

Canvas一般都要设置以上属性,但是根据Property Class的不同,几类canvas还是有所区别。

1 Content Canvas

又称基础画布或内容画布,就像刷地板要先上底漆一样,是必不可少的。一般情况下Content Canvas的宽和高应设置和windows的宽高一致或略小于,我的建议是设成一样。

2 CANVAS_STACKED_FIXED_FIELD Canvas

译作固定的堆叠画布,顾名思义,固定意味着该画布的尺寸是固定的,千万不要误以为该画布会永远锁定在界面的最上层

Property Note

ViewportX Position 可见部分相对于Form源点的X轴坐标,修改该值影响

对象在layout窗体上的位置

ViewportY Position 可见部分相对于Form源点的Y轴坐标,修改该值影响对

象在layout窗体上的位置

ViewportWidth 可见部分的宽度,在layout窗体上显示的宽度,<=

Canvas Width

ViewportHeight 可见部分的高度,在layout窗体上显示的宽度,参见图

4.2

图4.2

3 CANVAS_STACKED Canvas

译作堆叠画布。在需要显示得列太多,界面上无法一次排开的情况,需要使用滚动条时多用到这种画布。这种类型的画布,一般Canvas的宽和高要比Viewport的宽和高要大得多,另外还要设置Show Horizontal Scroll Bar属性为Yes,允许使用横向滚动条。

4 Tab_Canvas

译作页签画布,此类画布使用起来比较简单再此就不再赘述了比较简单,与之相关的触发器我会在后面的章节总结。

关于调整布局的一些技巧

Form. builder中选Format--Layout Option—Ruler,弹出4.3窗体,UnitsCharacter CellsCharacter Cell Size不用管它,不要修改;Grid Space建议选10.5Number of Snap Points Per Grid Spacing建议选1;具体含义是采用Character Cells方式进行位置调整,Grid Space表示每个Grid的幅度,Number of Snap Points Per Grid Spacing我的理解是鼠标选中后方向键调整多少次才能达到一个Grid Space的幅度。所以Grid Space越大,Number of Snap Points Per Grid Spacing越小表明每次调整的幅度越大,设成上面的数字是个人的经验,可据需要而定,很多时候我都是修改对象坐标属性,然后利用对齐功能来调位置的。

图4.3

对于CANVAS_STACKED CANVAS来说,一般都会使用横向滚动条,注意在Units选择Character Cells(如图4.3),应设置Viewport的下沿的Y坐标比比该画布上位置最低Item下沿Y座标还要低10-12个刻度,如图4.2所示下沿间距。

对于复杂的界面,可能同时使用4种类型的Canvas,甚至Tab Canvas上还放置了堆叠画布,整个显得非常Layout界面复杂而混乱,此时可在使用Form. builderView菜单下的3个选项1Show Canvas2 Show Views3 Stacked Canvas。选中Show Canvas会显示当前Canvas的实际大小的框架(widthheight),并显示底色;选中Show Views会显示当前CanvasViewport的框架(Viewport widthViewport height),此选项的效果在对象为堆叠画布时显得非常直观;Stack Canvas选项在画布互相堆叠时尤为好用,但是使用时一定要注意技巧。

图4.4

假如在一个基础画布上要显示固定堆叠画布SKN_HEADER(A),页签画布SKN_TAB_CANVAS(B)和另一个固定堆叠画布BLUECARD_STACKED_CANVAS(C),想把A放在最底层,B次之,C在最上面。那么在图4.4的界面上必须按住CTRL键,依次先选中A再选中B最后选中C,注意次序不能有任何的颠倒,否则点OK按钮后会发现有些Canvas看不见了。操作的原则是:先选择最底层,再选择此底层,最后选择最上层。当然你分步完成上述调整也没问题,但是一定要确保选择次序符合上述原则。

Block

注意设置Number of Records Dispalyed和相关的Scrollbar属性。

Item

Item和布局属性相关的属性有Property Class和相关prompt属性。我一般的做法是根据不同类型字段先批量修改Property ClassFormat mask,第二步根据Block的设置批量设置ITEM的相关prompt属性如:

Property Note

width 日期类型1.2,时间类型.8,日期加时间1.7

,按钮列一般为1.2

height 选中Property Class一般不许修改,

button.3,其他为.25

prompt justification Right(数字型字段),其他选Start

prompt attachment edge 单行块一般选Start,单行块一般选Top

prompt attachment offset .025

prompt alignment offset .025

每个ITEMprompt的属性值,我会在layout窗口中一个个修改。

Navigate相关

无论是Block还是Item都有一些与导航相关的属性,决定了界面上按tab键,光标的移动方式。

Block

Property Note

Navigate Style Same Record/Change Record/

Change Data Block

Previous Navigation Data Block 比如关闭一个window后,光标会落到

Previous Block上的第一个可导航Item

Next Navigation Data Block 当导航方式为Change Data Block时,光标落

在前一个块最后一个可导航Item时,再按tab

键,光标就会跳到Next Block

Previous Navigation Data BlockNext Navigation Data Block属性为空时,系统会自动根据Form. Builder对象树各block的排列顺序,自动决定各Block的导航顺序。这种默认的方式可能会带来其他的问题,比如关闭窗体时,光标落在不该落到的块上,最好指定一下.

Item

Property Note

Keyboard Navigable 设置Item是否可使用tab键导航

Previous Navigation Item 前一个可导航Item(可能会向前导航到前一个块

的最后一个可导航Item

Next Navigation Item 后一个可导航Item时(可能会向后导航到后一个

块的第一个可导航Item

注意当Previous Navigation ItemNext Navigation Item属性为空时,系统会自动根据Form. Builder对象树各blockItem的排列顺序,自动决定各Item的导航顺序。所以当我们不想去设置Item的导航顺序,又希望界面上各字段能够按照从上到下从左到右的顺序导航,那么就必须合理安排各Item的排列顺序,切记。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10484922/viewspace-967097/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-18

  • 博文量
    79
  • 访问量
    211699