|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#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; сделано это для расширенного способа редактирования выделенной строки. На появляющихся панелях находятся необходимые компоненты для этого. Если после выделения строки начать прокрутку то появившиеся панели естественно остаются на месте, а выделенная строка уползает вверх/вниз по списку. Как синхронизировать при прокрутке списка выделенную строку и панели на ней? Последний раз редактировалось Admin, 02.07.2009 в 16:34. |