如何通过文件的打开在DBGrid中显示INI文件!
INN文件大致格式如下!
[language] 
   ivar=2
[frmCount] 
   wCount=3
[frm1] 
   total=2 
   frmCaption=窗口名称 
   lable1=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注
   lable2=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注
[frm2] 
   total=1 
   frmCaption=窗口名称 
   lable1=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注
[frm3] 
   total=1 
   frmCaption=窗口名称 
   lable1=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注
其中wcount,total为变量
procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;procedure TForm1.Open1Click(Sender: TObject);
begin
  Form1.OpenDialog1.Execute;
end;procedure TForm1.SaveAs1Click(Sender: TObject);
begin
  Form1.SaveDialog1.Execute;
end;
要求在执行Open1Click命令后就直接在DBGrid中显示出相关内容!
谢谢了!

解决方案 »

  1.   

    DBGrid不行的。DBGrid必须绑定一个DataSource->DataSet.除非你写一个基于DataSet的子类来处理这个格式的Ini
    文件,不过这就太麻烦了。
    给你提个建议,你用TStringGrid来作.用TIniFile读取文件,让后自己写代码填充StringGrid,实现起来应该也不难!
    Good Luck!
      

  2.   

    用TStringGrid来作.用TIniFile读取文件,让后自己写代码填充StringGrid
      

  3.   

    在窗体上放一个clientdataset1,设置datasource1.dataset:=clientdataset1,设置dbgrid1.datasource=datasource1
    双击clientdataset1,在打开的字段列表窗口里右键选择new fields 创建你自己的字段,选择字段类型
    然后照着下面的代码写就行了unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, Grids, DBGrids, DBClient, IniFiles;type
      TForm1 = class(TForm)
        ClientDataSet1: TClientDataSet;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        ClientDataSet1WinName: TStringField;
        ClientDataSet1ProName: TStringField;
        ClientDataSet1TitleLanguage: TStringField;
        ClientDataSet1HotKey: TStringField;
        ClientDataSet1cColor: TStringField;
        ClientDataSet1cFontSize: TStringField;
        ClientDataSet1cHint: TStringField;
        ClientDataSet1Bz: TStringField;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function SplitStr(var AStr: string; ASplitChar: Char = ';'): string;
    var
      sF: string;
    begin
      sF := '';
      if AStr <> '' then
        if Pos(ASplitChar, AStr) > 0 then
        begin
          sF := Copy(AStr, 1, Pos(ASplitChar, AStr) - 1);
          AStr := Copy(AStr, Pos(ASplitChar, AStr) + 1, MaxInt);
        end
        else
        begin
          sF := AStr;
          AStr := '';
        end;
      Result := sF;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var IniFile:TIniFile;
        i,wCount:Integer;
        slabel:string;
    begin
      if OpenDialog1.Execute then
      begin
        IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');
        wCount:=IniFile.ReadInteger('frmCount','wCount',1);
        for i := 1 to wCount do
        begin
          slabel:=IniFile.ReadString('frm'+IntToStr(i),'lable1','');
          ClientDataSet1.Append;
          ClientDataSet1.FieldByName('WinName').AsString:=IniFile.ReadString('frm'+IntToStr(i),'frmCaption','');
          ClientDataSet1.FieldByName('ProName').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('TitleLanguage').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('HotKey').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('cColor').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('cFontSize').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('cHint').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.FieldByName('Bz').AsString:=SplitStr(slabel,'^');
          ClientDataSet1.Post;
        end;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ClientDataSet1.Close;
      ClientDataSet1.CreateDataSet;
      ClientDataSet1.Open;
    end;end.
      

  4.   

    上没有一点搞错了!slabel:=IniFile.ReadString('frm'+IntToStr(i),'lable1','');
    lable1应该也是个变量!
    [frm1]  
       total=2  
       frmCaption=窗口名称  
       lable1=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注 
       lable2=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注 
    [frm2]  
       total=1  
       frmCaption=窗口名称  
       lable1=程序名称^标题语言^快捷键^颜色^字体大小^提示说明^备注 
    不过还是谢谢了!