![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Вот и не надо об этом молчать. Можете же, когда захотите.
|