Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 19:14   #1
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию StringGrid

Всем привет.
Не хотел создавать новую тему, но уже замучился гуглить.
В общем. Есть 15 столбцов, надо выровнять в первых трёх колонках текст по левому углу, а остальные по центру. Это при том, что б текст в заголовках был по центру везде. Выручайте.
Спасибо большое.
_ZixeL_ вне форума Ответить с цитированием
Старый 21.11.2012, 19:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Когда-то отвечал уже кому-то но ссылку потерял.
Центрирование в ячейках:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var cr:TRect;
begin
with StringGrid1.Canvas do begin
 cr:=StringGrid1.CellRect(acol,arow);
 FillRect(cr);
 TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
  cr.Top,StringGrid1.Cells[acol,arow]);
end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 20:18   #3
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Спасибо. Но как центрирование во всех ячейках сделать я знаю. А вот как в определённых колонках - без понятия.
_ZixeL_ вне форума Ответить с цитированием
Старый 21.11.2012, 20:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ACol и ARow есть в StringGrid1DrawCell. Вот по ним и ориентируйтесь какие центрировать или выравнивать влево-вправо
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.11.2012, 20:35   #5
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ACol и ARow есть в StringGrid1DrawCell. Вот по ним и ориентируйтесь какие центрировать или выравнивать влево-вправо
Да, это понятно. Не могли бы Вы пример показать?
_ZixeL_ вне форума Ответить с цитированием
Старый 21.11.2012, 21:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дык в моем примере в начале скажем допиши
Код:
if acol in [3..5] then exit;
Это значит что колонки с 3 по 5-ю не будут участвовать в центрировании.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 21:56   #7
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дык в моем примере в начале скажем допиши
Код:
if acol in [3..5] then exit;
Это значит что колонки с 3 по 5-ю не будут участвовать в центрировании.

не работает((

ПыСы: Я использую TMSGrids. Может знаете как там это организовать?

Последний раз редактировалось _ZixeL_; 21.11.2012 в 22:11.
_ZixeL_ вне форума Ответить с цитированием
Старый 21.11.2012, 22:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не работает((
Бывает ))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 22:36   #9
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Бывает ))
Ну блин)
Добавил как сказали

Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var cr:TRect;
begin
if acol in [3..5] then exit;
with StringGrid1.Canvas do begin
 cr:=StringGrid1.CellRect(acol,arow);
 FillRect(cr);
 TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
  cr.Top,StringGrid1.Cells[acol,arow]);
end;
end;
Сорри, не соображаю ничего что-то сегодня.
_ZixeL_ вне форума Ответить с цитированием
Старый 21.11.2012, 22:47   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Одно дело добавить - другое назначить.
В Инспекторе Объектов нужно создать сбытие отрисовки, а потом уже наполнять его кодом из примера
Цитата:
Ну блин)
Оладик. Фраза "не работает" на сколько информативная по шкале Рыхтыра?
Если к тебе позвонят в дверь с криком - "Там, на холме!!!!" Ты открывать пойдешь без вопросов или милицию вызовешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid shananina-katya Помощь студентам 2 14.04.2012 20:34
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
Stringgrid San4o Общие вопросы Delphi 7 17.05.2010 02:52
StringGrid W0LF Общие вопросы Delphi 9 27.08.2009 09:19
StringGrid stp56 Общие вопросы Delphi 4 27.07.2009 20:44