| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > выравнивание текста в DBGrid по центру |
| Автор: varra 25.3.2003, 06:06 |
| нужно установить свой-во TField.Alignment:=taCenter для всех полей всех таблиц,отображаемых в гриде. как? в цикле?? или,может, есть другой способ центрирования?.. |
| Автор: Lobsang 25.3.2003, 17:39 |
| Три переключателя РадиоБатон. Свойсвто TAG каждого относится с соответствующим значением типа TAligment. Так что твой цикл сокращается только до прохода по всем столбцам, а не по каждой ячейки в отдельности. With DBGrid1 do begin For i:=0 to FieldCount-1 do Fields[i].Aligment := TAligment ((Sender as TRadioButton).Tag); end; end; |
| Автор: varra 26.3.2003, 01:28 |
| ничего не понимаю... procedure TForm1.N9Click(Sender: TObject); begin ... DBGridEh1.Visible:=true; TextToCenter(DBGridEh1); end; procedure TForm1.TextToCenter(DBGrid: TDBGridEh); var k:integer; begin with DBGrid do begin for k:=0 to FieldCount-1 do Fields[k].Alignment:= taCenter; end; end; не работает |
| Автор: Cashey 26.3.2003, 05:27 | ||
А ты попробуй на Grid'е из стандартной библиотеки
Работает успешно! |
| Автор: varra 26.3.2003, 15:07 |
| дык используется уже DBGridEH (в силу наличия ряда удобных и нужных в проекте "штучек"), я не могу вернуться к стандартному Grid'у! |
| Автор: Lobsang 26.3.2003, 15:19 |
| А Что это за компонент и чего он дает за "штучки"? |
| Автор: varra 26.3.2003, 15:34 |
| подробности тут: http://www.farpost.com/personal/dmitryb/RUS/default.htm |
| Автор: Dapo 26.3.2003, 15:35 |
| Каким образом не работает-то? Где ошибка? Fields[i] - прямая ссылка на поле датасет-а подключенного к твоему гриду. Причем, совсем не обязательно, что Columns[i] == Fields[i] (я имею в виду отображаемые и содержащиеся данные). Может тебе именно со столбцами DBGridEh помудрить? Я с этим компонентом не работал и не знаю как он данные показывает, от чего наследуется? Может и "в ручную" придется данные отображать... |
| Автор: varra 26.3.2003, 16:00 |
| >Каким образом не работает-то? не центрируется текст >от чего наследуется TCustomGrid -> TCustomDBGridEh -> TDBGridEh >Может и "в ручную" придется данные отображать... то есть? |
| Автор: varra 26.3.2003, 16:11 |
| вот что интересно: procedure TForm1.N9Click(Sender: TObject); begin ... (ADODataSet1.Fields.FieldByName('Check') as TBooleanField).DisplayWidth:=2;//работает ... ADODataSet1.Fields.FieldByName('Цена').Alignment:=taCenter;//не работает ... end; |
| Автор: Dapo 27.3.2003, 11:00 | ||
Обрабатывать OnDrawColumnCell или OnDrawDataCell. >ADODataSet1.Fields.FieldByName('Цена').Alignment:=taCenter; Здесь попробуй опустить Fields или FieldByName. |
| Автор: varra 27.3.2003, 18:21 |
| не знаю, насколько рационально, но работает(!) при следующем коде: procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); var t,r:integer; begin ... t:=TDBGridEh(Sender).Canvas.TextWidth(Column.Field.DisplayText);//длина отображаемого значения r:=Rect.Right - Rect.Left;//длина прямоугольника TDBGridEh(Sender).Canvas.TextOut(Rect.Left+round((r-t)*0.5), Rect.Top+2,Column.Field.Text); end; |
| Автор: Dapo 27.3.2003, 19:24 |
| Видимо этот компонент не "смотрит" на свойство Alignment для полей. |
| Автор: Dapo 27.3.2003, 19:35 |
| Видимо этот компонент не "смотрит" на свойство Alignment для полей. |
| Автор: Noubpoeno 10.12.2022, 02:16 |
Модератор: Сообщение скрыто. |