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

Многострочный TStringGrid 2

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

Многострочный TStringGrid 2

Как известно, Гай Юлий Цезарь умел делать несколько дел одновременно, но при этом ужасно тормозил процесс демократизации империи, за что и был убит своим лучшим другом - Хомой Брутом.
Вопрос: нужна ли нам истинная многозадачность такой ценой?


 procedure TForm1.grid1DrawCell(Sender: TObject; Col, Row: Longint;
   Rect: TRect; State: TGridDrawState);

  var l_oldalign : word;
      l_YPos,l_XPos,i : integer;
      s,s1 : string;
      l_col,l_row :longint;

 begin
   l_col := col;
   l_row := row;
   with sender as tstringgrid do
   begin
     if (l_row=0) then
       canvas.font.style:=canvas.font.style+[fsbold];
     if l_row=0 then
     begin
       l_oldalign:=settextalign(canvas.handle,ta_center);
       l_XPos:=rect.left + (rect.right - rect.left) div 2;
       s:=cells[l_col,l_row];
       while s<>'' do
       begin
         if pos(#13,s)<>0 then
         begin
           if pos(#13,s)=1 then
             s1:=''
           else
           begin
             s1:=trim(copy(s,1,pred(pos(#13,s))));
             delete(s,1,pred(pos(#13,s)));
           end;
           delete(s,1,2);
         end
         else
         begin
           s1:=trim(s);
           s:='';
         end;
         l_YPos:=rect.top+2;
         canvas.textrect(rect,l_Xpos,l_YPos,s1);
         inc(rect.top,rowheights[l_row] div 3);
       end;
       settextalign(canvas.handle,l_oldalign);
     end
     else
     begin
        canvas.textrect(rect,rect.left+2,rect.top+2,cells[l_col,l_row]);
     end;

     canvas.font.style:=canvas.font.style-[fsbold];
   end;
 end;

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

Это компонент VCL (Visual Component Library) для Delphi или Borland C++Builder, который является программным языком и средой разработки, разработанными компанией Borland.

Код appears to be for a TStringGrid control, which is a multi-ровед grid that can display text. The grid1DrawCell procedure is an event handler that gets called whenever the grid needs to draw a cell.

Вот что код делает:

  • Он устанавливает стиль шрифта канваса (т.е., поверхности рисования) в жирный если это первая строка.
  • Если это первая строка, он устанавливает выравнивание текста в центр и рисует каждую ячейку в этой строке с помощью цикла. Цикл читает содержимое каждой ячейки, разбивает его на строки, разделенные символами новой строки (#13), и затем рисует каждую строку на слегка смещенной позиции (для создания эффекта "абзаца").
  • Если это не первая строка, он просто рисует ячейку без специального форматирования.
  • После рисования всех ячеек, он устанавливает стиль шрифта обратно в нормальный.

Код также имеет некоторые переменные, объявленные, которые используются внутри процедуры:

  • l_oldalign: целочисленная переменная, хранящая оригинальное настройку выравнивания текста (используемую позднее для восстановления).
  • l_YPos и l_XPos: целочисленные переменные, хранящие Y и X координаты текста соответственно.
  • i, s и s1: строковые переменные, используемые для временного хранения значений текста.
  • l_col и l_row: длина переменных, хранящих номер столбца и строки соответственно.

Код можно улучшить:

  • Используя более описательные имена переменных (например, вместо l_ col, используйте GridColumn).
  • Добавляя комментарии для объяснения того, что каждый раздел кода делает.
  • Рассматривайте использование отдельной процедуры для обработки форматирования текста, а не смешивая его с логикой рисования.
  • Возможно, стоит использовать более эффективный алгоритм для разбиения длинных строк на несколько строк (например, используя TStringList для хранения строк и затем итерируясь над ним).

В целом, это кажется-solidным куском кода, но некоторые улучшения можно было бы сделать, чтобы сделать его более maintainable и readable.

В статье описывается создание многострочного TStringGrid 2 с использованием процедуры TForm1.grid1DrawCell для отображения текста в ячейках грида.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:02:29/0.0057780742645264/1