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

Brovin Yaroslav

Администраторы
  • Постов

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

  • Посещение

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

    390

Весь контент Brovin Yaroslav

  1. Возьмите сорцы FMX.AddressBook.Android и заиспользуйте тот код. Единственная причина по которой адресная книга тянет за собой всю платформу в сервисах - это работа с TBitmapSurface. В теории, если уберете всю работу с BitmapSurface (он нужен только для загрузки фоток), то уберете зависимость от платформы. и в этом случае можно использовать эту реализацию напрямую в сервисах.
  2. Можно облегчить себе задачу и использовать TPathData из FMX. Формируете TPathData кривой одну из комнат. Затем конвертируете TPathData в набор отрезков по контуру TPathData.FlattenToPolygon. А затем решаете на этом наборе точек задачу проверки вхождения точки в область.
  3. В одном из продуктов Embarcadero - Beacons. Они используют следующий подход: Загружают картинку с планом помещений В специальной программе помечают регионы помещений. По сути это данные на основании которых будет определяться помещение. Программно по указанной координате можно проверить вхождение точки в один из указанных регионов. Алгоритмов, как это сделать в принципе много. Типичный алгоритм: это обход ближайшего контура с правой стороны. Если при обходе по кривой вы все время находитесь с права от нее и в конечном итоге пришли в исходную точку, то значит вы находитесь в это регионе. Гуглить можно по теме Выпуклые оболочки.
  4. Если посмотреть, что вызывается под капотом для случая с интерфейсами, то можно увидеть: 1. Для вызова Interface1(Instance), вызывает системный метод _IntfCopy, который по сути не проверяет типы, а просто увеличивает счетчик типов. Такое приведение типов не проверяет типы, а просто копирует указатель а реализацию. procedure _IntfCopy(var Dest: IInterface; const Source: IInterface); {$IFDEF PUREPASCAL} var P: Pointer; begin P := Pointer(Dest); if Source <> nil then Source._AddRef; Pointer(Dest) := Pointer(Source); if P <> nil then IInterface(P)._Release; end; {$ELSE} 2. При использовании оператора as будет вызван _IntfCast, который выполняет честное приведение типов через QueryInterface. Поэтому в этом случае вы получите на выходе честный указатель на таблицу интерфейса, если интерфейс поддерживается объектом. procedure _IntfCast(var Dest: IInterface; const Source: IInterface; const IID: TGUID); {$IF defined(PUREPASCAL) or defined(PIC)} // PIC: EBX must be correct before calling QueryInterface var Temp: Pointer; begin if Source = nil then Dest := nil else begin Temp := nil; if Source.QueryInterface(IID, IInterface(Temp)) <> 0 then ErrorAt(byte(reIntfCastError), ReturnAddress) else begin if Assigned(Dest) then Dest._Release; Pointer(Dest) := Temp; end; end; end;
  5. И еще убедитесь по логам, что вы не создали случайно два ресивера.
  6. Пробовали регистрировать ресивер не программно, а через манифест файл?
  7. Что-то мне кажется, если подпись идет на два типа событий: "отслеживание входящего звонка" и "смена состояния телефона", то логично, что событие срабатывает два раза.
  8. Any developer knows how time consuming it can be to convert come up with good graphics for multi-platform development. There are so many different device pixel densities that require different images. That’s why I’m excited to announce Embarcadero’s December Cool App winner, Petra, which makes it easy to take quality vector graphics from Sketch and turn them into natively drawn user interface elements for cross platform Delphi apps. Petra’s support for FireMonkey, Android and iOS drawing APIs provides maximum flexibility in targeting different platforms. It’s one of those tools where using it once inspires you to want to use it more and more, and I have to admit, I’m addicted. Petra easily moves between design and coding without ever needing to deploy 1x, 2x or 3x images in the final app. The tool also allows developers to create resolution-independent and scalable drawings with dynamic behavior, without the need for static rapid prototyping of UI Components. When asked about his choice of languages, Petra developer Nader described Delphi as a “recipe of a great programming language plus RAD IDE plus ecosystem of third party frameworks and components plus passionate community of supportive developers. All combined to enable developers to target multiple platforms from one code base, natively and beautifully.” [YoutubeButton url='https://www.youtube.com/channel/UCtiYv9BkrZ7dl7ZYguLB-5g'] Interested in submitting for the Embarcadero’s Cool App contest? It’s open to any business or consumer application built with RAD Studio, Delphi or C++Builder. Embarcadero awards Cool App contest winners a $500 Amazon gift card and winning submissions are also highlighted on the company’s YouTube channel. For more information on the contest and a link to the submission form, click here. Просмотр полной статьи
  9. Dear Customers, A few years back we introduced our Upgrade Subscription program. This approach to licensing was a response to dominant industry trends to move away from periodic Upgrades to ongoing Subscription relationships that deliver continuous value to customers. Our Product Roadmap and Release strategy are aligned with this philosophy as we strive to make upgrades to new releases much easier. I don’t think that we will ever be perfect here, but we certainly will try. We have many long-term passionate customers that are used to a certain way of purchasing our products. Therefore we retained the Upgrades SKU for quite some time. Our experience is that customers love plenty of advanced notice to any changes. Many of you let us know this loud and clear, and we appreciate it. Our goal is to make it easy for everyone to take advantage of the latest features and fixes we’ve developed. Today, most our customers moved to Upgrade Subscription and the Upgrades SKU simply does not make as much sense. It is unnecessarily complex to maintain and we hear from multiple customers that with some of the more aggressive promotions, it makes purchasing decisions confusing. Pretty much all other vendors have discontinued that SKU for similar reasons. This Quarter will be the last to offer Upgrades. In keeping with our advance notices practice, we want to give plenty of time to customers who for some reason want to use the Upgrades SKU to do so. We ran several Amnesties in the last couple of years, and we will run one more as we retire this SKU. We will continue to offer Upgrades between Editions, as we make both the Enterprise and Architect editions even more attractive for enterprise application development. It is not a huge change as fewer people are wanting to use the upgrade, but nevertheless, we do not want it to be a surprise. Together, we made great strides in popularizing RAD Studio for Delphi and C++ development. We carefully monitor competitive offerings and we strongly believe that the value customers receive with our products is far superior to the cost. I hope you feel the same way. We are committed to continue investing in our products to make your ROI calculations a “no-brainer”. I am really excited about some of the upcoming releases. Both 10.2.3, this quarter, and 10.3 next quarter, will deliver some awesome functionality and quality improvements. 2018 be another year that sees the momentum of Delphi and C++ Builder increase - Go RAD Studio!!! As always, feel free to reach out to me any time directly. We love hearing from customers who deeply care about our products. Best, Atanas Просмотр полной статьи
  10. Раньше точно делали прилипание хедера в ЛистВью. К сожалению сейчас точно не могу сказать ничего на этот счет. Но точно было сделано. Но, как вариант, если речь идет об ios, то в TListView есть поддержка нативной реализации. И там реализованы выталкивающие хедеры http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.TListViewBase.NativeOptions
  11. Надо просто выбрать любой другого вендора. MSXML - это микрософтовская реализация. Очевидно, что ее нет на других платформах.
  12. Да, оно. Так же компонент доступен на палитре компонентов. TXMLDocument - это универсальная обертка, которая умеет работать с несколькими реализациями XML. Выбор реализации через свойство TXMLDocument.DOMVendor.
  13. I’m always pleasantly surprised by the variety of projects people come up with using Embarcadero tools, and our October Cool App winner is no exception. InfoTrain -- developed by Damian Skrzek using Delphi -- is an application that helps railway enthusiasts locate and discuss interesting trains. When users notice interesting trains, they can add detailed information in the app that can be sorted and filtered by various details. “Railfans,” or “trainspotters,” can filter by the type of traction, region, railway line and many other features. Users can comment or update listings by adding photos or timely information about the current location of a train. InfoTrain connects to a remote MySQL database via a PHP API to synchronize data between users. The app is currently available on all Android devices, with an iPhone version in the works. InfoTrain is a perfect example of an enthusiast who was able to develop an app that scratches his own specific itch. The great thing is that Damian could then make that app available to all the other people who share his interest. Using a PHP API to connect to a MySQL backend is a creative solution to data sharing and shows the flexibility of Delphi. When asked about his choice of languages, Damian said “Delphi is a friendly environment for beginners, powerful at the same time for advanced users. Great for creating cross-platform applications. Generally, Delphi is my favorite language.” This video provides a nice overview of InfoTrain. [YoutubeButton url='https://www.youtube.com/watch?v=RZQMRV7hwMI'] Interested in submitting for the Embarcadero’s Cool App contest? It’s open to any business or consumer application built with RAD Studio, Delphi or C++Builder. Embarcadero awards Cool App contest winners a $500 Amazon gift card and winning submissions are also highlighted on the company’s YouTube channel. For more information on the contest and a link to the submission form, click here. Просмотр полной статьи
  14. After another year of record CodeRage participation, I’ve been talking to other developers about what they do to promote Delphi. It was immediately obvious that they are “way too busy writing code!” This is a huge improvement, as only a few years back the standard response was “well, Delphi is no longer cool.” However, we still have a challenge. We need to make it easier for our customers to champion us within their organizations. We want people to be proud to say that they “do Delphi.” Here are a few Delphi holiday To-Dos if you are looking for a way to spread the merriment... Check out 10.2.2 with the new dark theme and a whole lot more. It will give you some good hints on where we are going with UX and it is just the beginning. Also, the Enterprise and Architect editions of RAD Studio now gets a RAD Server site license for FREE! A huge benefit! Don’t hesitate to provide feedback - we love it! Share Delphi @ 22 Magazine with your colleagues and managers to highlight the latest developments with Delphi and our ecosystem… there has been a lot of activity that has been missed. And yes there was some healthy debate on one forum around the number of countries in existence (we counted a huge number in one of our Delphi Boot Camps), but aside from classifications, the point is that we are seeing a resurgence and we like it! Build a Simple Mobile App with FMX. There is no better way to wow your customers, peers or supervisors than to see Delphi in action. There are plenty of samples and more coming your way. Write once and compile for Android and iOS, not to mention Windows and mac OS X. Check out the new Enterprise connectors. So simple to display your feed from Twitter and/or Facebook and show how fast you can build an app around it. More complex ideas may want to leverage the free InterBase for embedded mobile use. There are plenty of “disconnected” use cases that are difficult to do with other technologies. Watch a CodeRage replay on Embarcadero Academy. Go catch a replay for a session you missed from CodeRage XII. They are all available on Embarcadero Academy. Share your favorite session with your friends. While you are there sign up for a course from the expert trainers on Embarcadero Academy. Also, make sure that if anyone doubts that there are good materials to learn Delphi, they know that this is no longer the case. Learn about the Ext JS framework. Sencha is new to our developer tools family, but already making a huge impact. There is a lot of tooling in existence to connect Delphi with Ext JS development. They share a lot in their completeness and focus on huge productivity improvements. There is a learning curve, but if you are looking for fast development across platforms with really nice UX, this is the way to go. Delphi and the associated VCL & FMX frameworks share a lot in common with Ext JS in the way they maintain compatibility for the long-run and provide unmatched performance. This sample app provides a great example that speaks both to FMX and Ext JS. Browse the GetIt Package Manager. Install a new style, sample project, library, or IDE Plugin. GetIt continues to expand: over 250 at last count. Look for new ways to solve the problems you face and make yourself even more productive. Blog about your favorite Delphi features, components or libraries and share it on social media. Delphi has an amazing 3rd party ecosystem. Check out the top 10 Delphi projects on GitHub or this huge collection of resources. What’s on your holiday to-do list? Do you have any Delphi goals for the new year? Просмотр полной статьи
  15. В любом месте в секции Implementation
  16. Почему в uses секции объявление двух модулей имадж листа? Один от VCL, другой от FMX?
  17. Если убрать директивы, то работает?
  18. В том скриншоте, который вы прикрепили первым, директивы есть.
  19. Попробуйте его задать. У меня есть подозрение, что среда не смогла его прочитать, из-за директив условной компиляции.
  20. У дата модуля есть свойство отвечающее за то, дата модуль какого фреймворка это: VCL или FMX. На основании этого свойства среда определяет TImageList какого фреймворка использовать. Возможно у вас стоит значение VCL.
  21. Добавлять ClipRect при отрисовки в регионе. { clipping } procedure IntersectClipRect(const ARect: TRectF); virtual; abstract; procedure ExcludeClipRect(const ARect: TRectF); virtual; abstract;
  22. Не очень понимаю, что не так. Если товар уже был один раз куплен, то считается, что он есть у клиента. Поэтому при попытке повторно купить то, что уже было куплено порождает данное сообщение.
  23. Нет, аналога нет. Так как кода должен одинаково работать на всех платформах, а CreateParams сугубо виндовая вещь.
×
×
  • Создать...