我正在做的项目就是多界面的,
数据库项目:可以把所有变量存到数据库表中
非数据库项目:可以用INI文件保存,
记住:整个项目所有的界面窗体都从同一个窗体(比如:TBaseForm)继承,
然后只要在TBaseForm的创建或显示事件中调用BrowserObj(self),
function GetValue(VarName: string): string;
begin
//自已写吧,别说你不会,
...
end;
procedure BrowserObj(Obj: TComponent) virtual
//用virtual,以便供以后子类可以override...
var
i: integer;
begin
for i:= 0 to obj.ComponentCount - 1 do
begin
if obj.Components is TLabel then
TLabel(obj.Components).Caption:= GetValue(obj.Components.Name)
else if obj.Components is TPanel then
TPanel(obj.Components).Caption:= GetValue(obj.Components.Name)
else if obj.Components is TDBGrid then GetDBGridCaption(obj.Components.Name)
else if ...
...
//在这里你就尽管写就是了,如果是像DBGrid就再做个函数GetDBGridCaption循环每个列并调用GetValue(),以此类推...
//当然你在程序中要把所有可能用到的都写到这里....
....
end
//递归调用
if obj.Components.ComponentCount > 0 then BrowserObj(obj.Components);
end;
//
// if .. then ...
// else if ... then ...
// esel if ... then ...
//上面的if else 不知有没有更简单的写法,至少我还不知道,你知道了也请告诉我吧
//以上为我的做法,一并与大家探讨这方面的做法,