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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Pascal] 2 HandleX. Я знаю ;-) 19.06.03 16:37  Число просмотров: 1466
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
> Win32Check(GetTextExtentPoint32(Canvas.Handle, PChar(TempStr), Length(TempStr), aSize));
Вот именно об этом я и спрашивал! Огромное спасибо!
<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