我想问一下通过DBGrid控件有什么办法打开INI文件? 通过文件菜单的打开在DBGrid里显示出来! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看不到图不过通过控制dbgrid的显示就可以吧如果就为了显示INI文件,还是用listview好点吧 listvie的列可以显性的显示出来吗? 如何显示不重要,重要的是INI文件中的数据需要你自己写代码读出来 肯定能显示出来的,好比将Excel文件保存为Txt文件的逆过程 在窗体上放一个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. 循环后值怎么不循环进出呢? 求算法 Com方面的问题 我用视频采集卡采集视频,如何将视频旋转90度显示? 怎么实现像WINDOWS浏览器那样,双击文件名就可以直接打开该文件的功能啊???急,在线等 高手请进,有关声音播放问题 用Delphi、Mysql的大侠帮忙看看吗?---急急急急 如何拦截广告(弹出窗口和页面内的) 如果判断一个字符串全是数字? 用ADO连接远程Sql 如果连接失败的话会报错,这个错误可以在哪里处理?(58分献上) 想听听不同的声音 reportbuilder 的 footerband,如何只在末页显示 ?
不过通过控制dbgrid的显示就可以吧
如果就为了显示INI文件,还是用listview好点吧
双击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.