![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ScrollBar в Treeview [D7, Win2k, WinXP]
Димыч © (2007-03-22 13:58:00)Как заставить Treeview не показывать линйку прокрутки (ScrollBar)?
Димыч (2007-03-22 16:09:00) [1]Для справки (написал вот так):
Uses CommCtrl;
...
procedure TTreeview_plus.CreateParams(var Params: TCreateParams);
begin
inherited;
params.Style:=params.Style or TVS_NOSCROLL;
end;
Димыч (2007-03-22 16:07:00) [2]Скролл пропал. :) Только вот TreeView перестал реагировать на следующий код:
M.Msg := WM_VSCROLL;
M.ScrollCode := SB_Lineup;
form10.TreeView1.Dispatch(M);
Application.ProcessMessages;
- програмная прокрутка. Т.е. прокрутка стала невозможна. :) Видимо затея моя обречена на провал.
RASkov (2007-03-22 15:55:00) [3]> не могу найти константу TVS_NOSCROLL
CommCtrl.pas
TVS_NOSCROLL = $2000;
Может не совсем то, но может пригодится:
http://www.yandex.ru/yandsearch?rpt=rad&text=TVS_NOSCROLL
там всего пять ссылок....
clickmaker (2007-03-22 15:52:00) [4]\Delphi7\Source\Rtl\Win\CommCtrl.pas
RASkov (2007-03-22 15:51:00) [5]> А как теперь грамотно написать в CreateParams изменение
> стиля окна?
Взять старый стиль окна... выкинуть ненужное, добавить нужное... установить получившийся новый.
Димыч (2007-03-22 15:40:00) [6]не могу найти константу TVS_NOSCROLL, она вроде как не существует. НАшел вот такие WS_EX_LEFTSCROLLBAR,WS_EX_RIGHTSCROLLBAR, больше ничего не нашел
Димыч (2007-03-22 15:24:00) [7]Проглатил! Я правда струдом понимаю как такое возможно. Получается что эторавносильно такому коду:
type
Ttreeview = class(TTreeView)
...
А как теперь грамотно написать в CreateParams изменение стиля окна?
RASkov (2007-03-22 15:15:00) [8]> [8] Димыч © (22.03.07 15:07)
может так, как вариант:
type
Ttreeview_plus = class(TTreeView)
procedure CreateParams(var Params: TCreateParams); override;
end;
TTreeView = class(Ttreeview_plus);
TForm1 = class(TForm)
TreeView1: TTreeView;
.....
implementation
.........
{Ttreeview_plus}
procedure Ttreeview_plus.CreateParams(var Params: TCreateParams);
begin
end;
.....
Димыч (2007-03-22 15:07:00) [9]Ну да правильно, уже понял. Так же понял что сделал вторую ошибку - класто я переделал, а Делфя говорит мол класс у него TTreeview а ему присваивается TTreeview_plus, и предлагает исправить это дело. Вообщем либо мне всетаки придется заново TTreeview в программу внядрять либо я незнаю... Подскажите как это сделать правильно
RASkov (2007-03-22 15:03:00) [10]> [6] Димыч © (22.03.07 14:57)
Ну так реализацию кто делать будет?
Димыч (2007-03-22 14:57:00) [11]Попытался создать новый класс:
type
Ttreeview_plus = class(TTreeView)
procedure CreateParams(var Params: TCreateParams); override;
end;
и даже вот так
type
Ttreeview_plus = class(TCustomTreeView)
procedure CreateParams(var Params: TCreateParams); override;
end;
выдаёт ошибку при компиляции:
[Error] Unit10.pas(10): Unsatisfied forward or external declaration: 'Ttreeview_plus.CreateParams'
Димыч (2007-03-22 14:42:00) [12]Если я правильно понял то это придется пользоваться для создания Treeview'а функцией CreateWindowEx. Только вот программа уже написана, нельзя ли для Treeview использовать что то вроде CreateParams(var Params: TCreateParams); override;как для формы?
clickmaker (2007-03-22 14:30:00) [13]это стиль. Окна TreeView
Димыч (2007-03-22 14:29:00) [14]TVS_NOSCROLL - это как? :)
clickmaker (2007-03-22 14:28:00) [15]TVS_NOSCROLL
Ega23 (2007-03-22 14:25:00) [16]Удалить узлы. Все. :)