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

Вниз

TCustomListBox -- OnDblClick   Найти похожие ветки 

 
мфтнф_й   (2007-10-07 11:47) [0]

Сделал свой наследник TCheckListBox (который в свою очередь является наследником TCustomListBox), в котором сделал свой обработчик     procedure DblClick; override;

И теперь в рабочем состоянии отправить OnDblClick произвольному элементу. (не производя этот двойной клик на элементе) ?


 
DVM ©   (2007-10-07 11:57) [1]


> И теперь в рабочем состоянии отправить OnDblClick произвольному
> элементу

Какому еще элементу?


 
мфтнф_й   (2007-10-07 12:00) [2]

Ну т.е. есть у меня заполненный котролл, щелкаю я по любому элементу два раза (dblclick) и у меня срабатыват мой обработчик. А как мне заставить срабатывать его без двойного клика, например у меня есть кнопка, я хочу что бы при нажатии на неё, у меня в пятом элементе контролла срабатывал OnDblClick как при двойном щелчке по нему.


 
DVM ©   (2007-10-07 12:05) [3]

Ну так вызови этот обработчик при нажатии кнопки и всего делов, не понимаю я проблемы че-то.

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:14) [4]

Проблема в том, что мой OnDblClick - задан в моем классе

procedure DblClick; override;

а не в конекретном OnDblClick экземпляра на форме.

Попытки заставить работать как по схеме выще - не получаются.


 
DVM ©   (2007-10-07 12:18) [5]


> Проблема в том, что мой OnDblClick - задан в моем классе

Кто тебе мешает добавить публичный метод MyDblClick внутри которого вызывается твой DblClick.


 
мфтнф_й   (2007-10-07 12:28) [6]

Ок, разобрался.

Но теперь не пойму, почему, не работает это в случае с

OnClick:

>
>
>      MyEditListBox1.Items.Insert(MyEditListBox1.ItemIndex,
>  "...");
>
>      MyEditListBox1.MultiSelect := False;
>      MyEditListBox1.Selected[MyEditListBox1.ItemIndex] :
> = True;
>      MyEditListBox1.DblClick;


Вот в этом случае не хочет срабатывать DblClick. Если делаю DblClick отдельно по щелчку кнопки, к примеру -- все работет. А так нет, хотя сам DblClick срабатывает.


 
мфтнф_й   (2007-10-07 13:09) [7]

Проблема у меня в другом наверное. Дело в том, что в своем классе я отрисовываю в DrawItem. А при обработке кода выше по OnClick как-то срабатываетп перевод фокуса(?) что просто изменения которые рисуются по DblClick - DrawItem просто не видно, т.к. фокус переводится с нужного элемента. (точнее они отрисовываются и тут же сбрасываются - т.к. фокус переводится на другой элемент) - а что и как не пойму.

Ну например идиотское решение для теста, сделел таймер с с interval = 1, который и вызывает отрисовку внутри обработки OnClick. Но это полностью идиотское решение.



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1191331842
_volodya
2007-10-02 17:30
2007.10.28
Массивы / TList


2-1191309484
Alex7
2007-10-02 11:18
2007.10.28
Desc - сортировка ADODataSet используя IndexFieldNames


2-1191398821
Кевларвестов Семен
2007-10-03 12:07
2007.10.28
Про TStringList.DelimitedText


2-1191401258
User_0
2007-10-03 12:47
2007.10.28
Как записать путь к БД в *.ini(Interbase)


2-1191926637
F@T@L_Err0r
2007-10-09 14:43
2007.10.28
Mutex