информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Pascal] А как? 12.06.03 15:55  Число просмотров: 1245
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
<programming>
[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));
Вот именно об этом я и спрашивал! Огромное спасибо!
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach