![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать, чтобы в ListBox не отображались линейки прокрутки [D6, WinXP]
dedelta © (2005-06-30 18:56:00)Как сделать, чтобы в ListBox не отображались линейки прокрутки
dedelta (2005-07-06 10:05:00) [1]Спасибо. Всё ОК.
begin...end (2005-07-03 19:51:00) [2]> dedelta (03.07.05 16:04) [3]
Создать потомка и заменить реализацию метода CreateParams своей.
type
TMyListBox = class(TCustomListBox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
{ TMyListBox }
procedure TMyListBox.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style and not (WS_HSCROLL or WS_VSCROLL)
end
После этого можно либо динамически создавать экземпляры этого класса, либо зарегистрировать этот компонент в палитре.
Пример с динамическим созданием, позволяющий увидеть, что полосы прокрутки не появляются:
procedure TForm1.FormCreate(Sender: TObject);
var
I: Char;
begin
with TMyListBox.Create(Self) do
begin
Parent := Self;
for I := 'A' to 'Z' do
Items.Add(StringOfChar(I, 50))
end;
end.
dedelta (2005-07-03 16:04:00) [3]А поподробнее можно. Интересует, что значит перекрыть.
begin...end (2005-06-30 20:51:00) [4]Перекрыть CreateParams, в котором сбросить стили WS_HSCROLL и WS_VSCROLL, и радоваться жизни.
Просто Джо (2005-06-30 19:25:00) [5]Ну, честно говоря, кроме
ShowScrollBar(
ListBox1.Handle,
SB_BOTH,
False
);
ничего в голову не приходит. Эта функция убирает скролл-бары до следующего их обновления, затем они снова появятся. Попробуй повесить этот код на несколько событий TListBox'а - и выбери оптимальный. Криво, но что поделать. Или все-так и придется писать своего наследника от TListBox'a и переопределить поведение в нескольких методах.