![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TCustomListBox -- OnDblClick
мфтнф_й © (2007-10-07 11:47:00)Сделал свой наследник TCheckListBox (который в свою очередь является наследником TCustomListBox), в котором сделал свой обработчик procedure DblClick; override;
И теперь в рабочем состоянии отправить OnDblClick произвольному элементу. (не производя этот двойной клик на элементе) ?
мфтнф_й (2007-10-07 13:09:00) [1]Проблема у меня в другом наверное. Дело в том, что в своем классе я отрисовываю в DrawItem. А при обработке кода выше по OnClick как-то срабатываетп перевод фокуса(?) что просто изменения которые рисуются по DblClick - DrawItem просто не видно, т.к. фокус переводится с нужного элемента. (точнее они отрисовываются и тут же сбрасываются - т.к. фокус переводится на другой элемент) - а что и как не пойму.
Ну например идиотское решение для теста, сделел таймер с с interval = 1, который и вызывает отрисовку внутри обработки OnClick. Но это полностью идиотское решение.
мфтнф_й (2007-10-07 12:28:00) [2]Ок, разобрался.
Но теперь не пойму, почему, не работает это в случае с
OnClick:
>
>
> MyEditListBox1.Items.Insert(MyEditListBox1.ItemIndex,
> '...');
>
> MyEditListBox1.MultiSelect := False;
> MyEditListBox1.Selected[MyEditListBox1.ItemIndex] :
> = True;
> MyEditListBox1.DblClick;
Вот в этом случае не хочет срабатывать DblClick. Если делаю DblClick отдельно по щелчку кнопки, к примеру -- все работет. А так нет, хотя сам DblClick срабатывает.
DVM (2007-10-07 12:18:00) [3]
> Проблема в том, что мой OnDblClick - задан в моем классе
Кто тебе мешает добавить публичный метод MyDblClick внутри которого вызывается твой DblClick.
мфтнф_й (2007-10-07 12:14:00) [4]Проблема в том, что мой OnDblClick - задан в моем классе
procedure DblClick; override;
а не в конекретном OnDblClick экземпляра на форме.
Попытки заставить работать как по схеме выще - не получаются.
DVM (2007-10-07 12:05:00) [5]Ну так вызови этот обработчик при нажатии кнопки и всего делов, не понимаю я проблемы че-то.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure ListBox1DblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
//
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1DblClick(nil);
end;
end.
мфтнф_й (2007-10-07 12:00:00) [6]Ну т.е. есть у меня заполненный котролл, щелкаю я по любому элементу два раза (dblclick) и у меня срабатыват мой обработчик. А как мне заставить срабатывать его без двойного клика, например у меня есть кнопка, я хочу что бы при нажатии на неё, у меня в пятом элементе контролла срабатывал OnDblClick как при двойном щелчке по нему.
DVM (2007-10-07 11:57:00) [7]
> И теперь в рабочем состоянии отправить OnDblClick произвольному
> элементу
Какому еще элементу?