求主界面开发方法

sun8330 2012-10-24 11:10:09


要求:能根据不同分辨率自行调整大小

回报:要分要钱都可以,可以开价
...全文
397 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnlxc 2014-03-06
  • 打赏
  • 举报
回复
十豆三 还在玩VFP吗?
sun8330 2012-10-30
  • 打赏
  • 举报
回复
谢谢十豆三
十豆三 2012-10-30
  • 打赏
  • 举报
回复
我的习惯,只是习惯,不是必须:
1、不用 _Screen
2、主表单的 Desktop 属性为 .T.
3、主表单的 ShowWindow 属性为 2
sun8330 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
1、用 ActiveX 控件,还是自己做,都可以。用 ActiveX 控件省事,自己做灵活。
2、遮挡问题,你需要自己控制,在表单改变大小时,表单如果遮挡了,需要再把状态栏的高度减掉。其实我做的没有考虑这么多,遮挡就遮挡了,没刻意显示出来,
[/Quote]
我说的遮挡,可能还涉及到主表单的属性问题,我之前用表单做主界面,主表单的showwindow属性是0,运行时还是在_Screen中运行的,如果把Statusbar放入主表单时,弹出的表单如果放大的话就一定会遮住主表单的底部状态栏的,所以,我想问一下,如果用表单做主界面,主界面的desktop属性和ShowWindow属性要如何设比较好! 看一下十豆三大师是否有更好的做法,谢谢!

十豆三 2012-10-26
  • 打赏
  • 举报
回复
1、用 ActiveX 控件,还是自己做,都可以。用 ActiveX 控件省事,自己做灵活。
2、遮挡问题,你需要自己控制,在表单改变大小时,表单如果遮挡了,需要再把状态栏的高度减掉。其实我做的没有考虑这么多,遮挡就遮挡了,没刻意显示出来,
sun8330 2012-10-26
  • 打赏
  • 举报
回复
非常谢谢十豆三的经典回复,不过还想问一下,希望能得到你的指点:

1.工具栏和状态栏是不是用第三方控件比较好? 是否能提供简单的代码给我测试一下?谢谢!
2.用第三方控件做状态栏是比较好控制,但很容易被弹出来的表单给档住了,是否有办法让上存表单不档住底存表单的状态栏?
sun8330 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
5楼已经说了

也可以使用皮肤控件
不过还是自己设计比较适用
控件+图片,各种方式的组合,叠加
以前看过国外的一个示例
基本都是vfp基本控件+大小图片实现的,挺漂亮
[/Quote]
能否找出来分享一下?
十豆三 2012-10-25
  • 打赏
  • 举报
回复
十豆三 2012-10-25
  • 打赏
  • 举报
回复

根据不同分辨率自行调整大小、位置可以用 vfp9.0 的 anchor 属性,如果不是 vfp9.0,就需要自己写代码实现
左边的树和右边的的容器中间可以左右拖动(分隔条),用 vfp 代码即可。
下面是例子代码,将以下代码粘帖到一个prg中后运行,然后左右拖动分隔条,也可最大化或手动改变表单大小。
*--vfp版本:vfp9.0(SP2 7423)

Public oform1

oform1=Newobject("form1")
oform1.Show
Return

Define Class form1 As Form

Top = 6
Left = 10
Height = 403
Width = 448
DoCreate = .T.
Caption = "by:十豆三(表单分隔条示例)"
Name = "Form1"

Add Object container1 As Container With ;
Anchor = 7, ;
Top = 2, ;
Left = 2, ;
Width = 133, ;
Height = 399, ;
SpecialEffect = 1, ;
BackColor = Rgb(200,200,255), ;
Name = "Container1"

Add Object list1 As ListBox With ;
Anchor = 14, ;
Height = 63, ;
Left = 143, ;
Top = 338, ;
Width = 301, ;
ItemBackColor = Rgb(150,255,150), ;
Themes = .F., ;
Name = "List1"

Add Object grid1 As Grid With ;
Anchor = 15, ;
Height = 332, ;
Left = 143, ;
Top = 2, ;
Width = 303, ;
BackColor = Rgb(255,200,200), ;
Name = "Grid1"

Add Object shape1 As Shape With ;
Top = -12, ;
Left = 136, ;
Height = 448, ;
Width = 7, ;
Anchor = 7, ;
BorderStyle = 1, ;
MousePointer = 9, ;
SpecialEffect = 0, ;
BackColor = Rgb(0,255,255), ;
Name = "Shape1"

Procedure shape1.Init
This.Move(This.Left,-10,This.Width,Thisform.Height+20)
Endproc

Procedure shape1.MouseMove
Lparameters nButton, nShift, nXCoord, nYCoord &&系统代码
If (nButton=1 And Thisform.CurrentX#0) And (Thisform.CurrentX<>nXCoord) And Between(nXCoord,40,Thisform.Width-40) && nButton=1 只允许鼠标左键移动,Between 是移动范围
This.Left=This.Left+(nXCoord-Thisform.CurrentX)
Thisform.Container1.Width=Thisform.Container1.Width+(nXCoord-Thisform.CurrentX)
Thisform.Grid1.Move(Thisform.Grid1.Left+(nXCoord-Thisform.CurrentX),Thisform.Grid1.Top,Thisform.Grid1.Width-(nXCoord-Thisform.CurrentX))
Thisform.List1.Move(Thisform.List1.Left+(nXCoord-Thisform.CurrentX),Thisform.List1.Top,Thisform.List1.Width-(nXCoord-Thisform.CurrentX))
Thisform.CurrentX=nXCoord
Endif
Endproc

Procedure shape1.MouseDown
Lparameters nButton, nShift, nXCoord, nYCoord &&系统代码
If nButton=1 && 只允许鼠标左键移动
Thisform.CurrentX=nXCoord && 只记录水平位置,也就是只能左右移动。
Endif
Endproc

Enddefine

taohua300 2012-10-24
  • 打赏
  • 举报
回复
5楼已经说了

也可以使用皮肤控件
不过还是自己设计比较适用
控件+图片,各种方式的组合,叠加
以前看过国外的一个示例
基本都是vfp基本控件+大小图片实现的,挺漂亮
sun8330 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 4 楼 的回复:
我主要是想知道这种界面是如何做出来的


方法多种多样啊
[/Quote]
那可不可以麻烦你指点一下如何做?
taohua300 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我主要是想知道这种界面是如何做出来的
[/Quote]

方法多种多样啊
sun8330 2012-10-24
  • 打赏
  • 举报
回复
1.整个背景是用表单还是用_screen做?
2.左边的树和右边的的容器中间可以左右拖动是怎么做的?
3.哪位可以提供范例程序?
dfwxj 2012-10-24
  • 打赏
  • 举报
回复
用图片和控件做吧,工具栏、状态栏、树形
sun8330 2012-10-24
  • 打赏
  • 举报
回复
我主要是想知道这种界面是如何做出来的
taohua300 2012-10-24
  • 打赏
  • 举报
回复
vfp 的 Sysmetric 函数可以获取屏幕元素的大小
根据这个值调整表单的大小就行了

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧