Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Перенос строк в ListBox delphi

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Перенос строк в ListBox delphi
Имя
Сообщение << Старые топики   Новые топики >>
Перенос строк в ListBox delphi - 2010-07-22 22:04:32.263333   
Cannibal666

Сообщений: 59
Оценки: 0
Присоединился: 2007-01-09 19:18:48.060000
Привет всем!!!! подскажите пожалуйста как можно реализовать перенос длинной строки в ListBox_е , я имею ввиду, при вводе стррока оказывается слишком длинной и уходит за границу лист бокса, пробовал реализацию при помощи деления строки на опред. количество символов и последующего переноса, но после испытания этот метод оказался не эффективным, так как каждая буква имеет различную ширину , поэтому либо остается слишком много свободного места слевого края, либо опять же символы уходят за край лист бокса.. или может есть встроенные функции лист бокса…..Заранее благодарен всем , за ответы!!!
Post #: 1
RE: Перенос строк в ListBox delphi - 2010-07-22 22:14:48.976666   
hromjo

Сообщений: 434
Оценки: 0
Присоединился: 2009-12-31 15:42:15.823333
Может сделать чтоб в конце было многоточие, а при наведение курсора на строку она высвечивалась, забыл как называется, ну типо в облачке;)
Post #: 2
RE: Перенос строк в ListBox delphi - 2010-07-22 22:22:45.553333   
Cannibal666

Сообщений: 59
Оценки: 0
Присоединился: 2007-01-09 19:18:48.060000
quote:

hromjo
Может сделать чтоб в конце было многоточие, а при наведение курсора на строку она высвечивалась, забыл как называется, ну типо в облачке;)

вы имеете ввиду хинт..но эт не много не то, мне необходимо видеть весь текст в реальном времени
вот мой код, наглядно написал..пишем текст в мемо, затем жмем буттон , текст делится по 30 символов и помещается в строки лист бокса , затем остаток символов на новую строку….

procedure TForm1.Button1Click(Sender: TObject); var st,st_shot:string; n:integer; begin st:=memo1.Text; if Length(st) &gt; 30 then begin for n:=1 to (Length(st) div 30) do begin st_shot:=AnsiLeftStr(st,30);//StrUtils listbox1.Items.Add(st_shot); Delete(st,1,30); end; end; listbox1.Items.Add(AnsiLeftStr(st,(Length(st) mod 30))); end;
…сразу скажу, что мемо нужен лишь для наглядного примера, вообще текст будет содержаться в переменной и по событию передаваться в лист бокс, при этом происходит деление и перенос….
(цикл нужен лишь для повторов деления,хотя есть и другие циклы конечно, так что пример прошу не критиковать, я просто привык с этим циклом обращаться…)
Post #: 3
RE: Перенос строк в ListBox delphi - 2010-07-22 23:47:44.986666   
Fairhawk

Сообщений: 102
Оценки: 0
Присоединился: 2010-05-25 21:10:59.193333
Гугли на тему "Скроллинг в listBox Delphi"
Post #: 4
RE: Перенос строк в ListBox delphi - 2010-07-23 13:24:48.986666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Использовать другой компонент. Однозначно. Листбокс для этого не подходит.
Post #: 5
RE: Перенос строк в ListBox delphi - 2010-07-23 14:29:56.316666   
Fairhawk

Сообщений: 102
Оценки: 0
Присоединился: 2010-05-25 21:10:59.193333
quote:

Saz
Причем тут скроуллинг ?

var i, MaxWidth: integer; begin MaxWidth := 0; for i := 0 to LB1.Items.Count - 1 do if MaxWidth &lt; LB1.Canvas.TextWidth(LB1.Items.Strings[i]) then MaxWidth := LB1.Canvas.TextWidth(LB1.Items.Strings[i]); SendMessage(LB1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0); end;

ЗЫ. Товарищ saz, ваше самооценка, жутко зашкаливает
Post #: 6
RE: Перенос строк в ListBox delphi - 2010-07-23 17:37:51.493333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ты читаешь, что пишут в первом сообщении? ТС-у нужен перенос строки, а не добавление скроллинга.
Post #: 7
RE: Перенос строк в ListBox delphi - 2010-07-30 13:03:56.276666   
rytJ

Сообщений: 10
Оценки: 0
Присоединился: 2010-07-30 00:00:27.760000
Если я не ошибаюсь, то есть компонент такой в котором скролинг встроен, туда можно кинуть листбокс и расширять его по мере сиволов в строке. выход, но очень кривой.
Post #: 8
RE: Перенос строк в ListBox delphi - 2010-07-30 18:38:00.740000   
Cannibal666

Сообщений: 59
Оценки: 0
Присоединился: 2007-01-09 19:18:48.060000
в принципе вопрос уже не так актуален…я хотел конечно поизвращаться. узнав ширину каждого символа, ссумировать их до целых символов, затем осуществить перенос. но блин это так все сложно, для такой мелочи, поэтому в принципе подойдет и вот этот код, изъят из предыдущего моего кода , оптимизирован просто не много и все, так то он по идеее устроит, просто я думал кто то что другое сможет предложить…..а вообще всех благодарю за ответы)))))
var st_shot:string; begin while Length(log) &gt; 32 do begin st_shot:=copy(log,1,32); listbox1.Items.Add(st_shot); Delete(log,1,32); end; listbox1.Items.Add(log); end;
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Перенос строк в ListBox delphi







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.