Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обратиться к колонке или строке StringGrid по заголовку

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Обратиться к колонке или строке StringGrid по заголовку

В следующем примере приведены две функции: GetGridColumnByName() и GetGridRowByName(), которые возвращают колонку или строку, имеющую заданный заголовок (caption).

Пример:


procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Rows[1].Strings[0] := 'This Row';
  StringGrid1.Cols[1].Strings[0] := 'This Column';
end;

function GetGridColumnByName(Grid: TStringGrid; ColName: string): integer;
var
  i: integer;
begin
  for i := 0 to Grid.ColCount - 1 do
    if Grid.Rows[0].Strings[i] = ColName then
    begin
      Result := i;
      exit;
    end;
  Result := -1;
end;

function GetGridRowByName(Grid: TStringGrid; RowName: string): integer;
var
  i: integer;
begin
  for i := 0 to Grid.RowCount - 1 do
    if Grid.Cols[0].Strings[i] = RowName then
    begin
      Result := i;
      exit;
    end;
  Result := -1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Column: integer;
  Row: integer;
begin
  Column := GetGridColumnByName(StringGrid1, 'This Column');
  if Column = -1 then
    ShowMessage('Column not found')
  else
    ShowMessage('Column found at ' + IntToStr(Column));
  Row := GetGridRowByName(StringGrid1, 'This Row');
  if Row = -1 then
    ShowMessage('Row not found')
  else
    ShowMessage('Row found at ' + IntToStr(Row));
end;

Перевод контента на русский язык:

Код, предоставленный ниже, это программный код Delphi, который демонстрирует, как найти столбец или строку в компоненте TStringGrid по его заголовку. Программа определяет две функции - GetGridColumnByName и GetGridRowByName, которые ищут указанный столбец или строку в заголовке таблицы.

Обзор кода:

  1. В обработчике события FormCreate программа задает заголовки для первой строки и столбца компонента TStringGrid.
  2. Функция GetGridColumnByName перебирает каждый столбец в таблице и проверяет, если его заголовок соответствует указанному имени столбца. Если найден, она возвращает индекс этого столбца; иначе, возвращает -1.
  3. Функция GetGridRowByName делает аналогичный поиск строк в таблице, но проверяет заголовки строк вместо заголовков столбцов.
  4. В обработчике события Button1Click программа использует эти функции для поиска столбцов и строк с указанными именами. Если они не найдены, она отображает сообщение об ошибке; иначе, она отображает сообщение о успешном поиске с индексом найденного столбца или строки.

Код хорошо структурирован, и комментарии обеспечивают хороший объяснение каждого раздела. Однако, есть одна минорная проблема: функции GetGridColumnByName и GetGridRowByName используют цикл для поиска указанного заголовка, что может быть неэффективно при наличии многих столбцов или строк в таблице. Более эффективный подход будет использовать линейный поиск, особенно для больших таблиц.

Вот альтернативное реализация с использованием линейного поиска:

function GetGridColumnByName(Grid: TStringGrid; ColName: string): integer;
begin
  Result := -1;
  for i := 0 to Grid.ColCount - 1 do
    if CompareText(Grid.Rows[0].Strings[i], ColName) = 0 then
    begin
      Result := i;
      exit;
    end;
end;

function GetGridRowByName(Grid: TStringGrid; RowName: string): integer;
begin
  Result := -1;
  for i := 0 to Grid.RowCount - 1 do
    if CompareText(Grid.Cols[0].Strings[i], RowName) = 0 then
    begin
      Result := i;
      exit;
    end;
end;

В этой реализации функция CompareText используется для сравнения заголовков с указанным именем. Это более эффективный подход, чем использование цикла, особенно для больших таблиц.

В статье описаны функции GetGridColumnByName и GetGridRowByName для поиска колонки или строки TStringGrid по заголовку (caption) и их использование в примере.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TStringGrid и TDrawGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 02:56:54/0.0033869743347168/0