Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-8031
Владимир_
2002-09-21 02:10
2002.10.03
из дельфи 6 в дельфи 5


3-7872
RDA
2002-09-13 15:20
2002.10.03
мастер - деталь


7-8205
ask
2002-07-24 10:26
2002.10.03
Информация о CD


14-8155
vajo
2002-09-09 15:52
2002.10.03
Delphi


1-7938
XPatriot
2002-09-22 00:29
2002.10.03
Работа с Word ом.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский