一个不知道能不能实现的问题![在线等待]

TangDY 2003-08-21 01:16:19
请问一下高手:

能不能把一个窗口的名字如:w_Main这个窗口的Name属性值即'w_Main'保存在一定INI文件内,要打开这个窗口时只需从INI文件中调出这个窗口的名字就可以打开这个窗口!

简单点来说说是怎么让这个窗口的名称用变量的形式来调用!!

请高手给出实例~~~~


请高手帮帮忙!小弟感激不尽!![在线等待]
...全文
47 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
IORILI 2003-08-21
  • 打赏
  • 举报
回复
改正ss:=form1.Name;为ss:=form2.name;
IORILI 2003-08-21
  • 打赏
  • 举报
回复
当然 要在前面声明iniMyFile了,再加inifiles单元 一切ok
IORILI 2003-08-21
  • 打赏
  • 举报
回复
procedure TForm2.FormCreate(Sender: TObject);
var

ss:string;
begin
ss:=form1.Name;
iniMyFile := TIniFile.Create('e:\1.ini'); //form2保存到ini文件中
iniMyFile.WriteString('x','name', ss);
inimyfile.free;
end;
//form2是activeform,从ini文件中动态创建
procedure TForm1.Button2Click(Sender: TObject);
var
me:string;
name:tform;
begin
iniMyFile := TIniFile.Create('e:\1.ini');
me:=iniMyFile.readstring('x','name','');
name:=tform.create(owner);
name.Name :=me;
name:=tform2.create(owner);
name.Show ;
inimyfile.free;
end;

实现不了你杀了我,但是实现了,要给高分,因为试了好久 ^_^
jacket008 2003-08-21
  • 打赏
  • 举报
回复
上面的formname:=kminifile.readstring('form','formname','');

改为formname:=forminifile.readstring('form','formname','');

jacket008 2003-08-21
  • 打赏
  • 举报
回复
inifilename:=ExtractFilePath(Application.ExeName)+'form.ini';
forminifile:=tinifile.create(inifilename);
formname:=kminifile.readstring('form','formname','');
if application.FindComponent(formname)=nil then
创建窗体
yagi1976 2003-08-21
  • 打赏
  • 举报
回复
越说越乱.
cobi 2003-08-21
  • 打赏
  • 举报
回复
根据你的要求,hch_45(んこん) 的程序代码其实已经能够实现了
不过如果你的窗体很多的话,那么动态创建应该是最好的解决方法
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
TangDY (Tang) (▲):
w_Main本身只是一个变量,所以还不如存储它的类名,比如:TForm1。
然后是有办法通过'TForm1'这个字符串来创建它的实例并显示出来的。

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
honkily 2003-08-21
  • 打赏
  • 举报
回复
还是不明白,没有思路
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
如果换个角度,比如象 hch_45(んこん) (★) 说的那样比较名字或者类名,基本上可以间接解决这个问题。

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
搂住主要的意思是说:
通过一个字符串来引用一个变量。比如:
var
varName: String;
OneVar: Integer;
begin
varName := 'OneVar';
//那么现在他想通过varName来引用OneVar这个变量!
end;

直接实现这一功能,我目前还没有办法,尽管我曾经非常想实现这个功能!

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
TangDY 2003-08-21
  • 打赏
  • 举报
回复
各位大哥我不是动态创建,我要打开特定的窗口!
如:我现在有一个窗口叫w_Main
我现在把这个窗口的名字保存在了一个INI文件中,
我要怎么才能把从INI文件中读取的这个窗口打开??
gardenyang 2003-08-21
  • 打赏
  • 举报
回复
建议你还是根据参数动态改变你的固定窗口的设置,这样好像还节省内存,还能提高速度,而且还好控制一些。可以在ini文件中写入一些格式要求,或者可以在文件中写入一些控件的位置,信息等,在显示的过程中动态创建出来
hch_45 2003-08-21
  • 打赏
  • 举报
回复
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); //这个不能省
Application.Run;
end.




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
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
form_var : TForm;
i : integer;
begin
for i := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[i].Name = 'Form2' then //Form2你可以从INI读到的String就行了
begin
form_var := Screen.Forms[i];
form_var.ShowModal;
break;
end;
end;
end;

end.
moeryang 2003-08-21
  • 打赏
  • 举报
回复
动态创见这个窗体
TonyWzz 2003-08-21
  • 打赏
  • 举报
回复
不明白,是不是用窗口名称做参数打开特定窗口?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧