通过读INI关建字动态创建按钮 ( 积分: 20 )

  • 主题发起人 主题发起人 ievfhp
  • 开始时间 开始时间
I

ievfhp

Unregistered / Unconfirmed
GUEST, unregistred user!
INI文件
[INI]
新浪=www.shna.com.cn
网易=www.163.com

如何在一个listbox上创建两个以新浪和网易为名的按钮?并有空一行的距离。
 
INI文件
[INI]
新浪=www.shna.com.cn
网易=www.163.com

如何在一个listbox上创建两个以新浪和网易为名的按钮?并有空一行的距离。
 
先加载,每行定义成字符串,查找等号前面的字符,设为caption.
 
有没有哪个来点代码啊;谢谢啦
 
为什么是Listbox呢,不是Scrollbox

建立的按钮Caption没问题,打开网页我的想法是用在这个按钮的Hint上设置,当然要隐藏Hint,根据Hint打开网页
 
procedure TForm1.DoClick(Sender: TObject);
var
strURL: string;
begin
strURL := TButton(Sender).Hint;
ShellExecute(Handle, 'open', PChar(strURL),'',nil,0);
end;
 
嘿嘿 偶来~
procedure TForm1.urlbuttonclick(Sender:Tobject);
begin
//按钮按下的事件
end;

procedure TForm1.Button1Click(Sender: TObject);
var
h,i:integer;
f:Tinifile;
strlist:Tstringlist;
btn:Tbutton;
fname:string;
begin
fname:='c:/11.ini'; //ini文件位置
strlist:=Tstringlist.Create;
if fileexists(fname) then
try
f:=Tinifile.Create(fname);
f.ReadSection('INI',strlist);
h:=listbox1.Top+1;
for i:=0 to strlist.Count-1 do
begin
btn:=Tbutton.Create(nil);
btn.Left:=listbox1.Left+1;
btn.Width:=listbox1.Width-2;
btn.Top:=h;
btn.Height:=listbox1.Font.Size*2;//这里是设置按钮高度,listbox行高根据字体变化而改变
//我没找到字体大小与行高之间的变化规律,你自己多试试
h:=h+listbox1.Font.Size*4; //空一行,行高同上
btn.OnClick:=urlbuttonclick;
btn.Hint:=f.ReadString('INI',strlist.Strings,'');
btn.Caption:=strlist.Strings;
btn.Parent:=self;
end;
finally
strlist.Free;
f.Free;
end;
end;
 
楼上的,我们两个好几个问题都“配合”默契啊
 
哈哈~~~~类似的问题嘛~~~本来我还想是类似的水平。。。。不过看你的得分。。。嘿嘿,我还差的远。。。。

对于基本控件基本用法我是没事就自己折腾。。。反正软件见的多了什么希奇古怪的都见过,现成的控件在这摆着肯定有方法来实现,至于怎么实现就是自己琢磨的问题了。。

楼主呢? 我要分~~~~~~

另外说一下,我给你的那段代码有个小BUG
倒数第7行:
btn.Parent:=self;
应该是: btn.Parent:=listbox1.Parent;
因为listbox1不能作为容器,而为了让button看着像是在listbox里的所以只能根据listbox的top和left来定位,所以要让button和listbox放到同一个容器里(当然不放同一个容器里也行,不过还要xy的转换,没必要)
 
多人接受答案了。
 
btn:=Tbutton.Create(nil);
把nil修改成ListBox1看
 
后退
顶部