Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите подобрать событие или WM / 15 сообщений из 15, страница 1 из 1
27.10.2003, 13:35
    #32306054
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Необходимо при создании формы выполнить прокрутку компонента TListView:

ListView1.Scroll(0, 20);

Если вставлять в OnShow, OnActivate, OnCreate формы, то эффекта нет. Если вставить в обработчик нажатия кнопки, то всё нормально. Но необходимо именно сразу при создании формы.
Помогите пожайлуста...
...
Рейтинг: 0 / 0
27.10.2003, 14:13
    #32306129
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Прокрутку необходимо сделать или все же SELECTED установить?

eNose
...
Рейтинг: 0 / 0
27.10.2003, 14:19
    #32306144
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Необходимо сделать именно прокрутку. С Selected пока проблем нет. То есть мало сделать элемент списка выбранным, нужно ещё, чтобы он появился перед глазами юзера.
...
Рейтинг: 0 / 0
27.10.2003, 14:22
    #32306148
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
На onShow делаешь

PostMessage(Handle,(WM_USER+101),0,0)

Потом ловишь его и вперед
...
Рейтинг: 0 / 0
27.10.2003, 14:25
    #32306158
viceroy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
:) а у меня на OnPaint получилось!
...
Рейтинг: 0 / 0
27.10.2003, 14:28
    #32306164
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
2 ZrenBy: Если я буду посылать сообщение при OnShow, ловить его и обрабатывать , то разве это не тоже самое, как если бы я просто вставил обработчик этого сообщения в OnShow?
...
Рейтинг: 0 / 0
27.10.2003, 14:47
    #32306203
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Блин, если параметры-константа, то по OnPaint() действительно получается. Но проблема, конечно, прокрутить не на 20, 20-это было для простоты восприятия. В полном варианте по OnShow определяем нужный item:

Prom:=ListView1.FindCaption(0, Edit1.Text, false, true, false);

А уже далее нужно каким то макаром прокрутить до него самого:

ListView1.Scroll(0, ListView1.Items.Item[Prom.index-1].Position.y);
...
Рейтинг: 0 / 0
27.10.2003, 14:56
    #32306220
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
TListView.Selected.MakeVisible





eNose
...
Рейтинг: 0 / 0
27.10.2003, 15:15
    #32306250
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
2 eNose: Спасибо. Работает. Есть минус: найденный элемент находится в нижней части области списка. Если скролить вручную, то можно сделать его посередине списка или вначале.
Да и вообще, задача вроде не сложная, а не получается. Так что у кого будут идеи на счёт скрола, пишите пожайлуста...
...
Рейтинг: 0 / 0
27.10.2003, 15:39
    #32306287
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
На OnSelectItem повесь scroll.
Только отработай его 1 раз (boolean перменную заведи или как-то еще).



eNose
...
Рейтинг: 0 / 0
27.10.2003, 15:59
    #32306322
olga1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Эти сообщения указаны в MSDN:
WM_HSCROLL
WM_VSCROLL
...
Рейтинг: 0 / 0
27.10.2003, 16:18
    #32306357
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
procedure TForm2.FormShow(Sender: TObject);
var
i: integer;
begin
Edit1.Text:='99';
first:=true;

for i:=0 to 1000 do
begin
Prom:=ListView1.Items.Add;
Prom.Caption:=IntToStr(i);
end;

Prom:=ListView1.FindCaption(0, Edit1.Text, false, true, false);

if Prom<>nil then
begin
Prom.Selected:=true;
end;
ListView1.SetFocus;
end;

procedure TForm2.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if first then
begin
first:=false;
ListView1.Scroll(0, ListView1.Items.Item[Prom.index-1].Position.y);
end;
end;
Не работает! Или я что-то не так делаю?
...
Рейтинг: 0 / 0
27.10.2003, 17:00
    #32306446
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Там ещё, есть свойство TopItem, по ниму позиционируй как нужно...
...
Рейтинг: 0 / 0
27.10.2003, 17:11
    #32306474
lustig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
TopItem - read only property. Как при его помощи можно позиционировать?
...
Рейтинг: 0 / 0
27.10.2003, 17:16
    #32306483
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите подобрать событие или WM
Странно, у меня Delphi 5 и всё прекрасно позиционируется... Хотя я походу ошибся, я думал у тебя treeview.... На счёт listview не знаю... Сорри..
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите подобрать событие или WM / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]