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

ivadimos

Пользователи
  • Постов

    116
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент ivadimos

  1. заметил особенность. открыл прилагу - не меняет. заблокировал телефон, разблокировал. Цвет стал меняться
  2. Думаете не пробовал? первым делом, но компилятор ругает, что все равно явно не знает какой там тип
  3. Почти по такому принципу у меня сейчас и работает. У меня есть метод draw у родителя и я его просто переопределил для каждого наследника. НО. А если задача стоит так, что компоненты не содержат метода отрисовки? Они отрисовываются внешним классом, который имеет перегруженный метод, принимающий объекты. Внешний класс не имеет никакого отношения к этой иерархии классов.
  4. FMX же юзает стилизацию той операционной системы, на которой Вы запускаете приложение. Можете проверить на TSwitch компонентах и будете удивлены)
  5. Я это прекрасно понимаю, просто заинтересовало, есть ли такая возможность: перегрузить метод внешнего класса, который определит, что передаю я туда потомка класса. Хотя лист объявлен как лист объектов родительского класса.
  6. Нужно создать список с объектами различных классов. Внешний модуль принимает элемент списка в перегруженный метод. Без использования операторов is, if, case of. Метод делает что угодно, допустим выводит сообщение. Я, естественно, понимаю, что проще и изящнее будет реализовать метод draw внутри каждого класса, но стоит другая задача. Мне просто интересно можно так сделать или нет? //в С# это решается через dynamic переменные.
  7. логично, но как я могу перебирая лист определить тип без операторов is, if, case of? В этом то и проблема) Нужен какой-то лист, в который можно поместить объекты разных типов, а компилятор явно определяет его тип при передаче в перегруженный метод другого класса
  8. об этом я написал в первом посте Есть третий класс С, который имеет перегруженный метод для всех дочерних классов (A). procedure p(obj: B1); procedure p(obj B2); Но объект в классе С всегда воспринимается как объект класса А. Как я могу решить проблему?
  9. мы, видимо, недопонимаем друг друга. Класс реализующий Draw - сторонний класс, и в иерархии классов он обособлен от других, но в качестве параметров принимает все объекты классов, которые являются дочерними классу TBaseComponent unit Drawer; interface uses BaseComponent, RectangleComponent, CircleComponent, FMX.Dialogs; type TDrawer = Class procedure Draw(RectangleComponent: TRectangleComponent); overload; procedure Draw(Cicrcle: TCircleComponent); overload; End; implementation { TDrawer } procedure TDrawer.Draw(Rectangle: TRectangleComponent); begin ShowMessage('rect'); end; procedure TDrawer.Draw(Cicrcle: TCircleComponent); begin ShowMessage('сircle'); end; end.
  10. мы, видимо, недопонимаем друг друга. Класс реализующий Draw - сторонний класс, и в иерархии классов он обособлен от других, но в качестве параметров принимает все объекты классов, которые являются дочерними классу TBaseComponent Забудьте про метод Draw в TBaseComponent. это совершенно левый метод, остался после экспериментов
  11. В каком же это месте?) override переопределяет, а не перегружает метод.
  12. C - совершенно другой класс с перегруженным методом для объектов класса B1 B2 B3... unit BaseComponent type TBaseComponent = class Abstract (TLayout) protected LastColor: TAlphaColor; procedure SetColor(Value: TAlphaColor); virtual; abstract; function GetColor: TAlphaColor; virtual; abstract; function GetStrokeSize: Single; virtual; procedure SetStrokeSize(const Value: Single); virtual; public procedure Draw; virtual; procedure Click; override; procedure MouseMove(Shift: TShiftState; X, Y: Single); override; procedure DoMouseLeave; override; constructor Create(AOwner: TComponent); override; published property Color: TAlphaColor read GetColor write SetColor; property StrokeSize: Single read GetStrokeSize write SetStrokeSize; end; unit CircleComponent type TEllipseComponent = class(TBaseComponent) private Ellipse: TEllipse; procedure SetColor(Value: TAlphaColor); override; function GetColor: TAlphaColor; override; function GetStrokeSize: Single; override; procedure SetStrokeSize(const Value: Single); override; public constructor Create(AOwner: TComponent); override; end; unit ShapeDrawer; TEllipseComponent = class public procedure Draw(Circle: TCircleComponent); overload; procedure Draw(Rectangle: TRectangleComponent); overload; constructor Create; end; есть List<TBaseComponent> в него свободно добавляются компоненты TCircleComponent, TRectangleComponent и т.д. tmpObject: TBaseComponent; for tmpObject in List do ShapeDrawer .Draw(tmpObject); // всегда его считает как TBaseComponent. Хотя в листе лежат TRectangleComponent и др.
  13. Извиняюсь за псевдокод. Есть класс (A), у него есть несколько дочерних(B1.B2...) Создаю лист объектов TList<A>, в него добавляю объекты классов B1, B2... Есть третий класс С, который имеет перегруженный метод для всех дочерних классов (A). procedure p(obj: B1); procedure p(obj B2); Но объект в классе С всегда воспринимается как объект класса А. Как я могу решить проблему?
  14. Собственно в IdTCPClient возникает Max line length exceeded при чтении. Шаманы в интернетах советуют поменять величину константы IdMaxLineLengthDefault. Есть ли другие способы решения?
  15. Это рейтинг поисковых запросов, JS на 8 месте, ага=) JS сейчас самый попсовый и востребованный язык. Лучше посмотреть на количество проектов на гите)
  16. почему тогда он даже сейчас не популярен? несмотря на единство кода для всех платформ?
  17. ну как плохие ассоциации. Первый вопрос который мне задают: делфи жив? Когда я говорю, что на нём работаю. Делфи у всех ассоциируется delphi 7. Переименование вызвало бы некий наплыв статей о "новом языке", многие девелоперы посмотрели бы на него с другой стороны. Жду 10.1 c настраиваемым listview)
  18. Почему бы не переименовать делфи? У многих не очень хорошие ассоциации, а переименование языка с выходом новой студии сыграло бы на руку.
  19. большое спасибо, то что нужно
×
×
  • Создать...