如何从字段中获取值并分配给TStringList?

-2 mysql delphi tstringlist tmemo delphi-xe

如何从下面的图像中获取所有用户名值,并将它们转换为TStringList,字符串或TMemo

在此输入图像描述

我尝试了以下代码,但它没有用.

with q3 do
  var txResul:stringlist
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT*FROM user');
    Open;
    Next;
  end;
  txtResult.Add(q1.FieldByName('username').AsString);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ynA 6

假设您的屏幕截图是您调用的数据集,请执行以下操作:

procedure GetUserNames(DataSet : TDataSet; StringList : TStringList);
var
  Field : TField;
begin
  Field := DataSet.FieldByName('username');
  StringList.BeginUpdate;      
  try
    DataSet.DisableControls;
    try
      DataSet.First;
      while not DataSet.Eof do begin
        StringList.Add(Field.AsString);
        DataSet.Next;
      end;
    finally
      DataSet.EnableControls;
    end; 
  finally
    StringList.EndUpdate;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它

procedure TForm1.GetUsers;
var
  TL : StringList;
begin
  TL := StringList.Create;
  try
    GetUserNames(MyTable, TL);
    Memo1.Lines.Text := TL.Text;
  finally
    TL.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您将GetUserNames的第二个参数更改为TStrings,就像GetUserNames(DataSet : TDataSet; Strings : TStrings)您可以直接将Memo1.Lines传递给它一样.

  • 另一个有用的事情是在数据集中为初始位置添加书签,并在启用控件之前返回到该位置.否则,每次调用`GetUserNames`时,网格都会移动到最后一行. (2认同)