由于我处理的是ini文件所有最好不用Query!主要是能实现行的增加、删除和修改!var
  Form1: TForm1;
  IniFile:TIniFile;
  ivar,total,wCount:Integer;
  slabel:string;
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.Exit1Click(Sender: TObject);
begin
  close;
end;procedure TForm1.Open1Click(Sender: TObject);
var
 i: Integer;
begin
  ClientDataSet1.Close;
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Open;
  if OpenDialog1.Execute then
  begin
    IniFile:=TIniFile.Create(OpenDialog1.FileName);
    ivar:= IniFile.ReadInteger('language','ivar',0);
    if ivar = 0 then
    begin
      Label2.Caption:= '窗口语言:英语';
    end;
    if ivar = 1 then
    begin
      Label2.Caption:= '窗口语言:繁体';
    end;
    if ivar = 2 then
    begin
      Label2.Caption:= '窗口语言:简体';
    end;
    wCount:=IniFile.ReadInteger('frmCount','wCount',1);
    Label3.Caption:= '窗口数量:' + IntToStr(wCount);
    for i := 1 to wCount do
    begin
      Combobox1.Text:=IniFile.ReadString('frm'+IntToStr(1),'frmCaption','');
      Combobox1.Items.Add(IniFile.ReadString('frm'+IntToStr(i),'frmCaption','')) ;
    end;
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i,j,p:Integer;
boxtext:string;
begin
  ClientDataSet1.Close;
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Open;
  for p := 1 to wCount do
  begin
    boxtext:=IniFile.ReadString('frm'+IntToStr(p),'frmCaption','');
    if  boxtext=Combobox1.Text then
    begin
      i:= p;
    end;
  end;   //如何根据Combobox的值来判断小节
    begin
      total:=IniFile.ReadInteger('frm'+IntToStr(i),'total',1);
      for j := 1 to total do
      begin
      slabel:=IniFile.ReadString('frm'+IntToStr(i),'label'+IntToStr(j),'');
      ClientDataSet1.Append;
      ClientDataSet1.FieldByName('窗口名称').AsString:=IniFile.ReadString('frm'+IntToStr(i),'frmCaption','');
      ClientDataSet1.FieldByName('程序名称').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('标题语言').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('快捷键').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('颜色').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('字体大小').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('提示说明').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('备注').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.Post;
      end;
    end;
end;procedure TForm1.New1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Open;
end;procedure TForm1.Close1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Open;
end;procedure TForm1.Button3Click(Sender: TObject);
var
i,p,j:Integer;
boxtext:string;
begin
  for p := 1 to wCount do
  begin
    boxtext:=IniFile.ReadString('frm'+IntToStr(p),'frmCaption','');
    if  boxtext=Combobox1.Text then
    begin
      i:= p;
    end;
  end;   //如何根据Combobox的值来判断小节
    begin
      total:=IniFile.ReadInteger('frm'+IntToStr(i),'total',1);
      total:= total+1;
      IniFile.WriteInteger('frm'+IntToStr(i),'total',total);
      IniFile.WriteString('frm'+IntToStr(i),'label'+IntToStr(total),Edit1.Text+'^'+Edit2.Text+'^'+Edit3.Text+'^'+Edit4.Text+'^'+Edit5.Text+'^'+Edit6.Text+'^'+Edit7.Text);
      ClientDataSet1.Close;
      ClientDataSet1.CreateDataSet;
      ClientDataSet1.Open;
      for j := 1 to total do
      begin
      slabel:=IniFile.ReadString('frm'+IntToStr(i),'label'+IntToStr(j),'');
      ClientDataSet1.Append;
      ClientDataSet1.FieldByName('窗口名称').AsString:=IniFile.ReadString('frm'+IntToStr(i),'frmCaption','');
      ClientDataSet1.FieldByName('程序名称').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('标题语言').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('快捷键').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('颜色').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('字体大小').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('提示说明').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('备注').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.Post;
      end;
    end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
i,p,j:Integer;
boxtext:string;
begin
  for p := 1 to wCount do
  begin
    boxtext:=IniFile.ReadString('frm'+IntToStr(p),'frmCaption','');
    if  boxtext=Combobox1.Text then
    begin
      i:= p;
    end;
  end;  //如何根据Combobox的值来判断小节
  begin
    total:=IniFile.ReadInteger('frm'+IntToStr(i),'total',1);
    IniFile.DeleteKey('frm'+IntToStr(i),'label'+IntToStr(total));
    total:= total-1;
    IniFile.WriteInteger('frm'+IntToStr(i),'total',total);
    ClientDataSet1.Close;
    ClientDataSet1.CreateDataSet;
    ClientDataSet1.Open;
    for j := 1 to total do
      begin
      slabel:=IniFile.ReadString('frm'+IntToStr(i),'label'+IntToStr(j),'');
      ClientDataSet1.Append;
      ClientDataSet1.FieldByName('窗口名称').AsString:=IniFile.ReadString('frm'+IntToStr(i),'frmCaption','');
      ClientDataSet1.FieldByName('程序名称').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('标题语言').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('快捷键').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('颜色').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('字体大小').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('提示说明').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('备注').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.Post;
      end;
  end;
end;procedure TForm1.Button4Click(Sender: TObject);
var
i,p,j:Integer;
boxtext:string;
begin
  for p := 1 to wCount do
  begin
    boxtext:=IniFile.ReadString('frm'+IntToStr(p),'frmCaption','');
    if  boxtext=Combobox1.Text then
    begin
      i:= p;
    end;
  end;   //如何根据Combobox的值来判断小节
    begin
      total:=IniFile.ReadInteger('frm'+IntToStr(i),'total',1);
      IniFile.WriteString('frm'+IntToStr(i),'label'+IntToStr(total),Edit1.Text+'^'+Edit2.Text+'^'+Edit3.Text+'^'+Edit4.Text+'^'+Edit5.Text+'^'+Edit6.Text+'^'+Edit7.Text);
      ClientDataSet1.Close;
      ClientDataSet1.CreateDataSet;
      ClientDataSet1.Open;
      for j := 1 to total do
      begin
      slabel:=IniFile.ReadString('frm'+IntToStr(i),'label'+IntToStr(j),'');
      ClientDataSet1.Append;
      ClientDataSet1.FieldByName('窗口名称').AsString:=IniFile.ReadString('frm'+IntToStr(i),'frmCaption','');
      ClientDataSet1.FieldByName('程序名称').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('标题语言').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('快捷键').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('颜色').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('字体大小').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('提示说明').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.FieldByName('备注').AsString:=SplitStr(slabel,'^');
      ClientDataSet1.Post;
      end;
    end;
end;
end.我想通过dbgrid1.SelectedField.DataSet.RecNo实现!谢谢了!

解决方案 »

  1.   

    edit1.text:=dbgrid1.DataSource.DataSet.FieldByName('窗口名称').AsString;
      

  2.   

    关键是它只是显示最后一行哦!不是显示我的选取的那行!
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
    showmessage(IntToStr(dbgrid1.SelectedField.DataSet.RecNo)) ;
    end;试都不行!
      

  3.   

    编译时报错!这段代码哪里错了呢?
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
    showmessage(IntToStr(dbgrid1.SelectedField.DataSet.RecNo)) ;
    end;
      

  4.   

    提示
    [Error] Language.pas(301): Undeclared identifier: 'DBGrid1OnDblClick'
    要怎么处理呀?
      

  5.   

    前面没有声明TForm1.DBGrid1DblClick(Sender: TObject);?