TStringList to TStringGrid - PullRequest
       2

TStringList to TStringGrid

0 голосов
/ 08 января 2020

Это мой первый пост, и я все еще много узнаю о Delphi и общем программировании. Поэтому, пожалуйста, не стесняйтесь учить.

Я пытаюсь заполнить TStringList именами столбцов из Access. Затем отобразите их в TStringGrid. В настоящее время я получаю сообщение об ошибке «Требуется тип массива». Но я боюсь, что может быть больше.

procedure TFormDB1DataMapping.FieldNamesToGrid();
var
  myFieldnames: TStringList;
  I: Integer;
begin
  if not Form1.ConnIn1.Connected then begin
    try
      //Set Connection Parameters and connect
      Form1.ConnIn1Parameters;
      Form1.ConnIn1.Connected:=True
    finally
    end;
  end;
  myFieldnames := TStringList.Create;
  Form1.ConnIn1.GetFieldNames('','',Form1.ComboBoxDB1TableName.Text,'',myFieldnames);
  StringGridDB1.RowCount := StringGridDB1.RowCount + 1;
  for I:= StringGridDB1.RowCount - 1 downto 1 do
    StringGridDB1.Rows[I] := StringGridDB1.Rows[I - 1];
  StringGridDB1.Cols[0][1] := myFieldnames.Text;
  myFieldnames.Free;
End;

image

Рабочая процедура с ответом ниже

procedure TFormDB1DataMapping.FieldNamesToGrid();
var
  myFieldnames: TStringList;
  I: Integer;
begin
  if not Form1.ConnIn1.Connected then begin
    try
      //Set Connection Parameters and connect
      Form1.ConnIn1Parameters;
      Form1.ConnIn1.Connected:=True
    finally
    end;
  end;
  myFieldnames := TStringList.Create;
  Form1.ConnIn1.GetFieldNames('','',Form1.ComboBoxDB1TableName.Text,'',myFieldnames);
  StringGridDB1.RowCount := StringGridDB1.RowCount + 1;
  StringGridDB1.RowCount := myFieldnames.Count + 1;
  for I := 0 to myFieldnames.Count - 1 do
    StringGridDB1.Cells[0, I + 1] := myFieldnames[I];
  myFieldnames.Free;
End;

image

1 Ответ

2 голосов
/ 08 января 2020

Предполагая, что вы хотите, чтобы имена полей в первом столбце сохраняли верхнюю строку заголовка, вы можете сделать это с помощью следующего кода:

StringGrid1.RowCount := myFieldnames.Count + 1;
for I := 0 to myFieldnames.Count - 1 do
  StringGrid1.Cells[0, I + 1] := myFieldnames[I];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...