Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.049 c
2-1214930400
Аврам
2008-07-01 20:40
2008.08.03
автомат обновление


10-1139646655
_Seldon_
2006-02-11 11:30
2008.08.03
Delphi+Visio


2-1215085766
lead-in
2008-07-03 15:49
2008.08.03
CreateProcess


2-1214905271
Саша
2008-07-01 13:41
2008.08.03
Выделение строк в ListBox


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский