Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Редактирование ListView


Автор: CynicRus 14.7.2012, 10:42
Приветствую уважаемых форумчан, требуется отредактировать 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
 выполняется. Что я не так делаю?

Автор: CynicRus 14.7.2012, 14:54
Понял таки что я не так делал, не нашел сходу commcntrl.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)