Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Pascal] Кто знает как к TListBox прицепить горизонтальный скролбар или заставить TListBox переносить строки если они в нем не помещаются? 12.06.03 13:28
Автор: Fighter <Vladimir> Статус: Elderman
|
|
|
[pascal] надо послать ему сообщение (точно не помню что-то типа lb_sethorextent) 12.06.03 14:21
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| |
[Pascal] А как? 12.06.03 15:55
Автор: Fighter <Vladimir> Статус: Elderman
|
|
| | |
[Win32] SendMessage() 12.06.03 16:12
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 12.06.03 16:26 Количество правок: 1
|
|
| | | |
[Pascal] Я нашел другую штуку 12.06.03 16:37
Автор: Fighter <Vladimir> Статус: Elderman
|
ListBox1.Perform(LB_SETHORIZONTALEXTENT,1620,0);
0 - длжно быть
1620 - на сколько пикселов можно прокручивать (число взято от балды)
Воззникает другой вопрос: а как узнать длину строки в пикселах?
|
| | | | |
[Pascal] Ты крут. Это почти одно и тоже ;-) 15.06.03 22:46
Автор: HandleX <Александр М.> Статус: The Elderman
|
> ListBox1.Perform(LB_SETHORIZONTALEXTENT,1620,0); Метод Perform отправляет сообщение в оконную процедуру напрямую, не вставляя её в очередь...
> 0 - длжно быть > 1620 - на сколько пикселов можно прокручивать (число взято > от балды) > Воззникает другой вопрос: а как узнать длину строки в > пикселах? Тебе нужно найти самую длинную строку и посчитать её длину в пикселах (можно ещё прибавит 4-8 пикселов для надёжности).
Procedure SetLBHorExtent(lb: TListBox);
Var
J, aMax: Integer;
TempStr: String;
aSize: TSize;
MaxSize: Integer;
Begin
aMax := lb.Items.Count - 1;
If aMax = -1 Then Exit;
MaxSize := 0;
For J := 0 To aMax Do
Begin
TempStr := lb.Items[J];
Win32Check(GetTextExtentPoint32(Canvas.Handle, PChar(TempStr), Length(TempStr), aSize));
If aSize.cx > MaxSize Then
MaxSize := aSize.cx;
End;
If MaxSize = 0 Then Exit;
Inc(MaxSize, 8);
SendMessage(lb.Handle, LB_SETHORIZONTALEXTENT, MaxSize, 0);
End;
---
Внимание! Это работает правильно, если ListBox.ParentFont = True
|
| | | | | |
[Pascal] 2 HandleX. Я знаю ;-) 19.06.03 16:37
Автор: Fighter <Vladimir> Статус: Elderman
|
> Win32Check(GetTextExtentPoint32(Canvas.Handle, PChar(TempStr), Length(TempStr), aSize)); Вот именно об этом я и спрашивал! Огромное спасибо!
|
|
|