Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/65: Рейтинг темы: голосов - 65, средняя оценка - 4.77
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
1

StringGrid перенос по словам

24.05.2013, 09:27. Показов 12754. Ответов 6
Метки нет (Все метки)

Здравствуйте. как сделать чтоб в StringGrid предложения записывались с переносом?
Миниатюры
StringGrid перенос по словам  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2013, 09:27
Ответы с готовыми решениями:

Перенос по словам
Как в Delphi организовать перенос по словам, как в стандартном блокноте?

Перенос текста по словам
Надо написать программу в которой при вводе текста, слова в котором разделены любым кол-вом...

Перенос столбца(информации) из StringGrid в другой StringGrid
Не могу разобраться с тем, как перенести значения(нажатием кнопки "записать") выданные программой в...

Перенос столбца из StringGrid в другой StringGrid
Здравствуйте подскажите как перенести данные из столбца № 2 StringGrid2, в столбца № 2 StringGrid1.

6
Почетный модератор
64065 / 47477 / 32732
Регистрация: 18.05.2008
Сообщений: 115,185
24.05.2013, 12:53 2
http://delphisite.ru/faq/mnogo... stringgrid
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31243 / 20423 / 7960
Регистрация: 22.10.2011
Сообщений: 35,452
Записей в блоге: 6
24.05.2013, 12:59 3
https://www.cyberforum.ru/delp... ost2023505
1
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
24.05.2013, 15:27  [ТС] 4
спасибо. я много для себя почерпнул, но маленький вопрос, как сделать чтоб по середине текст, я там не смог увидеть(
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
24.05.2013, 16:14 5
Интернет и Google творят чудеса...
Кликните здесь для просмотра всего текста
StringGrid Delphi
Выравнивание текста в ячейке



При выводе текста в ячейку компонента StringGrid Delphi:

Delphi
1
   StringGrid1.Cells[i, j]:='Текст выводится слева';
по умолчанию текст располагается у левого края ячейки. Однако, во многих случаях необходимо, чтобы текст располагался справа или по центру ячейки. Например, нумерация строк в нулевой колонке таблицы естественнее выглядит справа, а оглавление столбцов в нулевой строке - по центру.

Для достижения такого эффекта можно воспользоваться свойством Canvas таблицы StringGrid. Дело в том, что текст нарисованный на "холсте" таблицы, и текст напечатанный, имеют одинаковые размеры, конечно при условии, что свойства, в том числе размеры, шрифтов одинаковы:

Delphi
1
   StringGrid1.Canvas.Font.Size=StringGrid1.Font.Size;
а так оно и есть, если их намеренно заранее не поменяли. Таким образом, нужно предварительно узнать ширину ячейки:

Delphi
1
   WCells:=StringGrid1.Cols[i];
и ширину "нарисованного" текста:

Delphi
1
2
3
   var Text: String;
 
   WText:=StringGrid1.Canvas.TextWidth(Text);
Теперь для вывода текста справа нужно в цикле добавлять по пробелу перед текстом до тех пор, пока размеры WCells и WText не сравняются. Для вывода текста по центру необходимо добавлять по пробелу и перед и после текста.

Вот процедура, осуществляющая вывод текста в нужное положение - слева, по центру, или справа, использующая описанный метод:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Тип переменной, задающий положение текста:
type
   Position=(_left, center, right);
 
implementation
 
{$R *.dfm}
 
function GridTextAlign(Grid: TStringGrid; Text: String;    i: Integer; where: Position): String;
var WCells: Integer;
begin
 WCells:=Grid.ColWidths[i]-7;
//7 - корректировка для более точного вывода текста
 Result:=Text;
with Grid, Grid.Canvas do
case where of
   center: while TextWidth(Result)<WCells do
             Result:=' '+Result+' ';
   right:  while TextWidth(Result)<WCells do
             Result:=' '+Result;
   _left:  ;
end;
end;
Конечно, без последней строчки:

_left: ;

можно и обойтись. Она использована для того, чтобы подчеркнуть тот факт, что при значении переменной:

where = _left

делать ничего не нужно, так как по умолчанию текст в ячейке компонента StringGrid Delphi и сам по себе располагается именно у левого края.
Примечание: Знак подчёркивания в константе _left использован чтобы избежать её ассоциации со свойством StringGrid1.Left.

Теперь, используя эту функцию, вывод, например, заголовков столбцов таблицы (глобальный массив var Capt: array of String) в центр ячеек можно сделать так:

Delphi
1
2
3
4
5
6
7
procedure TForm1.GridTitle;
var i: Integer;
begin
with StringGrid1 do
  for i:=1 to ColCount-1 do
  Cells[i, 0]:=GridTextAlign(StringGrid1, Capt[i-1], i, center);
end;
1
3 / 3 / 0
Регистрация: 16.05.2019
Сообщений: 134
06.11.2020, 14:29 6
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
Интернет и Google творят чудеса...
Так-то, вопрос о переносе строк, а не о выравнивании.
Выравнивается элементарно:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  txt: string;
begin
  with StringGrid1 do
  begin
    txt:= Cells[ACol,ARow];
    Canvas.Brush.Color:= clBtnFace;
    Canvas.FillRect(Rect);
    Canvas.TextRect(Rect,txt,[tfVerticalCenter,tfCenter,tfSingleLine]);
  end;
end;
0
D1973
06.11.2020, 18:29     StringGrid перенос по словам
  #7

Не по теме:

Цитата Сообщение от Hevard Посмотреть сообщение
Так-то, вопрос о переносе строк, а не о выравнивании.
так-то тут оба этих вопроса прозвучало... Причем более 7 лет назад...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2020, 18:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Перенос строки по словам в ячейке грида
Кто-нибудь,помогите пожалуйста с алгоритмом переноса строки по словам.Задача такая: нужно в ячейке...

ComboBox-->StringGrid Перенос информации
Приветствую! ComboBox я заполняю значениями из txt файла. А как сделать так, чтобы когда я выбрал в...

Перенос данных из DBGrid-а в StringGrid
Есть dbgrid на одной форме и есть stringgrid на другой. я хочу сделать перенос данных таким вот...

Перенос из listbox в stringgrid построчно
Есть listbox в нем список надо переносить из него строки в stringgrid. Но нажатием кнопки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.