Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c