分享

记忆Delphi窗体上控件的位置和大小

 quasiceo 2013-01-16

procedure TFormMain.WriteControlPlacement;
var
   iniFile : TIniFile;
   idx : integer;
   ctrl : TControl;
   listview:TListView;
   i:Integer;
begin
   iniFile := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ;
   try
     for idx := 0 to -1 + Self.ComponentCount do
     begin
       if Components[idx] is TControl then
       begin
         ctrl := TControl(Components[idx]) ;
         iniFile.WriteInteger(ctrl.Name,'Top',ctrl.Top) ;
         iniFile.WriteInteger(ctrl.Name,'Left',ctrl.Left) ;
         iniFile.WriteInteger(ctrl.Name,'Width',ctrl.Width) ;
         iniFile.WriteInteger(ctrl.Name,'Height',ctrl.Height) ;
       end;
       if Components[idx] is TListView then
       begin
           listview:= Components[idx] as TListView ;
           //iniFile.WriteInteger(ctrl.Name,'ColumnCount',listview.Columns.Count) ;
           for I := 0 to listview.Columns.Count-1 do
           begin
               iniFile.WriteInteger(ctrl.Name,'ColWidth'+Inttostr(I),listview.Columns[i].Width) ;
           end;


       end;
     end;
   finally
     FreeAndNil(iniFile) ;
   end;
end; (*WriteControlPlacement*)


procedure TFormMain.ReadControlPlacement;
var
   iniFile : TIniFile;
   idx : integer;
   ctrl : TControl;
   listview:TListView;
   i:Integer;
begin
   iniFile := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ;
   try
     for idx := 0 to -1 + Self.ComponentCount do
     begin
       if Components[idx] is TControl then
       begin
         ctrl := TControl(Components[idx]) ;
         ctrl.Top := iniFile.ReadInteger(ctrl.Name,'Top',ctrl.Top) ;
         ctrl.Left := iniFile.ReadInteger(ctrl.Name,'Left',ctrl.Left) ;
         ctrl.Width := iniFile.ReadInteger(ctrl.Name,'Width',ctrl.Width) ;
         ctrl.Height := iniFile.ReadInteger(ctrl.Name,'Height',ctrl.Height) ;
       end;
       if Components[idx] is TListView then
       begin
           listview:= Components[idx] as TListView ;
           //iniFile.WriteInteger(ctrl.Name,'ColumnCount',listview.Columns.Count) ;
           for I := 0 to listview.Columns.Count-1 do
           begin
              listview.Columns[i].Width:= iniFile.ReadInteger(ctrl.Name,'ColWidth'+Inttostr(I),100) ;
           end;
       end;

     end;
   finally
     FreeAndNil(iniFile) ;
   end;
end; (*ReadControlPlacement*)


//注:在窗体的OnCreate事件处理程序中调用ReadControlPlacement。
//在窗体的OnClose或OnDestroy事件处理程序中调用WriteControlPlacement。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多