Доброго здоровья уважаемые.
Есть такой вот код. Он  отлично работает в Delphi, C++Builder. А вот в Lazarus получается нечто...
Вобщем вот. Сначала просто присваиваю значения ячейкам.
   FMain.sgCostTest.Cells[0, 0] := '№ вопроса';
   FMain.sgCostTest.Cells[1, 0] := 'Количество ответов';
   FMain.sgCostTest.Cells[2, 0] := '№№ ответов';
   FMain.sgCostTest.Cells[3, 0] := 'Количество баллов';
   FMain.sgCostTest.Cells[4, 0] := 'Тема вопроса';   
Затем в стандартном событии DrawCell пишу такой код. По задумке должно отрисовываться так, заголовки в центре с переносом слов.
procedure TFMain.sgCostTestDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
var
 s    : string;
 Flag : cardinal;
 H    : integer;
begin
   if (ARow and ACol > 0) then
     case (ARow mod 2) of
        0 : begin sgCostTest.Canvas.Font.Color := clBlack;
		  sgCostTest.Canvas.FillRect(aRect);
		  sgCostTest.Canvas.Brush.Color := TColor($CCFFCC);
	    end;
     else begin
                  sgCostTest.Canvas.Font.Color := clBlack;
		  sgCostTest.Canvas.FillRect(aRect);
		  sgCostTest.Canvas.Brush.Color := TColor($CCCCFF);
           end;
     end;
   sgCostTest.Canvas.FillRect(aRect);
   s    := UTF8ToAnsi(sgCostTest.Cells[aCol, aRow]);
   //StrPCopy(s, sgCostTest.Cells[aCol, aRow]);
   Flag := DT_CENTER;
   if (aRow>0) then begin
	 case (aCol) of
	   4 : begin Flag := DT_LEFT; end;
	 else
             Flag := DT_CENTER;
         end;
   end else Flag := DT_CENTER;
   Flag := Flag or DT_WORDBREAK;
   Inc(aRect.Left, 3);//  := aRect.Left + 3;
   Dec(aRect.Right, 3);// := aRect.Right - 3;
   H := DrawText(sgCostTest.Canvas.Handle, PChar(s), Length(s), aRect, Flag);
   if (H > sgCostTest.RowHeights[aRow]) then
	  sgCostTest.RowHeights[aRow] := H; //увеличиваем высоту }
end;  
Результат во "прицепе".  Что не так ?
Добавлено спустя 1 час 3 минуты 23 секунды:
Еще вопрос в этой же теме. Касается этой же странички, но немного по другому поводу.
Нужно на StriungGrid'е при выборе последней колонки чтобы по размерам колонки в соответствующей строке показывался ComboBox.
Пишу такой код, но Lazarus...
1. Кричит что нет такой функции как ClientToParent
2. Функция ClientToScreen ясно дело отрисовывает его по своему разумению относительно экранных координат.
procedure TFMain.sgCostTestClick(Sender: TObject);
var CellRect : TRect;
 pt       : TPoint;
begin
  if sgCostTest.Col=4 then begin
    CellRect         := sgCostTest.CellRect(sgCostTest.Col, sgCostTest.Row);
    pt               := sgCostTest.ClientToScreen( Point(CellRect.Left, CellRect.Top) );
    //pt               := sgCostTest.ClientToParent(Point(CellRect.Left, CellRect.Top));
    CB_Theme.Left    := pt.X;
    CB_Theme.Top     := pt.Y-12;
    CB_Theme.Width   := CellRect.Right - CellRect.Left;
    CB_Theme.Visible := true;
    CB_Theme.BringToFront;
  end;
end;    
Подозреваю, что нужно подключить соответствующий модуль. Но не нашел где он находится
			
