保存窗体的全部信息

此代码在Delphi的Demo(ADOTEST)中有说明

function TADODBTest.GetConfigFile: TIniFile;
begin
  if FConfig = nil then
      FConfig := TIniFile.Create(ChangeFileExt(ParamStr(0), '.INI'));
  Result := FConfig;
end;
 
procedure TADODBTest.StreamSettings(Write: Boolean);
 
  procedure WriteStr(const OptName: string; Value: Variant);
  begin
      FConfig.WriteString('Settings', OptName, Value);
  end;
  procedure WriteBool(const OptName: string; Value: Boolean);
  begin
      FConfig.WriteBool('Settings', OptName, Value);
  end;
  procedure WriteStrings(const SectName: string; Values: TStrings);
  var
      I: Integer;
  begin
      FConfig.EraseSection(SectName);
      for I := 0 to Values.Count - 1 do
          FConfig.WriteString(SectName, IntToStr(I), Values[I]);
  end;
  function ReadStr(const OptName: string): Variant;
  begin
      Result := FConfig.ReadString('Settings', OptName, '');
  end;
  function ReadBool(const OptName: string): Boolean;
  begin
      Result := FConfig.ReadBool('Settings', OptName, False);
  end;
  procedure ReadStrings(const SectName: string; Values: TStrings);
  var
      I: Integer;
      S: string;
  begin
      for I := 0 to 99 do
      begin
          S := FConfig.ReadString(SectName, IntToStr(I), '');
          if S = '' then Break;
          Values.Add(S);
      end;
  end;
  function FindPage(const PageName: string): TTabSheet;
  var
      I: Integer;
  begin
      for I := AreaSelector.PageCount - 1 downto 0 do
      begin
          Result := AreaSelector.Pages[I];
          if Result.Caption = PageName then Exit;
      end;
      Result := SourcePage;
  end;
  procedure ProcessComponents(Components: array of TComponent);
  var
      I,J: Integer;
  begin
      if Write then
      begin
          for I := Low(Components) to High(Components) do
              if Components[I] is TCustomEdit then
                  with TEdit(Components[I]) do
                      WriteStr(Name, Text)
              else if Components[I] is TComboBox then
                  with TDBComboBox(Components[I]) do
                      WriteStr(Name, Text)
              else if Components[I] is TCheckBox then
                  with TCheckBox(Components[I]) do
                      WriteBool(Name, Checked)
              else if Components[I] is TRadioButton then
                  with TRadioButton(Components[I]) do
                      WriteBool(Name, Checked)
              else if Components[I] is TAction then
                  with TAction(Components[I]) do
                      WriteBool(Name, Checked)
              else if Components[I] is TPageControl then
                  with TPageControl(Components[I]) do
                      WriteStr(Name, ActivePage.Caption)
              else if Components[I] is TMenuItem then
                  with TMenuItem(Components[I]) do
                      for J := 0 to Count-1 do
                          if Items[J].Checked then
                          begin
                              WriteStr(Name, J);
                              System.Break;
                          end;
      end
      else
      begin
          for I := Low(Components) to High(Components) do
              if Components[I] is TCustomEdit then
                  with TEdit(Components[I]) do
                      Text := ReadStr(Name)
              else if Components[I] is TComboBox then
                  with TComboBox(Components[I]) do
                      Text := ReadStr(Name)
              else if Components[I] is TCheckBox then
                  with TCheckBox(Components[I]) do
                      Checked := ReadBool(Name)
              else if Components[I] is TRadioButton then
                  with TRadioButton(Components[I]) do
                      Checked := ReadBool(Name)
              else if Components[I] is TAction then
                  with TAction(Components[I]) do
                      Checked := ReadBool(Name)
              else if Components[I] is TPageControl then
                  with TPageControl(Components[I]) do
                      ActivePage := FindPage(ReadStr(Name))
              else if Components[I] is TMenuItem then
                  with TMenuItem(Components[I]) do
                      Items[ReadStr(Name)].Checked := True;
      end;
  end;
begin
  GetConfigFile;
  ProcessComponents([CheckListBox1,Memo1,Memo2,Memo3,Memo5]);
end;

      此为保存窗体的数据到INI文件中,使用此思路也可以做成保存到注册表,或者其它文件中,方便程序在再次打开的时候显示以前信息.
 
                                                                    该信息由小东在2007-2-26号最后编辑
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值