大家帮帮忙调整过DBgrid列位置及列宽,再次打开软件时即恢复列位置及列宽信息?
知道可以用ini或txt文件保存列信息,但不知道怎么做,请高手指点。最好有例子~~
也可发我邮箱
9951_kai#163#com

解决方案 »

  1.   

    dbgrid本身就支持你说的那些功能啊你最好动态创建这个窗口with TForm1.Create( Owner ) do
    begin
    ShowModal;
    Destroy
    end;这样解决恢复的问题
      

  2.   

    读写INI文件的例子网上有很多的,现在高手都懒得给你写
      

  3.   

    EHLIB包中有关于记录介面的控件
      

  4.   

    TPropStorageEh,TRegPropStorageManEh,TIniPropStorageManEh你可以看看这三个控件。
    在EHlib包中
      

  5.   

    delphi 带TIniFile的,你可以看看,下面时demo:
    procedure TForm1.FormActivate(Sender: TObject);var
      WinIni: TIniFile;
    begin
      Canvas.TextOut(20, 10, 'VARIOUS WINDOWS SETTINGS');
      WinIni := TIniFile.Create('Win.Ini');
      with WinIni do
      begin
        Canvas.TextOut(10, 45, 'Border Width = ' +
          IntToStr(ReadInteger('Windows', 'BorderWidth', -1)));
        Canvas.TextOut(10, 65, 'Icon Spacing = ' +
           IntToStr(ReadInteger('Desktop', 'IconSpacing', -1)));
        Canvas.TextOut(10, 85, 'Grid Granularity = ' +
           IntToStr(ReadInteger('Desktop', 'GridGranularity', -1)));    Canvas.TextOut(10, 105, 'Cursor Blink Rate = ' +
           IntToStr(ReadInteger('Windows', 'CursorBlinkRate', -1)));
        Canvas.TextOut(10, 125, 'Double Click Speed = ' +
           IntToStr(ReadInteger('Windows', 'DoubleClickSpeed', -1)));
      end;
      WinIni.Free;end;procedure TForm1.Button1Click(Sender: TObject);var
      DelphiIni: TIniFile;
      begin
      DelphiIni := TIniFile.Create('c:\windows\delphi32.ini');
      Memo1.Clear;
      DelphiIni.ReadSectionValues('Transfer', Memo1.Lines);
      if Memo1.Lines.Values['Title1'] <> 'Picture Painter' then
        DelphiIni.WriteString('Transfer', 'Title1', 'Picture Painter');
      DelphiIni.Free;
    end;procedure TForm1.Button2Click(Sender: TObject);var
      DelphiIni: TIniFile;
      begin  DelphiIni := TIniFile.Create('c:\windows\delphi32.ini');  { if the entry wasn抰 there before, delete it now }
      if Memo1.Lines.Values['Title1'] = '' then
        DelphiIni.DeleteKey('Transfer', 'Title1')
      { otherwise, restore the old value }
      else
        DelphiIni.WriteString('Transfer', 'Title1', Memo1.Lines.Values['Title1']);
      DelphiIni.Free;
    end;
      

  6.   

    for i:=0 to Dbgrideh1.Columns.Count -1 do
      Dbgrideh1.Columns[i].OptimizeWidth;
    //可以搞定打开后列宽为最小值,不必担心空白区域较大问题