Доброе время суток, Sergei! Эта программа создает горизонтальную полосу прокрутки в ListBox так, чтобы все строки компонента умещались.
procedure TForm1.FormCreate(Sender: TObject); var i: integer; maxWidth: integer; begin maxWidth := 0; with ListBox1 do for i := 0 to Items.Count - 1 do if maxWidth < Canvas.TextWidth(Items.Strings[i]) then maxWidth := Canvas.TextWidth(Items.Strings[i]); ListBox1.Perform(LB_SETHORIZONTALEXTENT, maxWidth + 10, 0); end; Ответ отправлен: 30.08.2003, 00:46 Отправитель: Илья Отвечает Cybernetic Creature
Добрый день, Sergei! Компонент VCL TListBox автоматически реализует вертикальную полосу прокрутки.Полоска прокрутки появляется, когда окно списка слишком мало для показа всех элементов списка. Однако окно списка не показывает горизонтальной полосы прокрутки, когда какие-либо элементы списка имеют большую ширину, чем само окно списка.Конечно, есть возможность добавить горизонтальную полосу прокрутки. Добавьте следующий код в обработчик события OnCreate Вашей формы: procedure TForm1.FormCreate(Sender: TObject); var i, MaxWidth: integer; begin MaxWidth := 0; for i := 0 to ListBox1.Items.Count - 1 do if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]) then MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]); SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0); end; Этот
код находит ширину, в пикселах, самой длинной строки в окне списка.Затем он использует сообщение LB_SETHORIZONTALEXTENT для установки горизонтальной прокручиваемой ширины, в пикселах, для окна списка. Два дополнительных пиксела добавлены к MaxWidth,чтобы двинуть оконечные символы от правой границы окна списка. Ответ отправлен: 01.09.2003, 18:58 Отправитель: Cybernetic Creature
Вопрос № 881
Вопрос по TValueListEditor (Delphi7) Как мне получить значение Value? Если не понятно выразился: в общем моя таблица состоит из Key | Value | -------------- 01 | abc | 02 | qwerty | Допустим мы изменили значение abc на bca, как новое значение внести в переменную типа string? Helpa в делфи нету - читать не отправляйте:)
Приветствую Вас, Ландграф Павел! А что трудного? var S:string; begin ValueListEditor1.Values['01']:='bca'; S:=ValueListEditor1.Values['01']; end; Ответ отправлен: 31.08.2003, 10:31 Отправитель: Marouder Отвечает ART_43
Здравствуйте, Ландграф Павел! ValueListEditor1.Values['01']:='bca'; Ответ отправлен: 01.09.2003, 17:20 Отправитель: ART_43
Вопрос № 882
У мя следующий вопрос. Есть форма, с caption=Form1. На ней есть кнопка (name="Button"). Как мне получить хендл этой кнопки, чтобы потом можно было с ней извращяться (изменение размера, текста кнопки...).
Здравствуйте, maDByte! В каком смысле как? Свойство Handle. Button1.Handle
Ответ отправлен: 31.08.2003, 10:32 Отправитель: Marouder Отвечает URiS
Доброе время суток, maDByte! 1) GetWindowTextA(h) Перебираешь h и ждёшь, когда она будет равна "Button" *) 2) FindWindow('Button','TButton') Более нормальный вариант. Просто возвращает нужный handle.
Ответ отправлен: 01.09.2003, 15:39 Отправитель: URiS
Вопрос № 884
Недавно я задавал следующий вопрос: "У мя следующий вопрос. Есть форма, с caption=Form1. На ней есть кнопка (name="Button"). Как мне получить хендл этой кнопки, чтобы потом можно было с ней извращяться (изменение размера, текста кнопки...). " Но забыл написать самое главное, исполняемый файл, с формой и кнопкой - это отдельный бинарник. Так вот мне нужно получить дескриптор кнопки в чужом окне. Извините за неточности...
Здравствуйте, maDByte! Не знаю, как это будет действовать с программами, писаными на Delphi/Builder, но если известно название кнопки, можно получить хендл, используя функцию WinAPI: FindWindowEx(hwndParent, NULL, "BUTTON","Button1") где hwndParent - хэндл главного окна программы (который также получаешь через FindWindow(FindWindowEx)) "BUTTON" - класс окна (стандартный класс для кнопок) "Button1" - имя кнопки (имя окна 'BUTTON')
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 01.09.2003, 00:17 Отправитель: _vt Отвечает Bob Johnson
Здравствуйте, maDByte! Тогда ты должен вначале найти главное окно этого файла (FindWindow), после чего уже найти эту кнопку (GetWindow (.., GW_CHILD) и GetWindow (.., GW_HWNDNEXT)). Контроль осуществляй по имени и классу (GetWindowText, GetClassName).
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:41 Отправитель: Bob Johnson Отвечает Marouder
Приветствую Вас, maDByte! FindWindow и FindWindowEx должны тебе помочь. var hwndform1,hwndbutton:HWND; begin hwndform1:=FindWindow('TForm1','Form1'); hwndbutton:=FindWindowEx(hwndform1,0,'TButton','Button'); end; Подробнее описание FindWindow и FindWindowEx - в Win32 Programmer's Reference Ответ отправлен: 01.09.2003, 13:22 Отправитель: Marouder
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.