Перейти к содержанию
Fire Monkey от А до Я
  • 0

Передать счетчик в событие


Alesk

Вопрос

Допустим есть созданный в рантайме массив кнопок, к этим кнопкам я подключил gesturemanager, и одно событие on gesture на всех через цикл:

for ii:=1 to 101 do
begin
izm[ii] := TButton.Create(tabbedwithnavigationform.i1);
    izm[ii].BeginUpdate;
    izm[ii].Touch.GestureManager:=tabbedwithnavigationform.TabControl1.Touch.GestureManager;
    izm[ii].Touch.InteractiveGestures:=tabbedwithnavigationform.Button99.Touch.InteractiveGestures;
    izm[ii].OnGesture:=tabbedwithnavigationform.button99.OnGesture;
    izm[ii].Align := talignlayout.top;
    izm[ii].Text:=s;
    izm[ii].OnTap:=sob;
    izm[ii].EndUpdate;
    izm[ii].Parent := pod[g];
end;

в событии button99.ongesture должны производиться некоторые действия с кнопкой из массива, с которой в данный момент взаимодействует пользователь, т.е. если он нажал допустим на 45 кнопку, то и действия должны производится с 45 кнопкой. Вот только как это реализовать? Передать индекс в событие нельзя, создать свою процедуру тоже.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
37 минут назад, GASCHE сказал:

Используйте свойство Tag, при создании кнопки задайте его, при обработке прочитайте.

Хорошо, допустим я задал каждой кнопке свой тэг, но толку от этого? Как в событии узнать какая именно кнопка его(событие) вызвала? Ведь чтобы прочитать тэг, нужно сначала узнать у какой кнопки его прочитать. Или я что-то не так понял?

Ссылка на комментарий
  • 0
tabbedwithnavigationform.button99.OnGesture

это плохой стиль однако, когда мы привязываемся к какому-то конкретному элементу интерфейса

то, что кнопка называется button99 - это плохой стиль, часть вторая

а сам вопрос из букваря. в событие передается параметр Sender - это ссылка на тот компонент, у которого это событие произошло. Только тип нужно привести к настоящему...

можно так

procedure TForm1.ButtonClick(Sender:TObject);
var b:TButton absolute Sender;
begin
  showMessage('Нажата кнопка '+b.Name);
end;

end;

Ссылка на комментарий
  • 0
20 минут назад, krapotkin сказал:

tabbedwithnavigationform.button99.OnGesture

это плохой стиль однако, когда мы привязываемся к какому-то конкретному элементу интерфейса

то, что кнопка называется button99 - это плохой стиль, часть вторая

а сам вопрос из букваря. в событие передается параметр Sender - это ссылка на тот компонент, у которого это событие произошло. Только тип нужно привести к настоящему...

можно так


procedure TForm1.ButtonClick(Sender:TObject);
var b:TButton absolute Sender;
begin
  showMessage('Нажата кнопка '+b.Name);
end;

end;

Насчет привязки к конкретному элементу, был вопрос http://fire-monkey.ru/topic/2988-zhesty-v-runtime/ в итоге я просто не нашел другого выхода как привязывать к другим элементам. Пробовал также создавать свои "события" для элементов созданных программно, но появлялась ошибка при попытке присвоить "событие" элементу. Мол, это невозмжно сделать, т.к. ты пытаешься присвоить обычную процедуру, а не событие. Есть ли какой способ создать событие программному элементу не привязывая его к другому?

Ссылка на комментарий
  • 0

в указанной теме нет кода, не на что ответить. там даже нет ошибки, которая происходит. Слово "ругается" - это просто детский сад...

в предыдущей теме был ответ по поводу обработчика. Обработчик - это не процедура, а метод класса, например класса TForm1

procedure TForm1.UniversalHandler(Sender:TObject);
begin
...
end;

...

b:=TButton.Create(Self);
b.OnClick:=UniversalHander;

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...