Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить номер текуще строки в ListBox !? [D7, WinXP]


312kbps ©   (2007-12-20 16:03:00) 

На фоме есть ЛистВокс в нем список.
К ЛистВоксу подцепелно меню.

при нажатии правой кнопки мыши над лист воксом выводится меню  далее обрабатывается процедура.
как мне узнать над какой строкой было вызвано меню ? узнать номер строки ?


{RASkov}   (2007-12-20 21:30:00) [1]

> [7] Palladin ©   (20.12.07 19:07)
> что то как то это все ректально :)

ступил :(
:) бывает


Palladin   (2007-12-20 19:07:00) [2]


> [6] {RASkov} ©   (20.12.07 18:51)

что то как то это все ректально :)

procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint;
 var Handled: Boolean);
Var
n:Integer;
begin
n:=TListBox(Sender).ItemAtPos(MousePos,True);
If n<>-1 Then TListBox(Sender).ItemIndex:=n;
end;


{RASkov}   (2007-12-20 18:51:00) [3]

> [5] 312kbps   (20.12.07 16:13)

Высота строк в листбоксе у всех одинаковая?
Если да то вот так попробуй:
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
 ListBox1.ItemIndex:=ListBox1.TopIndex+(MousePos.Y div ListBox1.ItemHeight);
 if ListBox1.ItemIndex<0 then Exit;
 //Caption:=ListBox1.Items[ListBox1.ItemIndex];
end;


312kbps   (2007-12-20 16:13:00) [4]

тогда так, чтоб при вызове меню данная строка над которой вызвано меню выделялась

просто в этом меню отображаются дальнейшие действия над данной строкой )

!?


Юрий Зотов   (2007-12-20 16:12:00) [5]

> 312kbps   (20.12.07 16:06) [3]

Юзер будет в восторге, когда поймет, что операция выполнена не с тем элементом листбокса, который он видит выделенным, а непонятно с каким.


312kbps   (2007-12-20 16:06:00) [6]

так можно узнать только после того как выделишь строку в списке, нажатием левой кн мышки

а мне надо узнать над кокой строкой было вызвано меню


Kolan   (2007-12-20 16:05:00) [7]

> ListBox.ItemIndex ?

Даже лучьше

if Sender is TListBox then
 (Sender as TListBox).ItemIndex


Kerk   (2007-12-20 16:04:00) [8]

ListBox.ItemIndex ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо