关于生成控件后保存为INI文件的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 power2010
  • 开始时间 开始时间
P

power2010

Unregistered / Unconfirmed
GUEST, unregistred user!
自己一个人傻想了几天了,不如放在坛上让大家帮助一下,哈,万分感谢
注:TAALabel是一个扩展的LABEL类,与月共舞大侠写的

var AALabelObject: TAALabel;
begin
AALabelObject:=TAALabel.Create(Application);
AALabelObject.Parent := Self;
AALabelObject.Left := 20;
AALabelObject.Top := 20;
AALabelObject.Effect.Transparent:=True;
AALabelObject.Font.Size:=26;
AALabelObject.PopupMenu:=PopupMenu17;
AALabelObject.OnClick:=FormClick;
AALabelObject.OnMouseDown:=LMDLabelFill1MouseDown;
AALabelObject.OnMouseMove:=LMDLabelFill1MouseMove;
AALabelObject.OnMouseUp:=LMDLabelFill1MouseUp;
AALabelObject.Caption:='新的文字行';
end

用以上代码可以在屏幕上生成,但我想将其保存到INI文件夹,等下次程序载入时,再次载入这个LABEL
 
自己一个人傻想了几天了,不如放在坛上让大家帮助一下,哈,万分感谢
注:TAALabel是一个扩展的LABEL类,与月共舞大侠写的

var AALabelObject: TAALabel;
begin
AALabelObject:=TAALabel.Create(Application);
AALabelObject.Parent := Self;
AALabelObject.Left := 20;
AALabelObject.Top := 20;
AALabelObject.Effect.Transparent:=True;
AALabelObject.Font.Size:=26;
AALabelObject.PopupMenu:=PopupMenu17;
AALabelObject.OnClick:=FormClick;
AALabelObject.OnMouseDown:=LMDLabelFill1MouseDown;
AALabelObject.OnMouseMove:=LMDLabelFill1MouseMove;
AALabelObject.OnMouseUp:=LMDLabelFill1MouseUp;
AALabelObject.Caption:='新的文字行';
end

用以上代码可以在屏幕上生成,但我想将其保存到INI文件夹,等下次程序载入时,再次载入这个LABEL
 
整个就是一个宏替换问题,不容易的
 
我想应该不是很难吧....
 
应该只有PopupMenu17;ormClick;LMDLabelFill1MouseDown;LMDLabelFill1MouseMove;LMDLabelFill1MouseUp;这些事件比较难存吧....
我也不会...只是猜测...事件也是类...应该可以定义一个类的数组...然后在ini中存相应的数组序数 再次载入时用类似AALabelObject.OnClick:=eventarray1;来载入??
 
看看delphi帮助:
TStream.ReadComponent&TStream.WirteComponent
相关组件:TFileStream,TMemeryStream
有标准方法,你的思路偏了
 
流啊,从来没有接触过啊....感觉流是很难的东西
 
流的概念其实很简单只是抽象了一点
说白一点流就是将相关的内存数据组织成一个连续的存贮区,视觉上就象几个分散的区域经组织到一起后就成为一条直线状的了
[red]每个控件本身就有读写自身流的方法[/red]
另一种实现方法是一个一个地将属性值写入INI文件,启动时再一个一个读取。
 
在delphi ide中
在form 中点击右键,选择view as text
看看人家是如何做的
 
各位兄弟有没有代码让小弟参考一下,低手看代码,中手看思路....我连中手都够不上
 
不是让你看帮助吗:
Tstream/method/WriteComponent/Delphi example
function ComponentToString(Component: TComponent): string;

var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;

end;
finally
BinStream.Free
end;
end;

function StringToComponent(Value: string): TComponent;
var
StrStream:TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil);

finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;
 
后退
顶部