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


Автор: artem1987 6.9.2006, 19:14
как можно выделить сторчку в листвью с по нажатии правой кнопкой 
и что за свойство ItemAtPos(TPoint;bool):integer?

Автор: Alexeis 6.9.2006, 19:23
Цитата(artem1987 @  6.9.2006,  19:14 Найти цитируемый пост)
ItemAtPos(TPoint;bool):integer? 

Определяет какой элемент расположен в точке с координатами указаными в TPoint

Автор: Тьма 6.9.2006, 19:25
Цитата(artem1987 @  6.9.2006,  19:14 Найти цитируемый пост)
как можно выделить сторчку в листвью с по нажатии правой кнопкой 

мышью, а обрабатывать в OnMouseUp(Down)

Автор: artem1987 6.9.2006, 19:27
так и делаю но как мне по координатам мышки получить индекс строчки или чегонибудь чтоб её выделить?

Автор: Matematik 6.9.2006, 19:37
Код

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var li:TListItem;
begin
  li := ListView1.GetItemAt(x,y);
  if li<>nil then
  begin
    li.Selected := True;
    ShowMessage(IntToStr(li.Index))
  end;
end;

Автор: artem1987 6.9.2006, 19:43
прошу прощения за кривые руки имел ввиду не ListView а ListBox а там нету GetItemAt
я вот так пробую
Код

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  pnt : TPoint;
  jj : integer;
begin
  if Button = mbRight then
    with ( Sender as TControl ).ClientToScreen( Point( X, Y )) do begin
       pnt.x:=x;
       pnt.y:=y;
      listbox1.Items[listbox1.ItemAtPos(pnt,true)].xxxxxxxxxxxx;
      PopupMenu1.Popup( pnt.x, pnt.y );
    end;
end;

но вочемуто эта дрянь listbox1.ItemAtPos(pnt,true) не даёт индекс
где косяк?

Автор: Matematik 6.9.2006, 20:06
Не надо делать ClientToScreen
Код

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var k:Integer;
begin
  k := listbox1.ItemAtPos(Point(x,y),true);
  if k<>-1 then listbox1.Selected[k] := True
end;

Автор: artem1987 7.9.2006, 09:12
большое спасибо,mathematik в списке получить по репе,
а что весь косяк был с ClienttoScreen?

Автор: Matematik 7.9.2006, 10:47
Цитата(artem1987 @  7.9.2006,  10:12 Найти цитируемый пост)
а что весь косяк был с ClienttoScreen?

Да. И еще надо проверять что возвращаетт функция ItemAtPos, на всяк пожарный

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