Приветствую уважаемых форумчан, требуется отредактировать subitem в заполненом ListView в режиме vsReport. Для этого делаю(на форме заполненый lv: TListView, ppEdit: TEdit(visible:=false)): по клику на listview:
| Код | var pt: TPoint; rc: TRect; begin GetCursorPos(pt); pt:=lv.ScreenToClient(pt); eitem:=lv.GetItemAt(10,pt.y); //eitem:=lv.Selected; if MouseClickOnSubItem(rc,eitem,pt.x,pt.y) then begin ppEdit.Left:=rc.Left; ppEdit.Top:=rc.Top; ppEdit.Width:=rc.Right - rc.Left; ppEdit.Height:=rc.Bottom - rc.Top + 4; ppEdit.Text:=eitem.SubItems.Strings[0]; if not ppEdit.Visible then begin ppEdit.Visible:=true; ppEdit.SetFocus; end else ppEdit.Visible:=false; end; end;
function TCompForm.MouseClickOnSubItem(rc: TRect; item: TListItem; x, y: integer): boolean; begin if not assigned(item) then exit; rc:=Item.DisplayRect(drBounds); rc.Left:=lv.Columns.Items[0].Width+2; rc.Right:=rc.Left+lv.Columns.Items[0].Width-2; //(X>= rc.Left && X <= rc.Right) && (Y>=rc.Top && Y <= rc.Bottom); if (((x>=rc.Left) or (x<=rc.Right)) or ((y>=rc.Top) or (y <= rc.Bottom))) then result:=true else result:=false; end;
|
MouseClickOnSubitem - возвращает true; код назначения свойств эдиту выполняется, но он не появляется. Хотя код
| Код | begin ppEdit.Visible:=true; ppEdit.SetFocus; end
|
выполняется. Что я не так делаю?
|