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

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

onclick and oncheckclick


Аврам ©   (2008-07-06 17:36:00) 

бодаюсь с компонентом checklistbox, проблема в том что при обработке события onclickcheck срабатывает onclick, а мне нужно только onclickcheck т.к. в onclick другой код. в голову приходит только отслеживание положения курсора,если дальше стольки то пикселей то не срабатывать.
помогите решить дурацкую проблему!
спасибо


Игорь Шевченко   (2008-07-06 23:16:00) [1]


> Еще один кросспостер пойман с поличным.


Кросс-постер- это когда на одном сайте. А на разных - какая разница, я тоже в свое время кросс-постил на Королевство и в borland.public.delphi.language

И ничуть не стыдился :)


Leonid Troyanovsky   (2008-07-06 22:08:00) [2]


> Тын-Дын ©   (06.07.08 22:04) [18]

> Да жалко, что-ли?

Не жалко. Противно.

--
Regards, LVT.


Тын-Дын   (2008-07-06 22:04:00) [3]


> Leonid Troyanovsky ©   (06.07.08 22:01) [17]
>
>
> > Johnmen ©   (06.07.08 21:51) [15]
>
> Еще один кросспостер пойман с поличным.


Да жалко, что-ли?
Тем более, что там ответ намного раньше получен...


Leonid Troyanovsky   (2008-07-06 22:01:00) [4]


> Johnmen ©   (06.07.08 21:51) [15]

Еще один кросспостер пойман с поличным.

--
Regards, LVT.


Leonid Troyanovsky   (2008-07-06 21:52:00) [5]


> Тын-Дын ©   (06.07.08 21:06) [13]

> А зачем лишнюю глобальную переменную вводить?

А зачем глобальную - поля вполне хватит.
Да, и ввел ее автор.

--
Regards, LVT.


Johnmen   (2008-07-06 21:51:00) [6]

http://sql.ru/forum/actualthread.aspx?tid=573657


{RASkov}   (2008-07-06 21:10:00) [7]

> [13] Тын-Дын ©   (06.07.08 21:06)
> А зачем лишнюю глобальную переменную вводить?

Можно использовать в [5] Tag чеклистбокса... так что нормально все :)


Тын-Дын   (2008-07-06 21:06:00) [8]

Небольшая поправка:
Лучше в OnMouseDown устанавливать обработчик:

В этом случае не будут теряться сообщения для OnClick при последовательных нажатих OnClickCheck..OnClick

procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
 ShowMessage('Click');
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
 TCheckListBox(Sender).OnClick := nil;
end;

procedure TForm1.CheckListBox1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 TCheckListBox(Sender).OnClick := CheckListBox1Click;
end;



> Leonid Troyanovsky ©   (06.07.08 20:52) [10]
>
>
> > Ляпа   (06.07.08 20:37) [9]
>
> [5]

А зачем лишнюю глобальную переменную вводить?


{RASkov}   (2008-07-06 21:03:00) [9]

Тогда вот еще вариант:
type TChLBox = class(TCheckListBox);
procedure TForm1.CheckListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if X<TChLBox(Sender).GetCheckWidth+2 then ShowMessage('Check') else ShowMessage('Item');
end;

Пусть выбирает :)


Ляпа   (2008-07-06 20:59:00) [10]


> Leonid Troyanovsky ©   (06.07.08 20:52) [10]

Тоже вариант. Выбирать автору.


Leonid Troyanovsky   (2008-07-06 20:52:00) [11]


> Ляпа   (06.07.08 20:37) [9]

[5]

--
Regards, LVT.


Ляпа   (2008-07-06 20:37:00) [12]


procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
   ShowMessage('1');
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
   xz := true;
   CheckListBox1.OnClick:=nil;
end;

procedure TForm1.CheckListBox1MouseUp(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 CheckListBox1.OnClick:=CheckListBox1Click;
end;


Leonid Troyanovsky   (2008-07-06 20:28:00) [13]


> {RASkov} ©   (06.07.08 20:15) [6]

> Отображается строго по одному сообщению в зависимости от
> события...


procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
 Caption := 'OnClickCheck'+IntToStr(GetTickCount);
end;

--
Regards, LVT.


{RASkov}   (2008-07-06 20:18:00) [14]

Хотя стоп.... вот в таком варианте:
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
 ShowMessage('OnClick');
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
 //ShowMessage('OnClickCheck');
end;

"всегда" показывается OnClick(


{RASkov}   (2008-07-06 20:15:00) [15]

> [4] Аврам   (06.07.08 18:45)
> при нажатии на check срабатывает onclick

Какая версия делфи?
В Д7 нормально все, т.е. вот это:
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
 ShowMessage('OnClick');
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
 ShowMessage('OnClickCheck');
end;

Отображается строго по одному сообщению в зависимости от события...


Leonid Troyanovsky   (2008-07-06 20:00:00) [16]


> Аврам   (06.07.08 18:45) [4]


procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
 if xz then
   xz := False
 else
   ShowMessage('1');
end;

--
Regards, LVT.


Аврам   (2008-07-06 18:45:00) [17]

xz : boolean;
...
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
ShowMessage('1');
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
xz := true;
end;

вот пример, используется стандартный checklistbox,
при нажатии на check срабатывает onclick


Аврам   (2008-07-06 18:02:00) [18]

имею ввиду что обрабатывает сначала oncheckclick а затем onclick,а мне нужно чтобы при изменении флажков обрабатывался только oncheckclick


Ляпа   (2008-07-06 18:01:00) [19]


> при обработке события onclickcheck срабатывает onclick,

У меня не срабатывает. Что я делаю не так?


Аврам   (2008-07-06 17:55:00) [20]

Удалено модератором
Примечание: Создание пустых сообщений


Наверх

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