Sascha Опубликовано 25 ноября, 2021 Поделиться Опубликовано 25 ноября, 2021 Весь день бьюсь и не могу заставить код откомпилироваться без ошибок. Есть фрейм, на нем динамически создаем потомков TImage класса. unit fram; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Objects, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation; type TMovingImage = class(TImage) constructor Create(AOwner: TComponent; X, Y: integer); overload; end; type TFrame1 = class(TFrame) Button1: TButton; procedure imgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); private public end; implementation {$R *.fmx} uses main; constructor TMovingImage.Create(AOwner: TComponent; X, Y: integer); begin inherited Create(AOwner); Position.X := X; Position.Y := Y; Width := 100; Height := 100; onMouseDown := TFrame1.imgMouseDown; end; procedure TFrame1.imgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin // code here end; end. Не могу присвоить событию OnMouseDown, десяток вариантов попробовал. Компилятору постоянно что-то не нравится! Please help me Цитата Ссылка на комментарий
0 OnePeople Опубликовано 25 ноября, 2021 Поделиться Опубликовано 25 ноября, 2021 TFrame1.imgMouseDown; Может все таки Frame1.imgMouseDown; Цитата Ссылка на комментарий
0 Sascha Опубликовано 25 ноября, 2021 Автор Поделиться Опубликовано 25 ноября, 2021 15 минут назад, OnePeople сказал: TFrame1.imgMouseDown; Может все таки Frame1.imgMouseDown; так тоже пробовал Undeclared identifier: Frame1 Цитата Ссылка на комментарий
0 OnePeople Опубликовано 25 ноября, 2021 Поделиться Опубликовано 25 ноября, 2021 onMouseDown := (Self.Parent as TFrame6).imgMouseDown; Sascha и Ingalime 1 1 Цитата Ссылка на комментарий
0 Sascha Опубликовано 25 ноября, 2021 Автор Поделиться Опубликовано 25 ноября, 2021 58 минут назад, OnePeople сказал: onMouseDown := (Self.Parent as TFrame6).imgMouseDown; Наворочено, но работает)) спасибо Цитата Ссылка на комментарий
0 OnePeople Опубликовано 25 ноября, 2021 Поделиться Опубликовано 25 ноября, 2021 onMouseDown := (Название формы в main).Frame11.imgMouseDown; Цитата Ссылка на комментарий
0 krapotkin Опубликовано 26 ноября, 2021 Поделиться Опубликовано 26 ноября, 2021 эмм крайне странная логика, не ? обработчик должен присваивать тот кто создает, а не тот, кого создают и уж 99.9% компонент не должен знать ничего о классе, куда его будут вставлять procedure TFrame6.SomeProc(); var img: TMyImage; begin img := TMyImage.Create(Self); img.parent := layout5; img.OnMouseDown := OnMouseDown; images.add(img); end; OnePeople 1 Цитата Ссылка на комментарий
Вопрос
Sascha
Весь день бьюсь и не могу заставить код откомпилироваться без ошибок.
Есть фрейм, на нем динамически создаем потомков TImage класса.
unit fram; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Objects, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation; type TMovingImage = class(TImage) constructor Create(AOwner: TComponent; X, Y: integer); overload; end; type TFrame1 = class(TFrame) Button1: TButton; procedure imgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); private public end; implementation {$R *.fmx} uses main; constructor TMovingImage.Create(AOwner: TComponent; X, Y: integer); begin inherited Create(AOwner); Position.X := X; Position.Y := Y; Width := 100; Height := 100; onMouseDown := TFrame1.imgMouseDown; end; procedure TFrame1.imgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin // code here end; end.
Не могу присвоить событию OnMouseDown, десяток вариантов попробовал. Компилятору постоянно что-то не нравится! Please help me
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.