При добавлении текста в ячейкикомпонента StringGrid , он по умолчанию центруется по левой стороне. Однако очень часто для удобства отображения информации необходимо чтобы он располагался по центру или по правой стороне. Например, столбец с числами лучше располагать по правому краю, чтобы сделать такую информацию более наглядной и удобной к восприятию.
Специальных средств для настройки центровки текста хотя бы по столбцу не предусмотрено, поэтому делать это необходимо программными средствами, подобно механизму закраски ячеек StringGrid.
Для решения данной задачи воспользуемся процедурой DrawText и одним из ее параметров Format. Параметру Format можно назначить сразу группу значений через оператор “OR”. Для центровки текста в ячейках используются значения DT_CENTER, DT_LEFT и DT_RIGHT, для расположения по центру, по левой стороне и по правой стороне, соответственно.
Выполняется это так же как и окрашивание ячеек StringGrid в процессе срабатывания события OnDrawCell, где условиями определяется какой ячейке какой из значений параметра Format назначить.
procedure TForm1.MyStringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
Format: Word;
C: array[0..255] of Char;
begin
if ACol = 0 then
Format := DT_CENTER // первый столбец - положение текста по центру
else if ACol = 1 then
Format := DT_LEFT // второй столбец – положение текста по левому краю
else
Format := DT_RIGHT // остальные – положение текста по правому краю
if ARow = 0 then
Format := DT_CENTER // первая строка – положение текста по центру
MyStringGrid.Canvas.FillRect(Rect); // перерисовка ячейки
StrPCopy(C, MyStringGrid.Cells[ACol, ARow]); // преобразование строки в формат PChar
WinProcs.DrawText(MyStringGrid.Canvas.Handle, C, StrLen(C), Rect, Format); // вывод текста
end;
Для использования функции DrawText, необходимо подключить библиотеку WinProcs.
uses
WinProcs;
Рисунок: Выравнивание текста в ячейках StringGrid
Функция CopyFile в Delphi, описание и примеры
Запросы на выборку из БД в Delphi с использованием компонента ADOQuery
Функция ForceDirectories в Delphi, описание и примеры
В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.