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

Как узнать из какого ListBoxItem был вызван обработчик


Kikoma

Вопрос

Здравствуйте.

Стоит задача: Кастомизированный TListBoxItem содержит TText.Price, TSpinBox.SBCount, TText.Sum.

т.е. есть цена, изменяем кол-во получаем сумму и все это в TListBoxItem.

 

Вешаем обработчик на TSpinBox.SBCountChange, но встает вопрос, каким образом узнать в каком  TListBoxItem произошло событие?

procedure TForm2.SBCountChange(Sender: TObject);
var
  Item: TListBoxItem;
  SB: TSpinBox;
  s1, s2: string;
begin
  SB := Sender as TSpinBox; // Получили Sender из TSpinBox
  if Assigned(SB) and (SB is TSpinBox) then 
  begin

    Item := ?????? //Узнаем из какого итема была вызван эта процедура

    s1 := StringReplace(Item.StylesData['TextPrice'].ToString,'.',',',[rfReplaceAll, rfIgnoreCase]);  //Тут обертка точку на запятую меняю
    s2 := StringReplace(Item.StylesData['SBCount.Text'].ToString,'.',',',[rfReplaceAll, rfIgnoreCase]);
    Item.StylesData['TextSum.Text'] := IntToStr(Round(StrToFloat(s1) * StrToInt(s2)));
  end;
end;
Ссылка на комментарий

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

  • 0

Для этого надо найти ближайшего родителя у элемента класса, нужного класса (прошу прощения за тавтологию). С помощью вот такой вот универсальной функции.

Item := TListBoxItem(FindItemParent(Sender as TFmxObject,TListBoxItem));
function FindItemParent(Obj: TFmxObject; ParentClass: TClass): TFmxObject;
begin
  Result := nil;
  if Assigned(Obj.Parent) then
    if Obj.Parent.ClassType = ParentClass then
      Result := Obj.Parent
    else
      Result := FindItemParent(Obj.Parent, ParentClass);
end;
Ссылка на комментарий

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

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

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

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

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

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

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

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

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

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