![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Добрый день.
Имеется ListBox. Необходимо задать его ширину так, чтоб полностью влезала и была видна самая длинная его строка. Пробовал такой код (выполняется при добавлении строки, s - добавляемая строка): Код:
ln:=ListBox1.Canvas.TextWidth(s); if ln>ListBox1.ClientWidth {или просто Width} then ListBox1.Width:=ln; ![]() |
#2
|
||||
|
||||
![]() Цитата:
Код:
ListBox1.ClientWidth:=ListBox1.Width+Length(ListBox1.Items.Strings[Индекс строки]); |
#3
|
||||
|
||||
![]() добавь отступ +4:
Код:
var i: Integer; s: String; w: Integer; begin for i:=1 to 100 do begin s:=IntToStr(Random(MaxInt)); s:=s+IntToStr(Random(MaxInt)); s:='['+s+']'; ListBox1.Items.Add(s); w:=ListBox1.Canvas.TextWidth(s)+4; if w>ListBox1.ClientWidth then ListBox1.ClientWidth:=w; end; end; Пишу программы за еду. __________________ |
#4
|
||||
|
||||
![]() Цитата:
Предлагаю такой вариант: Код:
begin ln := ListBox1.Canvas.TextWidth(s); if ln > ListBox1.ClientWidth then ListBox1.Width := ln + ListBox1.Width - ListBox1.ClientWidth; end; |
#5
|
||||
|
||||
![]() 3D бордюр окна не зависит от размера шрифта. но если очень напрягает то правильней естественно 2*GetSystemMetrics(SM_CYEDGE)
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
![]() Вот и не надо об этом молчать. Можете же, когда захотите.
|