Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2009, 16:06   #1
ardent
Новичок
Джуниор
 
Регистрация: 02.07.2009
Сообщений: 1
По умолчанию 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;

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка в listbox-e. blackstersl Общие вопросы Delphi 1 21.06.2009 10:12
Прокрутка на сайте DALLAS JavaScript, Ajax 1 07.01.2009 09:34
checkbox и прокрутка dimonbest Общие вопросы Delphi 4 12.12.2008 10:52
Прокрутка nala HTML и CSS 0 29.09.2008 16:15
Прокрутка в Memo KlErik Компоненты Delphi 2 29.05.2007 22:00