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


Автор: MrDmitry 15.12.2008, 14:29
Есть CheckListBox в котором все переключатели добавляются по ходу выполнения программы. Нужно при наведении мышки на один из флажков (не нажатии а именно наведении) вывести название флашка в свойство HINT

Автор: Frees 15.12.2008, 14:40
суть вот такая только проверки надо написать что индекс корректный был
Код

procedure TForm1.CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  CheckListBox1.Hint :=
     CheckListBox1.Items[CheckListBox1.ItemAtPos(Point(X,Y),false)];
end;

Автор: MrDmitry 15.12.2008, 15:55
Цитата(Frees @ 15.12.2008,  14:40)
суть вот такая только проверки надо написать что индекс корректный был
Код

procedure TForm1.CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  CheckListBox1.Hint :=
     CheckListBox1.Items[CheckListBox1.ItemAtPos(Point(X,Y),false)];
end;

Код работает. Но если я навожу курсор на свободное место от флажков выходит ошибка 

List index out of bounds (77)

Автор: Frees 15.12.2008, 15:59
Цитата(MrDmitry @  15.12.2008,  17:55 Найти цитируемый пост)
Код работает. Но если я навожу курсор на свободное место от флажков выходит ошибка 

дак я и сказал выше что проверять надо 

вот 
Код


procedure TForm1.CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var i: Integer;
begin
  i := CheckListBox1.ItemAtPos(Point(X,Y),false);
  if (i>0)and(i<CheckListBox1.Items.count) then
    CheckListBox1.Hint :=  CheckListBox1.Items[i]
  else
    CheckListBox1.Hint := '';  
end;

Автор: MrDmitry 15.12.2008, 16:05
Цитата(Frees @ 15.12.2008,  15:59)
Цитата(MrDmitry @  15.12.2008,  17:55 Найти цитируемый пост)
Код работает. Но если я навожу курсор на свободное место от флажков выходит ошибка 

дак я и сказал выше что проверять надо 

вот 
Код


procedure TForm1.CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var i: Integer;
begin
  i := CheckListBox1.ItemAtPos(Point(X,Y),false);
  if (i>0)and(i<CheckListBox1.Items.count) then
    CheckListBox1.Hint :=  CheckListBox1.Items[i]
  else
    CheckListBox1.Hint := '';  
end;

Сорри  что-то я проглядел.  Спасибо за помощь

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