scrollbox中的控件在获得焦点时,如果控件在显示区域外,scrollbox会自动滚动到焦点控件上,如何禁止这种自动滚动? scrollbox中的控件在获得焦点时,如果控件在显示区域外,scrollbox会自动滚动到焦点控件上,如何禁止这种自动滚动? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 scrollbox1.AutoScroll := false; to: lihuasoft(学习低调做人) 这样修改滚动条就没有了,我还想让滚动条存在 你肯定是想要消息拦截之类的实现代码,但是,其实下面这样简单地处理效果看起来是一样的:procedure TForm1.Button2Click(Sender: TObject);begin ScrollBox1.AutoScroll := False;//滚动条消失 Button3.SetFocus;//得到焦点 ScrollBox1.AutoScroll := True;//滚动条又有了,但却没有滚动end;可以吗? 效果是可以实现,但我总不能点击button2来设置button3的setfocus吧 哦,你的意思是用TAB转移焦点?哦,那还真得不行呢... 不过,你的这个需求,有点怪怪的... 能详细讲一下你的需求吗?这样说:“比如说.....” 比如说一个from上放了两个listview,一上一下,窗体上显示不下就会出现一个滚动条,现在点击下面的listview,下面的listview获得焦点后窗体滚动条就会自动跳到最下面,下面的listview就会显示完整.这样就感觉跳来跳去的.现在我是不想在选择listview的时候有滚动条跳来跳去的效果. 下面这个例子中,我没有用ListView试验,只是用几个Edit试验的,你试一下行不。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls;type TForm1 = class(TForm) ScrollBox1: TScrollBox; Button1: TButton;//注意这个Button和下面的几个Edit都是在ScrollBox里的。 Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Timer1: TTimer; procedure WhenFocus(sender:tobject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}var B : boolean;procedure TForm1.WhenFocus(Sender : TObject);begin with TWinControl(Sender) do begin if Left + Width > ScrollBox1.Width then begin ScrollBox1.AutoScroll := False; B := True; Timer1.Enabled := True; end; end;end;procedure TForm1.FormCreate(Sender: TObject);begin button1.OnEnter := WhenFocus; edit1.OnEnter := WhenFocus; edit2.OnEnter := WhenFocus; edit3.OnEnter := WhenFocus; Timer1.Interval := 10; Timer1.Enabled := false;end;procedure TForm1.Timer1Timer(Sender: TObject);begin if B then ScrollBox1.AutoScroll := True; Timer1.Enabled := False;end;end. 把3个Edit中的任一二个拖到SCrollBox里的不可见区域。运行后,按下TAB键转移焦点。 我是把Edit往右拖试验的,不是上下拖遮起来....俺没招了....撤了..... to: lihuasoft(学习低调做人) 哈哈,谢谢你,看看其他朋友有没有办法,要是有人解决了我结帖的时候一样给你分,非常感谢你的帮忙. to: lihuasoft(学习低调做人) 哥们,问题解决了,谢谢你 如何通过ScriptControl访问js中的数组元素? 有请《无条件为你》进来接200分,顺便散分 在线急等(200分求救),对corba熟悉的朋友帮忙看看。这个问题怎么解决? 求教:如何根据数据值的不同来更改报表字体的属性? dxdbgrid的自动换行问题 难道真的没有人会吗? ClientDataSet不能保存数据? scrollbox中多个imag 怎么得到时焦点 返回是哪个IMAG 怎样才能打印整个panle出来? 举手之劳:怎样格式化软盘? 关于控件获得焦点后滚动条自动滚动的问题(在线) 主板序列号
这样修改滚动条就没有了,我还想让滚动条存在
begin
ScrollBox1.AutoScroll := False;//滚动条消失
Button3.SetFocus;//得到焦点
ScrollBox1.AutoScroll := True;//滚动条又有了,但却没有滚动
end;可以吗?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Button1: TButton;//注意这个Button和下面的几个Edit都是在ScrollBox里的。
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Timer1: TTimer;
procedure WhenFocus(sender:tobject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}var
B : boolean;procedure TForm1.WhenFocus(Sender : TObject);
begin
with TWinControl(Sender) do
begin
if Left + Width > ScrollBox1.Width then
begin
ScrollBox1.AutoScroll := False;
B := True;
Timer1.Enabled := True;
end;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
button1.OnEnter := WhenFocus;
edit1.OnEnter := WhenFocus;
edit2.OnEnter := WhenFocus;
edit3.OnEnter := WhenFocus;
Timer1.Interval := 10;
Timer1.Enabled := false;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if B then ScrollBox1.AutoScroll := True;
Timer1.Enabled := False;
end;end.
哈哈,谢谢你,看看其他朋友有没有办法,要是有人解决了我结帖的时候一样给你分,非常感谢你的帮忙.
哥们,问题解决了,谢谢你