Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 20:18   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
Смущение ListBox проверка области клика

Добрый вечер всем. У меня есть ListBox заполненый на половину строками, вторая половина это пустое поле, и "для удобства" я хочу при клике по пустой области снимать выделение с выделеной строки.
Самое сложное в этой ситуации распознать куда ты кликнул из процедуры OnClick. Помогите кто может, сам я в этом нулеват
пыжок
maloun вне форума Ответить с цитированием
Старый 17.01.2011, 21:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

ListView в режиме psReport (или что-то в этом духе, точно не помню) обладает таким свойством - кликаешь внизу на пустом - снимается выделение. Я наоборот добивался, чтобы активной становилась последняя строка.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2011, 21:42   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

я так понял вы предлогаете заменить ListBox на ListView или он как-то учавствует, мне нужно именно ListBox
пыжок
maloun вне форума Ответить с цитированием
Старый 17.01.2011, 23:23   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
procedure TfrmMain.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) then
  begin
    with Sender as TListBox do
    begin
      if (ItemAtPos(Point(X, Y), True) = -1) then
      (Sender as TListBox).ItemIndex:=-1;
    end;
  end;
end;
Только непонятно, зачем тебе это? Если строка выделена, значит с ней предпологаются какие-то действия...
Я всегда пишу наоборот:
Код:
  if ListBox1.Items.Count > 0 then
  ListBox1.ItemIndex:= 0;
Это чтобы itemindex не оказался вне зоны (т.е. -1)
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.01.2011, 07:49   #5
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

спасибо всё работает))
Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Только непонятно, зачем тебе это?
у меня popup menu по разному работает когда выделена строка выделена в меню дополнительные строки, если выделеных строк нету то и меню другое, быстро снять выделение можно тыкнув на пустое место. На рабочем столе та же система)

+ если строка выделена после двойново клика делфи подумает что я кликнул на строку, а если после первого клика снимится выделение щелчек будет по пустому месту. И двойной тык может быть только по строке.

Код:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
i:integer;
begin
if (Button = mbLeft) then
begin
with Sender as TListBox do
begin
if (ItemAtPos(Point(X, Y), True) = -1) then
(Sender as TListBox).ItemIndex:=-1;
end;
end;
begin
if (Button=mbRight) then
begin
i:=y shl 16+x;
SendMessage(ListBox1.Handle,WM_LBUTTONDOWN,0,i);
SendMessage(ListBox1.Handle,WM_LBUTTONUP,0,i);
end;
end;
end;
сейчаз там такая процедура,
если клик по пустому месту левой - снять веделение
и по не выделенной строке правой - выделить строку
пыжок

Последний раз редактировалось Stilet; 18.01.2011 в 15:29.
maloun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на одинаковые записи при добавление в ListBox Nice42ru Общие вопросы Delphi 7 05.08.2010 22:42
Проверка недопустимости ввода двух одинаковых слов в ListBox Кибердемон Помощь студентам 4 31.10.2009 14:13
Определение длины пути от клика до клика - как??? Enya Помощь студентам 0 11.05.2009 12:54
Последний штрих или проверка в ListBox Pirotexnik Общие вопросы Delphi 4 27.03.2009 16:14
проверка значений в ListBox Arteom Компоненты Delphi 10 26.05.2008 12:32