Перенос строк в ListBox delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Перенос строк в ListBox delphi - 2010-07-22 22:04:32.263333
|
|
|
Cannibal666
Сообщений: 59
Оценки: 0
Присоединился: 2007-01-09 19:18:48.060000
|
Привет всем!!!! подскажите пожалуйста как можно реализовать перенос длинной строки в ListBox_е , я имею ввиду, при вводе стррока оказывается слишком длинной и уходит за границу лист бокса, пробовал реализацию при помощи деления строки на опред. количество символов и последующего переноса, но после испытания этот метод оказался не эффективным, так как каждая буква имеет различную ширину , поэтому либо остается слишком много свободного места слевого края, либо опять же символы уходят за край лист бокса.. или может есть встроенные функции лист бокса…..Заранее благодарен всем , за ответы!!!
|
|
|
RE: Перенос строк в ListBox delphi - 2010-07-22 22:14:48.976666
|
|
|
hromjo
Сообщений: 434
Оценки: 0
Присоединился: 2009-12-31 15:42:15.823333
|
Может сделать чтоб в конце было многоточие, а при наведение курсора на строку она высвечивалась, забыл как называется, ну типо в облачке;)
|
|
|
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) > 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; …сразу скажу, что мемо нужен лишь для наглядного примера, вообще текст будет содержаться в переменной и по событию передаваться в лист бокс, при этом происходит деление и перенос…. (цикл нужен лишь для повторов деления,хотя есть и другие циклы конечно, так что пример прошу не критиковать, я просто привык с этим циклом обращаться…)
|
|
|
RE: Перенос строк в ListBox delphi - 2010-07-22 23:47:44.986666
|
|
|
Fairhawk
Сообщений: 102
Оценки: 0
Присоединился: 2010-05-25 21:10:59.193333
|
Гугли на тему "Скроллинг в listBox Delphi"
|
|
|
RE: Перенос строк в ListBox delphi - 2010-07-23 13:24:48.986666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Использовать другой компонент. Однозначно. Листбокс для этого не подходит.
|
|
|
RE: Перенос строк в ListBox delphi - 2010-07-23 17:37:51.493333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Ты читаешь, что пишут в первом сообщении? ТС-у нужен перенос строки, а не добавление скроллинга.
|
|
|
RE: Перенос строк в ListBox delphi - 2010-07-30 13:03:56.276666
|
|
|
rytJ
Сообщений: 10
Оценки: 0
Присоединился: 2010-07-30 00:00:27.760000
|
Если я не ошибаюсь, то есть компонент такой в котором скролинг встроен, туда можно кинуть листбокс и расширять его по мере сиволов в строке. выход, но очень кривой.
|
|
|
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) > 32 do
begin
st_shot:=copy(log,1,32);
listbox1.Items.Add(st_shot);
Delete(log,1,32);
end;
listbox1.Items.Add(log);
end;
|
|
|
|
|