Brovin Yaroslav

  • Публикаций

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

  • Посещение

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


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

  1. Embarcadero Cool App for January: BeePOS

    As more small and home businesses continue to enter the marketplace, point of sale (POS) technologies have become a critical part of modern economy. I’m excited to report that one of the real innovators in this market, BeePOS, is the winner of Embarcadero’s Cool App contest for January. The industry buzz around this company has been tremendous (obligatory bee reference, check!), and we’re fully anticipating their adoption numbers to grow dramatically over the coming months. BeePOS -- based on Delphi -- is a fully integrated, intuitive POS software that can be used for restaurants, bars and the hospitality industry. It’s flexibility allows retailers to use the software for front-end or backend POS, in multiple or single stores and on Windows, iOS, Android and macOS platforms. I’ve seen a number of line-of-business applications like POS systems choose Delphi, which is an ideal solution because of the rapid application development model, first class database support and easy application maintenance. BeePOS is a great example of this with its customizable reporting system and sophisticated configuration. Using DataSnap to broker the data from the backend database to the client application creates a flexible and lightweight system. This video shows BeePOS in action: [YoutubeButton url=''] 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. Просмотр полной статьи
  2. Прозрачность Image

    Может потому, что ваш TImage лежит на панеле?
  3. Официальный сайт: Обзорные статьи: HabraHabr, Ссылки на приложения: Windows, OSX, Android
  4. Где (и как) регистрируется класс TListView?

    Помимо регистрации компонента на палитре компонентов через ComponentRegister, нужно как минимум зарегистрировать класс в RTL. Чтобы при десерилизации класса нового компонента из строкового названия можно было найти сам класс. Для этого в FMX есть в секции инициализации вызов метода регистрации классов. Иначе в противном случае, при открытии формы с вашим компонентом, форма просто не откроется. На счет дизайнера сложнее. Так как эти итем аппирансы появляются не сами по себе, а именно при помощи кастомного дизайнера, который зарегистрирован для класса TListView. Поэтому для своего класса естественно этого дизайнера нет.
  5. Тем более. Забудьте про эффекты на мобильных платформах. Они очень ресурсоемкие.
  6. Linux платформа

    Из коробки Linux работает только для консольных приложений без GUI. Если хочется, чтобы FMX приложение можно было запускать на Linux, то нужно купить дополнительно стороннюю либу:
  7. Надо использовать не Image, а TStyleObject. В нем можно взять маленькое изображение тени и задать правила растяжения. В результате картинка будет занимать минимальный размер, но может быть использована для отрисовки тени любого размера.
  8. Modernize Your Apps

    Modernization continues to be one of the most important topics for many of our customers. Delphi has been around for some time and there are plenty of great “legacy” apps going back all the way to Delphi 7. While it is a testament to the quality of our development frameworks, at some points ten-year-old apps are, well simply too old… Our community of developers are moving to the latest versions so that they can deliver modern, compelling products to their customers. Internally, we have been taking this same journey with the RAD Studio product itself, and while it is not always easy, it is worth the effort. I think that we are finally making a lot of progress, which emboldens me to share some lessons learned that may help you plan your own journey. Update the UI I think that the most difficult part of any Modernization project is the compelling argument for a UI update. There is one school of thought that says that if it works, who cares that an icon looks old. It is also difficult for developers to be very passionate about it, as they also frequently do not care about look and feel. Yet, an updated look and feel is HUGE. We have made many gradual updates to RAD Studio over the last two years and have a few more in store. When we do surveys, rarely does the look and feel get prioritized. Enterprise software customers rarely admit to buying a software solution because “it looks pretty”. But once UI improvements are made, the impact tends to be surprisingly high. Especially for Delphi apps that come with an inherent “legacy” bias. It is a fight worth fighting and fortunately some of the updated VCL and FMX tooling make implementations easier. Take your time and do it right. It is totally worth getting professional designer help (again something that many developers do not do). Be sure not to overlook the impact of nice high quality icons. Here are some examples of the icons that we used for 10.2.2. There are so many choices out there that are very inexpensive. I love for example. Do Mobile One of the great advantages of Delphi today is FMX. As smartphone adoption increases (~70% by 2018), FMX will grow in relevance. If you know VCL, development with FMX is relatively natural. There are of course some styling and behavior specificities, and frankly we need to improve the RAD Studio workflow more, but the productivity is amazing. Most other approaches require a separate team and investment. Historically Mobile Apps were Outsourced as a package, but this is changing. FMX allows a Delphi team to build the Mobile App. You do not need to recreate the old app with FMX, but building meaningful mobile extensions is a must. You will gain immense respect and the Delphi tech will be perceived rightfully as Modern. And you get to build your team. There is a lot of training help to get you started. I personally like Delphi Styles that can deliver some very slick custom looks (below are a couple of great FMX style templates from Make It “Multi-Tier” Architecture is not simple. Unfortunately, even great developers may not have knowledge in other areas, simply because of the vast range of areas in software development. Sometimes this means making architectural changes such as moving from a desktop app to a multi-tier can be a learning experience for even the most experienced. It's always great to learn, or to get outside support to assist. We aim to make architectural transitions easy, such as how RAD Server comes with excellent Multi-Tier architecture support features. It is not a daunting task to rethink an old app into a Multi-Tier one, although there are no guarantees (depends how it was built). I have spoken with many developers that at first were very scared, but once they got deeper, found that the effort is far less than expected. For sure, it is hugely less expensive than re-platforming with a completing different language such as Java. Again, one simple approach is to start small and modularize as much as possible. Also, do not rush to lose the VCL client. The speed it can deliver, especially in sensitive environments where seconds matter, cannot be replicated. I am aware of at least several multi-million dollar Java rebuild efforts that aimed to replace a VCL app and users simply did not adopt it… incredible waste. “Webify” Not a word, but you get the meaning. There are many approaches to do this with Delphi today. Ideally, you can create a tiered app and build an independent Web Client. Of course, we recommend Ext JS, since it is part of the family now, but there are plenty other good client Web technologies. Another approach that may be faster is to use a tool like UniGui, which takes a VCL-like approach and leverages Ext JS to build a Web Client. That does not work for everything but is very fast and productive. You certainly can create a module of your app quickly and demonstrate that Delphi works well and fast with Web. Today many Web interfaces to Delphi apps are built with .NET because of the inherit Windows connection. That of course works, but based on our latest experience and the new JS technologies, the speed and flexibility you can get with JS are great. Integrate RAD Studio has some of the best Integration frameworks and components. One of the most challenging aspects of other technologies is typically integration, and we do it super well and fast. Our recent Product survey indicates that a huge percentage of our customers have adopted FireDAC, which is fantastic. Figure out new ways for your modern app to be more integrated. How about displaying inventory from an ERP or feeding into it? Our Enterprise Connectors are based on the FireDAC framework and work really well. We even use them internally to create an ExtJS portal to our SFDC instance (illustration below). It is a “wow!” development experience. Innovate Delphi, through RAD Studio, supports many new capabilities including Push Notifications, Beacons, and the Woll 2 Woll mobile editor ( It is surprising to me how little customers use new Windows 10 features, One of my favorite underutilized technology is Beacons. These are now included for FREE in RAD Studio Enterprise edition. The mobile editor can accelerate the mobile apps developed with this tech dramatically. Given how many internal Delphi apps deal with location data capture, this should be such an easy and nice feature to include. And the best thing about Delphi is that innovating does not need to cost hundreds of thousands of dollars… InterBase Overcome the Legacy Argument This one is not as relevant for our efforts with RAD Studio, but it is a hurdle that each client has to overcome. The perception that Delphi is legacy is still there, despite recent strides to overcome it. Lately, I’ve taken a slightly different approach, which I’ve found very successful. Instead of diving deep into defending Delphi’s many merits, I just state a few facts and brush it aside. It works! Delphi today is one of the larger commercial ecosystems - plenty of open source ones have lost momentum as economics have deteriorated and support dwindled. Not to mention the fact that Delphi is the fastest, easiest to use and most functional development tool (a little subjective, but true). Our VCL framework for Windows development continues to provide the most native support for MS Windows, and nothing beats it. FMX provides better native cross-platform support than Xamarin and its popularity, especially for Android development is growing rapidly. I think that for any company that wants to manage technology risk, Delphi and VCL are far safer choices than even the trendiest of technologies and frameworks out there. Just ask someone who has gone through the several iterations of Angular or spent a boat-load on a Java migration. The combination of a highly productive language that is reusable and can work with flexible front and back-ends make Delphi a strong technology contender. Well, this got a bit longer than intended, but there is one point about Modernization that is perhaps the most difficult to overcome. It again has to do with perception rather than the technology. Customers continue to make the argument about the lack of availability of trained Delphi resources. Unfortunately, it is still true that there are fewer skilled Delphi developers compared to other popular technologies. Outsourcers are especially negative to these tools, as the productivity tends to go directly against their business model. Why sell you 5 Delphi developers when I can sell you 50 Java ones. But that is also the winning argument, you do not need that many Delphi developers – it is THAT good. And if you need to brush up on your skills or train a new team, we continue to develop Embarcadero Academy with more content and course options. In our experience a senior developer can pick-up Delphi super fast. Lets blow away technology sceptics with amazingly modern-looking apps! Просмотр полной статьи
  9. Если пытаться кормить json парсер кривым json и ожидать, что почему вдруг объект станет неожиданно массивом и не будет исключений, то таких парсеров вам не найти. Проще написать самому: быстро, дешево, без 100500 классов и исключений. И такой, который будет считать, что {} - это массив. А вообще, рекомендую начать с Возможно, после этого придет понимание того, почему нужно то или иное количество классов, ну или хотя бы вы сами разберетесь и поймете, почему так происходит.
  10. TComboBox под Андроидом

    Если используется режим DropDownKind = Native, то такой проблемы не должно быть. Выбор итема происходит в диалоговом окне с прокруткой.
  11. Поиск контакта по номеру

    Возьмите сорцы FMX.AddressBook.Android и заиспользуйте тот код. Единственная причина по которой адресная книга тянет за собой всю платформу в сервисах - это работа с TBitmapSurface. В теории, если уберете всю работу с BitmapSurface (он нужен только для загрузки фоток), то уберете зависимость от платформы. и в этом случае можно использовать эту реализацию напрямую в сервисах.
  12. Можно облегчить себе задачу и использовать TPathData из FMX. Формируете TPathData кривой одну из комнат. Затем конвертируете TPathData в набор отрезков по контуру TPathData.FlattenToPolygon. А затем решаете на этом наборе точек задачу проверки вхождения точки в область.
  13. В одном из продуктов Embarcadero - Beacons. Они используют следующий подход: Загружают картинку с планом помещений В специальной программе помечают регионы помещений. По сути это данные на основании которых будет определяться помещение. Программно по указанной координате можно проверить вхождение точки в один из указанных регионов. Алгоритмов, как это сделать в принципе много. Типичный алгоритм: это обход ближайшего контура с правой стороны. Если при обходе по кривой вы все время находитесь с права от нее и в конечном итоге пришли в исходную точку, то значит вы находитесь в это регионе. Гуглить можно по теме Выпуклые оболочки.
  14. Приведение типа - as

    Если посмотреть, что вызывается под капотом для случая с интерфейсами, то можно увидеть: 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;
  15. И еще убедитесь по логам, что вы не создали случайно два ресивера.
  16. Пробовали регистрировать ресивер не программно, а через манифест файл?
  17. мм, Откуда взят TCSBroadcastReceiver?
  18. Что-то мне кажется, если подпись идет на два типа событий: "отслеживание входящего звонка" и "смена состояния телефона", то логично, что событие срабатывает два раза.
  19. 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=''] 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. Просмотр полной статьи
  20. Upgrade SKU to be discontinued in Q4

    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 Просмотр полной статьи
  21. ListView - фиксированный заголовок

    Раньше точно делали прилипание хедера в ЛистВью. К сожалению сейчас точно не могу сказать ничего на этот счет. Но точно было сделано. Но, как вариант, если речь идет об ios, то в TListView есть поддержка нативной реализации. И там реализованы выталкивающие хедеры
  22. XML

    Надо просто выбрать любой другого вендора. MSXML - это микрософтовская реализация. Очевидно, что ее нет на других платформах.
  23. Да, оно. Так же компонент доступен на палитре компонентов. TXMLDocument - это универсальная обертка, которая умеет работать с несколькими реализациями XML. Выбор реализации через свойство TXMLDocument.DOMVendor.
  24. OXML - это новая библиотека по работе с XML для Delphi и Lazarus, разработанная в конце 2013 года. Целью OXML является быть универсальной и быстрейшей XML библиотекой для языка Паскаль. Основные особенности OXML являются: Парсер SAX Реализация DOM Прямое чтение /запись XML файлов Полная совместимость при работе с TXMLDocument (XmlIntf.TXMLDocument) Автор: Software Solution Ondřej Pokorný Тип лицензии: Open Source Ссылка: Скачать: SourceForge