Форум: "WinAPI";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизЗаколебавший ListView Найти похожие ветки
← →
Stany (2002-08-17 15:32) [0]Привет всем знатокам!Накипела тут тройка вопросов по вине ListView.Делаю вот такую штуку:в ListView вывожу список строк в которые можно входить как в "каталоги".При входе первая строка [..],затем другой список строк,а при выходе выбран тот "каталог",в который вошёл.Одна из проблем в том, что если при входе в "каталог" я выбрал элемент,который не вмещается в видимую часть ListView, ес-нно ListView делает скроллинг,то при выходе из "каталога" этот элемент выбран,но не виден пока не прокрутишь список.Пытался исправить это с помощью SetScrollPos, ScrollBox устанавливаеся в нужную позицию,но список не прокручиваеся;с ScrollWindow(),ListView.Scroll()-тоже не получается!
Другая проблема в том,что ListView медленно очищает и прорисовывает свои злементы с картинками.Можно как-то ускорить в этом случае ListView.Items.Clear?Взять к примеру такую рулезную вещь как Win Commander(да простят меня любители Far),так у него с бешеной скоростью обновляется список элементов в его листах, словно на асме написано;если Splitterом изменять размер панелей,то панель которая увеличивается как-то накладыватся на ту, которая уменьшается(но её размеры остаются прежними, потому что не появляется гор-ый ScrollBox).Мож кто знает кроме Christian Ghisler как это осуществить.Ну, ладно завалил тут я вас вопросами,вот привожу фрагмент кода,помогите кто может, please:
var
SelIndex,ScrollPos:integer;
procedure TMainForm.LoadFolders(Index:integer);
begin
ListView.Items.Clear;
ListView.SmallImages:=ImageList1;
...
begin
ListView.Items.BeginUpdate;
{Добавляем список строк}
ListView.Items.EndUpdate;
end;
ListView.Selected := ListView.Items[Index];
ListView.Selected.Focused := True
{Ничего из этого не помогает!}
{SetScrollPos(ListView.Handle,sb_Vert,ScrollPos,true);
ScrollWindow(ListView.Handle,0,ScrollPos,nil,nil);
ListView.Scroll(0,ScrollPos)}
end;
procedure TMainForm.LoadFiles;
var ImageCount:integer;
begin
ListView.Items.Clear;
ListView.Items.Add.Caption:=("[..]");
ListView.Items.Item[0].ImageIndex:=1;{Изображение стрелки наверх}
...
begin
ListView.Items.BeginUpdate;
{Добавляем список строк}
for ImageCount:=1 to ListView.Items.Count-1 do
ListView.Items[ImageCount].ImageIndex:=2;
ListView.Items.EndUpdate;
end;
ListView.Selected := ListView.Items[0];
ListView.Selected.Focused := True
end;
procedure TMainForm.ListViewDblClick(Sender: TObject);
begin
if ListView.Selected <> nil then
begin
if ListView.Selected.Caption="[..]" then
begin
LoadFolders(SelIndex);
end
else
begin
SelIndex:=ListView.Selected.Index;
ScrollPos:=GetScrollPos(ListView.Handle,sb_Vert);
LoadFiles;
end
end
end;
procedure TMainForm.ListViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case key of
VK_Return: ListViewDblClick(Sender);
end
end;
← →
stany (2002-08-17 18:05) [1]Мастера!Помогите,позарез нужно...
← →
stany (2002-08-17 21:19) [2]... ;-(
← →
Diamond Cat (2002-08-18 00:20) [3]попробуй скролировать с помощью Wm_Vscroll,wm_mousewheel
← →
stany (2002-08-18 00:44) [4]Как узнать hwndScrollBar?
← →
stany (2002-08-18 00:51) [5]делаю так PostMessage(ListView.Handle,Wm_Vscroll,SB_ENDSCROLL,0)-не получается!
← →
Diamond Cat (2002-08-19 01:59) [6]Естественно не получается , т.к. Wparam в данном случае имеет более сложную структуру. Хелпы надо читать внимательней
скролируем вниз
procedure TForm1.Button1Click(Sender: TObject);
begin
sendmessage(ListView1.Handle,WM_MOUSEWHEEL,makewparam(0,word(-WHEEL_DELTA)),makelparam(1,1));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
sendmessage(ListView1.Handle,wm_vscroll,MAKEWPARAM(SB_LINEDOWN,0),0);
end;
скролируем вверх
procedure TForm1.Button3Click(Sender: TObject);
begin
sendmessage(ListView1.Handle,WM_MOUSEWHEEL,makewparam(0,WHEEL_DELTA),makelparam(1,1));
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
sendmessage(ListView1.Handle,wm_vscroll,MAKEWPARAM(SB_LINEup,0),0);
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c