Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.03;
Скачать: CL | DM;

Вниз

onclick and oncheckclick   Найти похожие ветки 

 
Аврам   (2008-07-06 17:36) [0]

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


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

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


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


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

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


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

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


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

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

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

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


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


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


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

--
Regards, LVT.


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

> [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;

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


 
{RASkov} ©   (2008-07-06 20:18) [7]

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

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

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


 
Leonid Troyanovsky ©   (2008-07-06 20:28) [8]


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

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


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

--
Regards, LVT.


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


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:52) [10]


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

[5]

--
Regards, LVT.


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


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

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


 
{RASkov} ©   (2008-07-06 21:03) [12]

Тогда вот еще вариант:
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 21:06) [13]

Небольшая поправка:
Лучше в 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:10) [14]

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

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


 
Johnmen ©   (2008-07-06 21:51) [15]

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


 
Leonid Troyanovsky ©   (2008-07-06 21:52) [16]


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

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

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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-07-06 22:01) [17]


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

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

--
Regards, LVT.


 
Тын-Дын ©   (2008-07-06 22:04) [18]


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


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


 
Leonid Troyanovsky ©   (2008-07-06 22:08) [19]


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

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

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

--
Regards, LVT.


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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.08.03;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
10-1139646655
_Seldon_
2006-02-11 11:30
2008.08.03
Delphi+Visio


15-1213538221
AenorRisen
2008-06-15 17:57
2008.08.03
Центрирование повернутого текста


3-1203489861
Kolan
2008-02-20 09:44
2008.08.03
Как добавить в DataSet колонку.


3-1203617602
Abacus
2008-02-21 21:13
2008.08.03
mc access экспорт таблици


2-1214858997
AlexeyMir
2008-07-01 00:49
2008.08.03
Версия проекта