Сделал редактирование данных в ListBoxItem.ItemData.Detail отображением другой формы с полем ввода и полупрозрачным затенением оставшейся части экрана (доработал под себя имеющиеся на данном форуме примеры своего InputQuery). Окно вызываю по событию ListBoxItem.OnClick. Но когда элементы занимают больше экрана, то при попытке прокрутки списка зачастую вызывается редактор значения. Подумал, может быть на двойной клик повесить вызов этого редактора, но к своему удивлению обнаружил, что у ListBoxItem нет такого события. Может быть, есть способ в обработчике события ListBoxItem.OnClick отделить одинарные клики от двойных (для VCL был подобный пример)? Также на форуме приводили временное решение для другого компонента, на тестовом примере оно вроде бы работает (хотя жутко неудобно добавлять обработчики для каждого айтема в рантайм):
...
type
TListBoxItem = class(FMX.ListBox.TListBoxItem)
property OnDblClick;
end;
TForm1 = class(TForm)
...
public
{ Public declarations }
procedure MyDblClick(Sender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBoxItem1.OnDblClick := MyDblClick;
end;
procedure TForm1.MyDblClick(Sender: TObject);
begin
ShowMessage('DblClick');
end;
Но вот когда пробую аналогичное в упомянутом выше боевом проекте использовать, то при первом двойном клике возникает AV (там, где по одинарному клику все прекрасно).
Вопрос
Palych
Здравствуйте!
Сделал редактирование данных в ListBoxItem.ItemData.Detail отображением другой формы с полем ввода и полупрозрачным затенением оставшейся части экрана (доработал под себя имеющиеся на данном форуме примеры своего InputQuery). Окно вызываю по событию ListBoxItem.OnClick. Но когда элементы занимают больше экрана, то при попытке прокрутки списка зачастую вызывается редактор значения. Подумал, может быть на двойной клик повесить вызов этого редактора, но к своему удивлению обнаружил, что у ListBoxItem нет такого события. Может быть, есть способ в обработчике события ListBoxItem.OnClick отделить одинарные клики от двойных (для VCL был подобный пример)? Также на форуме приводили временное решение для другого компонента, на тестовом примере оно вроде бы работает (хотя жутко неудобно добавлять обработчики для каждого айтема в рантайм):
... type TListBoxItem = class(FMX.ListBox.TListBoxItem) property OnDblClick; end; TForm1 = class(TForm) ... public { Public declarations } procedure MyDblClick(Sender: TObject); end; procedure TForm1.FormCreate(Sender: TObject); begin ListBoxItem1.OnDblClick := MyDblClick; end; procedure TForm1.MyDblClick(Sender: TObject); begin ShowMessage('DblClick'); end;
Но вот когда пробую аналогичное в упомянутом выше боевом проекте использовать, то при первом двойном клике возникает AV (там, где по одинарному клику все прекрасно).
Ссылка на комментарий
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.