![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Удалено модератором
Примечание: Создание пустых сообщений