Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.07.2009, 16:29
ardent ardent вне форума
Прохожий
 
Регистрация: 02.07.2009
Сообщения: 2
Репутация: 10
По умолчанию ListView,прокрутка

Добрый день, подскажите пожалуйста, что можно сделать в этом случае...
При клике в ListView, на строке появляются панели (Panel) для некоторых столбцов. Происходит это вот так:
Код:
procedure TForm1.ListView12MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
r0,r1,r2,r3: TRect;
pb0,pb1,pb2,pb3: TPanel;
begin
panel63.Visible:=false;
panel65.Visible:=false;
panel67.Visible:=false;
panel69.Visible:=false;
if chset='' then exit;
if (listview12.Items.Count=0) or (listview12.selected=nil) then exit;
r0:= Listview12.Items[listview12.Selected.Index].DisplayRect(drBounds);
r1:= Listview12.Items[listview12.Selected.Index].DisplayRect(drBounds);
r2:= Listview12.Items[listview12.Selected.Index].DisplayRect(drBounds);
r3:= Listview12.Items[listview12.Selected.Index].DisplayRect(drBounds);

r0.Left := r0.Left + Listview12.columns[0].Width+Listview12.columns[1].Width;
r0.Right:= r0.Left + Listview12.columns[2].Width;

r1.Left := r1.Left + Listview12.columns[0].Width+Listview12.columns[1].Width+Listview12.columns[2].Width;
r1.Right:= r1.Left + Listview12.columns[3].Width;

r2.Left := r2.Left + Listview12.columns[0].Width+Listview12.columns[1].Width+Listview12.columns[2].Width+Listview12.columns[3].Width;
r2.Right:= r2.Left + Listview12.columns[4].Width;

r3.Left := r3.Left + Listview12.columns[0].Width+Listview12.columns[1].Width+Listview12.columns[2].Width+Listview12.columns[3].Width + Listview12.columns[4].Width;
r3.Right:= r3.Left + Listview12.columns[5].Width;

panel63.Height:=r0.Bottom-r0.Top;
panel64.Height:=r0.Bottom-r0.Top;

panel65.Height:=r1.Bottom-r1.Top;
panel66.Height:=r1.Bottom-r1.Top;

panel67.Height:=r2.Bottom-r2.Top;
panel68.Height:=r2.Bottom-r2.Top;

panel69.Height:=r3.Bottom-r3.Top;
panel70.Height:=r3.Bottom-r3.Top;

pb0 := panel63;
pb0.Parent := Listview12;
pb0.BoundsRect := r0;
Listview12.Items[0].Data := pb0;
edit11.Text:=listview12.Selected.Su bItems.Strings[1];
panel75.Visible :=false;
panel63.Visible:=true;

pb1 := panel65;
pb1.Parent := Listview12;
pb1.BoundsRect := r1;
Listview12.Items[0].Data := pb1;
edit18.Text:=listview12.Selected.Su bItems.Strings[2];
panel65.Visible:=true;

pb2 := panel67;
pb2.Parent := Listview12;
pb2.BoundsRect := r2;
Listview12.Items[0].Data := pb2;
edit19.Text:=listview12.Selected.Su bItems.Strings[3];
panel76.Visible:=false;
panel67.Visible:=true;

pb3 := panel69;
pb3.Parent := Listview12;
pb3.BoundsRect := r3;
Listview12.Items[0].Data := pb3;
edit20.Text:=listview12.Selected.Su bItems.Strings[4];
panel69.Visible:=true;
end;
Admin: Пользуемся тегами!

сделано это для расширенного способа редактирования выделенной строки. На появляющихся панелях находятся необходимые компоненты для этого. Если после выделения строки начать прокрутку то появившиеся панели естественно остаются на месте, а выделенная строка уползает вверх/вниз по списку.
Как синхронизировать при прокрутке списка выделенную строку и панели на ней?

Последний раз редактировалось Admin, 02.07.2009 в 16:34.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:52.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter