代码:
在主窗体Form1中放置一个ScrollBox1,另生成一窗体
ScrollBox1的AutoScroll属性设为True;
Form2 := TForm2.Create(Application);
Windows.SetParent(Form2.Handle, ScrollBox1.Handle);
Form2.Show;
拖动Form2,当Form2的部分窗体超出ScrollBox1范围时,
ScrollBox1不会出现滚动条,求解决办法。
在主窗体Form1中放置一个ScrollBox1,另生成一窗体
ScrollBox1的AutoScroll属性设为True;
Form2 := TForm2.Create(Application);
Windows.SetParent(Form2.Handle, ScrollBox1.Handle);
Form2.Show;
拖动Form2,当Form2的部分窗体超出ScrollBox1范围时,
ScrollBox1不会出现滚动条,求解决办法。
解决方案 »
- adoquery insert into 出错
- ? 用avicap32.dll截取摄像头的图像怎么设置大小
- 用BDE连接MSSQL怎么用NT认证方式?
- 怎么结束Delphi的调试状态?
- 郁闷啊,为什么这样Copy一副Image也不成功
- GF选择了与我分手,是我的错吗
- 100分求源代码及讲解:UDP数据传输
- 如何实现一个同时只能执行一次的NT service程序?高手来看 (100分)
- 关于数据剥离!!!高手请进!!!
- 谁有 Tasm32.exe 文件????????
- 请问DbGirdeh是什么控件,我在每个控件页中都找不到呀?
- 我在use中使用了comobj,在另外一台机器(没装delphi)上运行需要拷贝什么文件?
不过你这个做法有些点值得商榷:
1.Form本身是有Scroll的
2.如果要把一个Form放到另一个中,为什么不用Frame?
3.不论如何,如果Form2是一个普通的窗体 这段代码可能在Win9x下出错
解决的办法是在TForm2中加入
procedure CreateParams(var Params: TCreateParams);override;procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := WS_CHILD;
end;
form2.Parent:=ScrollBox1;
form2.Show;
form2:=TForm2.Create(Application);
form2.Parent:=ScrollBox1;
form2.Show;
然而这样:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
| |
| 抓你頭 踢你臉,嘴裡唱著心太軟 |
| 先踢腿 後踢背,胯胯軸子踹稀碎; |
| 腰打斷 腿打折,肋巴扇子蹬骨折; |
| 先抽筋 再放血,腦袋瓜子打稀癟! |
| 服不? |
| |
--------------------------------------------------------------------------
| |
| 抓你頭 踢你臉,嘴裡唱著心太軟 |
| 先踢腿 後踢背,胯胯軸子踹稀碎; |
| 腰打斷 腿打折,肋巴扇子蹬骨折; |
| 先抽筋 再放血,腦袋瓜子打稀癟! |
| 服不? |
| |
--------------------------------------------------------------------------逗,有趣!
这种情况,我也赞成是用Frame
改为:Form2.Parent := ScrollBox1;
窗体将无法获得焦点。
form2.Parent:=ScrollBox1;
form2.Show;
这样是可以的
可以使窗体获得焦点,但是现在的问题是当我们把窗口拖动到ScrollBox范围之外时,ScrollBox不会自动出现滚动条,如何解决这个才是关键。
随便问一下,为什不使用MDI来实现呢?
after windows api setparent was called,
thus the orig parent and current parent have no awareness you must call sendmessage send WM_CHANGEUISTATE to it's two parent.