以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]定制窗口宽高  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=142168)

--  作者:江南小镇
--  发布时间:2019/10/20 9:55:00
--  [求助]定制窗口宽高
老师,添加下面代码后报错


e.Form.baseform.width= 1300   \'窗口宽
e.Form.baseform.height= 600  \'窗口高



.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.4.22.1
错误所在事件:窗口,系统,SizeChanged
详细错误信息:
未将对象引用设置到对象的实例。


这是窗口,系统,SizeChanged


Dim spc1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
Dim btn As WinForm.Button = e.Form.Controls("隐藏分区")
If spc1.Panel1.Collapsed = True Then
    btn.Left = spc1.Left + spc1.SplitterDistance - 5
Else
    btn.Left  = spc1.Left + spc1.SplitterDistance
End If


[此贴子已经被作者于2019/10/20 10:02:34编辑过]

--  作者:有点蓝
--  发布时间:2019/10/20 21:55:00
--  
代码添加到哪里?窗口是什么类型?模式?停靠?
--  作者:江南小镇
--  发布时间:2019/10/20 23:01:00
--  
老师,是独立窗口的AfterLoad事件。
--  作者:有点蓝
--  发布时间:2019/10/21 9:12:00
--  
SizeChanged事件

if e.form.width = 0 orelse e.form.height= 0  then return
Dim spc1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
……其它代码

--  作者:江南小镇
--  发布时间:2019/10/21 10:06:00
--  
老师,没有用。


If e.form.width = 0 OrElse e.form.height= 0  Then Return
Dim spc1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
Dim btn As WinForm.Button = e.Form.Controls("隐藏分区")
If spc1.Panel1.Collapsed = True Then
    btn.Left = spc1.Left + spc1.SplitterDistance - 5
Else
    btn.Left  = spc1.Left + spc1.SplitterDistance
End If

--  作者:有点蓝
--  发布时间:2019/10/21 10:18:00
--  
请上传实例测试
--  作者:江南小镇
--  发布时间:2019/10/21 12:29:00
--  
老师,系统窗口定制窗口大小后报错

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table
 
--  作者:有点蓝
--  发布时间:2019/10/21 14:08:00
--  
Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")

\'Dim txt1 As WinForm.Panel
Dim ycfq As WinForm.Button
ycfq = e.Form.CreateControl("隐藏分区", ControlTypeEnum.Button)
ycfq.Top = 400                                                                           \'按钮停靠上下位置
ycfq.text = ">"
ycfq.Height=50                                                                          \'按钮高度
\'ycfq.VisualStyle=IVisualStyle.System
\'ycfq.BackColor = Color.Green
ycfq.VisualStyle = VisualStyleEnum.office2010blue

\'txt1.TopMost = True\'当多个控件的位置重叠时,将此属性设为True,可以确保控件处于最顶端,不会被其他控件遮挡.

sp.TopMost = False
e.form.AddControl(ycfq)
e.form.Controls("隐藏分区").basecontrol.BringToFront \'置前
e.Form.Controls("隐藏分区").Width = 5                                                    \'按钮宽度
e.Form.Controls("隐藏分区").Left = sp.SplitterDistance + sp.Left

sp.Dock = 5
\'sp.SplitterDistance = sp.width /4.1
sp.SplitterDistance = sp.Width * 0.2
sp.BorderStyle = BorderStyle.Fixed3D
\'生成一个面板固定在分区面板"Panel2"中
Dim txt As WinForm.Panel
txt = e.Form.CreateControl("Panel2", ControlTypeEnum.Panel)
txt.Height=120                                                                                                   \'控件高度
txt.BackColor =  Color.SlateGray
txt.Dock = 1
e.Form.Controls("SplitContainer1") .Panel2.AddControl(txt)
\'------------------------------------------------------------------------------------------------
Dim tp As WinForm.PictureBox
tp = e.Form.CreateControl("PictureBox1", ControlTypeEnum.PictureBox)
tp.SizeMode = ImageSizeMode.StretchImage                                                                                                \'控件高度
tp.Dock = 5
tp.Image =getImage("H:\\蓝峰\\Attachments\\图片\\1002.jpg")
e.Form.Controls("Panel2").AddControl(tp)
\'-------------------------------------------------------------------------------------------------------------

\'Dim cls() As color = {color.Tan,color.Azure,color.LavenderBlush,color.Azure,color.PaleVioletRed,color.LightSkyBlue,color.MediumSlateBlue}      \'面板颜色的设置
For i As Integer = 1 To 6                                                                                                                       \'动态生成面板的个数
    txt = e.Form.CreateControl("系统面板" & i, ControlTypeEnum.Panel)                                                                           \'动态生成的面板名称
    \'e.Form.Controls("ListBox1").items.add(txt.name)                                                                                            \'把面板名称赋值给ListBox1控件
    txt.Dock = 5
    \'txt.BackColor =  Color.SlateGray                                                                                                           \'设置面板的统一颜色
    \'txt.BorderStyle = BorderStyle.Fixed3D
    \'txt.backcolor = cls(i)                                                                                                                      \'把颜色赋值给5个面板
    e.Form.Controls("SplitContainer1") .Panel2.AddControl(txt)
Next

e.Form.baseform.width= 1300   \'窗口宽
e.Form.baseform.height= 600  \'窗口高

--  作者:江南小镇
--  发布时间:2019/10/21 17:51:00
--  
谢谢老师