Delphi Tscrollbox 内容 在win7+系统中 最大高度问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi Tscrollbox 内容 在win7+系统中 最大高度问题相关的知识,希望对你有一定的参考价值。
我在win7系统中用delphi7 新建窗体 添加了Tscrollbox,再往TScrollbox中添加TPanel控件 发现 到了一定高度以后 tpanel的top 不管怎么改 就只有32767了 后面的tpanel都叠在同一个地方 这怎么办刚学delphi 不懂代码如下:procedure TForm1.FormCreate(Sender: TObject);vari:integer;MyPanel: TPanel;begin i:=0; while i<70 do begin MyPanel:= TPanel.Create(nil); MyPanel.Caption := 'this is page '+inttostr(i+1); with MyPanel do begin Parent := ScrollBox1; Top := 5 + (500+5)*i; Left := 5; Width := 300; Height := 500; BorderStyle := bsSingle; BevelOuter := bvNone; Color := clWhite; ParentCtl3D := false; end; i := i+1; end;end;具体执行情况效果见附图
参考技术A这个的确是个问题。
控件top属性是integer,理论取值范围是-2147483648 ~2147483647 ;
但实际取值范围是 -32768~32767,是smallInt。
你只能换别的办法实现效果了。跟系统、delphi版本没关系。xe版本也只能到32767。
追问别的办法?能给个思路么
追答一般这种超长的可以用分页显示。比如用2个scorllbox
delphi一次性批量在TScrollBox中显示N个复选框TCheckBox的源码
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) ScrollBox1: TScrollBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; numPerCol,col: Integer; _left: Integer; _top: Integer; row: Integer; recnum, vspace: Integer; chk: TCheckBox; begin col := 1; row := 1; recnum := 0; vspace := 15; //行间距 _left := 10; _top := 10; numPerCol:=10; //每列显示10个checkbox for i := 1 to 35 do begin inc(recnum); chk := TCheckBox.Create(self.ScrollBox1); chk.Parent := self.ScrollBox1; chk.Caption := IntToStr(i); chk.Tag := i; if (recnum mod numPerCol = 0) then begin chk.Left := _left * col + chk.Width * (col - 1); if col > 1 then chk.Top := _top + chk.Height * (row - 1) + vspace * (row - 1) else chk.Top := _top * (col) + chk.Height * (row - 1) + vspace * (row - 1); inc(col); row := 1; end else begin chk.Left := _left * col + chk.Width * (col - 1); if col > 1 then chk.Top := _top + chk.Height * (row - 1) + vspace * (row - 1) else chk.Top := _top * (col) + chk.Height * (row - 1) + vspace * (row - 1); inc(row); end; end; end; end.
代码的效果图如下:
以上是关于Delphi Tscrollbox 内容 在win7+系统中 最大高度问题的主要内容,如果未能解决你的问题,请参考以下文章
Delphi的控件TScrollBox的问题,隐藏滚动条后, 这个不管用SendMessage咋办啊?? 上滚,下滚,上一页。。