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

DirtyBorov

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

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

  • Посещение

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

    6

Активность репутации

  1. Like
    DirtyBorov получил реакцию от Ingalime в MaskEdit   
    Случилось так, что потребовался мне ввод номера телефона. Компонента, аналога TMaskEdit в FMX нет, так что пришлось "изобретать на коленке". Компонент писать было лень, потому просто покажу как я решил это в конкретном диалоге с использованием TEdit. Может кому то пригодится. Из кода я убрал все лишнее, оставил только то что относится к делу.
    uses .... System.MaskUtils, System.Character; type TFormRegistry = class(TForm) edtPhone: TEdit; procedure edtPhoneValidating(Sender: TObject; var Text: string); procedure edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure edtPhoneEnter(Sender: TObject); procedure edtPhoneTyping(Sender: TObject); private const Mask = '+7(000)000-00-00;0;*'; /// '+0(000)000-00-00;0;*' - для других стран, например для Украины +3(999).... private PhoneNumber: string; function GetCaretPos: Integer; function GetMaxLength: integer; public end; procedure TFormRegistry.FormCreate(Sender: TObject); begin edtPhone.Text := FormatMaskText(Mask, PhoneNumber); end; function TFormRegistry.GetCaretPos: Integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do begin if not (MaskGetCharType(Mask, i) in [mcDirective, mcMask]) then Result := Result + 1; if (Result + PhoneNumber.Length) = i then Break; end; Result := Result + PhoneNumber.Length - 1; end; function TFormRegistry.GetMaxLength: integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do if (MaskGetCharType(Mask, i) in [mcMask]) then Result := Result + 1; end; procedure TFormRegistry.edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = 8) and (PhoneNumber.Length > 0) then PhoneNumber := Copy(PhoneNumber, 1, PhoneNumber.Length-1) else if (PhoneNumber.Length < GetMaxLength) and (Key = 0) and IsDigit(KeyChar) then PhoneNumber := PhoneNumber + KeyChar else KeyChar := #0; end; procedure TFormRegistry.edtPhoneEnter(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneTyping(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneValidating(Sender: TObject; var Text: string); begin Text := FormatMaskText(Mask, PhoneNumber); end; end.
  2. Like
    DirtyBorov получил реакцию от Anatoliy в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Похоже FireDAC плохо дружит с LiveBinding. Я тоже напоролся на проблему - не обновляются данные. 
    Есть 3 три таблицы, связанных внешними ключами через Master/Detail, по цепочке 1>2>3. Если перейти по записям в первой таблице - во второй данные обновятся, а в третьей - нет. Обновляются только если нет связанных данных.
    Самое интересное то, что точно такой же проект, с теме же таблицами на VCL отлично работает. Из чего складывается вывод - косячит биндинг. Точнее TBindSourceDB.
  3. Like
    DirtyBorov получил реакцию от Alisson R Oliveira в MaskEdit   
    Случилось так, что потребовался мне ввод номера телефона. Компонента, аналога TMaskEdit в FMX нет, так что пришлось "изобретать на коленке". Компонент писать было лень, потому просто покажу как я решил это в конкретном диалоге с использованием TEdit. Может кому то пригодится. Из кода я убрал все лишнее, оставил только то что относится к делу.
    uses .... System.MaskUtils, System.Character; type TFormRegistry = class(TForm) edtPhone: TEdit; procedure edtPhoneValidating(Sender: TObject; var Text: string); procedure edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure edtPhoneEnter(Sender: TObject); procedure edtPhoneTyping(Sender: TObject); private const Mask = '+7(000)000-00-00;0;*'; /// '+0(000)000-00-00;0;*' - для других стран, например для Украины +3(999).... private PhoneNumber: string; function GetCaretPos: Integer; function GetMaxLength: integer; public end; procedure TFormRegistry.FormCreate(Sender: TObject); begin edtPhone.Text := FormatMaskText(Mask, PhoneNumber); end; function TFormRegistry.GetCaretPos: Integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do begin if not (MaskGetCharType(Mask, i) in [mcDirective, mcMask]) then Result := Result + 1; if (Result + PhoneNumber.Length) = i then Break; end; Result := Result + PhoneNumber.Length - 1; end; function TFormRegistry.GetMaxLength: integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do if (MaskGetCharType(Mask, i) in [mcMask]) then Result := Result + 1; end; procedure TFormRegistry.edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = 8) and (PhoneNumber.Length > 0) then PhoneNumber := Copy(PhoneNumber, 1, PhoneNumber.Length-1) else if (PhoneNumber.Length < GetMaxLength) and (Key = 0) and IsDigit(KeyChar) then PhoneNumber := PhoneNumber + KeyChar else KeyChar := #0; end; procedure TFormRegistry.edtPhoneEnter(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneTyping(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneValidating(Sender: TObject; var Text: string); begin Text := FormatMaskText(Mask, PhoneNumber); end; end.
  4. Like
    DirtyBorov получил реакцию от willi в MaskEdit   
    Случилось так, что потребовался мне ввод номера телефона. Компонента, аналога TMaskEdit в FMX нет, так что пришлось "изобретать на коленке". Компонент писать было лень, потому просто покажу как я решил это в конкретном диалоге с использованием TEdit. Может кому то пригодится. Из кода я убрал все лишнее, оставил только то что относится к делу.
    uses .... System.MaskUtils, System.Character; type TFormRegistry = class(TForm) edtPhone: TEdit; procedure edtPhoneValidating(Sender: TObject; var Text: string); procedure edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure edtPhoneEnter(Sender: TObject); procedure edtPhoneTyping(Sender: TObject); private const Mask = '+7(000)000-00-00;0;*'; /// '+0(000)000-00-00;0;*' - для других стран, например для Украины +3(999).... private PhoneNumber: string; function GetCaretPos: Integer; function GetMaxLength: integer; public end; procedure TFormRegistry.FormCreate(Sender: TObject); begin edtPhone.Text := FormatMaskText(Mask, PhoneNumber); end; function TFormRegistry.GetCaretPos: Integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do begin if not (MaskGetCharType(Mask, i) in [mcDirective, mcMask]) then Result := Result + 1; if (Result + PhoneNumber.Length) = i then Break; end; Result := Result + PhoneNumber.Length - 1; end; function TFormRegistry.GetMaxLength: integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do if (MaskGetCharType(Mask, i) in [mcMask]) then Result := Result + 1; end; procedure TFormRegistry.edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = 8) and (PhoneNumber.Length > 0) then PhoneNumber := Copy(PhoneNumber, 1, PhoneNumber.Length-1) else if (PhoneNumber.Length < GetMaxLength) and (Key = 0) and IsDigit(KeyChar) then PhoneNumber := PhoneNumber + KeyChar else KeyChar := #0; end; procedure TFormRegistry.edtPhoneEnter(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneTyping(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneValidating(Sender: TObject; var Text: string); begin Text := FormatMaskText(Mask, PhoneNumber); end; end.
  5. Thanks
    DirtyBorov получил реакцию от e479 в Можно ли задать минимальные размеры для формы?   
    Вот модуль который решает проблему минимального размера:
    FMX.FormHelper.zip
     
    Просто подключите модуль к своему проекту и объявите его в uses. Пользоваться вот так:
    procedure TForm1.FormCreate(Sender: TObject); begin SetMinSize(640, 480); end; Все. Теперь размер формы будет ограничен 640х480. 
  6. Like
    DirtyBorov получил реакцию от AngryOwl в Можно ли задать минимальные размеры для формы?   
    Вот модуль который решает проблему минимального размера:
    FMX.FormHelper.zip
     
    Просто подключите модуль к своему проекту и объявите его в uses. Пользоваться вот так:
    procedure TForm1.FormCreate(Sender: TObject); begin SetMinSize(640, 480); end; Все. Теперь размер формы будет ограничен 640х480. 
  7. Like
    DirtyBorov получил реакцию от rareMax в MaskEdit   
    Случилось так, что потребовался мне ввод номера телефона. Компонента, аналога TMaskEdit в FMX нет, так что пришлось "изобретать на коленке". Компонент писать было лень, потому просто покажу как я решил это в конкретном диалоге с использованием TEdit. Может кому то пригодится. Из кода я убрал все лишнее, оставил только то что относится к делу.
    uses .... System.MaskUtils, System.Character; type TFormRegistry = class(TForm) edtPhone: TEdit; procedure edtPhoneValidating(Sender: TObject; var Text: string); procedure edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure edtPhoneEnter(Sender: TObject); procedure edtPhoneTyping(Sender: TObject); private const Mask = '+7(000)000-00-00;0;*'; /// '+0(000)000-00-00;0;*' - для других стран, например для Украины +3(999).... private PhoneNumber: string; function GetCaretPos: Integer; function GetMaxLength: integer; public end; procedure TFormRegistry.FormCreate(Sender: TObject); begin edtPhone.Text := FormatMaskText(Mask, PhoneNumber); end; function TFormRegistry.GetCaretPos: Integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do begin if not (MaskGetCharType(Mask, i) in [mcDirective, mcMask]) then Result := Result + 1; if (Result + PhoneNumber.Length) = i then Break; end; Result := Result + PhoneNumber.Length - 1; end; function TFormRegistry.GetMaxLength: integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do if (MaskGetCharType(Mask, i) in [mcMask]) then Result := Result + 1; end; procedure TFormRegistry.edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = 8) and (PhoneNumber.Length > 0) then PhoneNumber := Copy(PhoneNumber, 1, PhoneNumber.Length-1) else if (PhoneNumber.Length < GetMaxLength) and (Key = 0) and IsDigit(KeyChar) then PhoneNumber := PhoneNumber + KeyChar else KeyChar := #0; end; procedure TFormRegistry.edtPhoneEnter(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneTyping(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneValidating(Sender: TObject; var Text: string); begin Text := FormatMaskText(Mask, PhoneNumber); end; end.
  8. Like
    DirtyBorov получил реакцию от #WAMACO в Пример работы с TObjectList   
    Еще пару вариантов. 
    1. Можно немного сократить, не указывая Items (почему - ищите в "корнях" property)
    for i:=0 to List.Count-1 do List[i].Position.Y := List[i].Position.Y+0.5; 2. Можно использовать такой вариант
     
    var c: TCircle; begin for c in List do c.Position.Y := c.Position.Y + 0.5; end;  
  9. Like
    DirtyBorov получил реакцию от Равиль Зарипов (ZuBy) в Пример работы с TObjectList   
    Еще пару вариантов. 
    1. Можно немного сократить, не указывая Items (почему - ищите в "корнях" property)
    for i:=0 to List.Count-1 do List[i].Position.Y := List[i].Position.Y+0.5; 2. Можно использовать такой вариант
     
    var c: TCircle; begin for c in List do c.Position.Y := c.Position.Y + 0.5; end;  
  10. Like
    DirtyBorov получил реакцию от Равиль Зарипов (ZuBy) в Пример работы с TObjectList   
    Все же более правильный вариант будет такой:
    with TStringList.Create do try Text := 'ТЕКСТ'; SaveToFile('c:\file.txt'); finally Free; end; Иначе, если при каких то проблемах с файлом, Free не будет вызван и мы получим утечку.
  11. Like
    DirtyBorov отреагировална yura371 в Выпадающий список   
    У меня тоже почему то combobox не выпадает при нажатии на него курсором мыши. Колесиком перелистывает, а список не выпадает.
    Причем не работает только тогда когда подключаешь сторонние стили через StyleBook(Например из 30491_firemonkey_premium_styles_pack для Rad Studio Berlin 10.1).
    Проект создавал MultiDevices, а не VLC. Запись видео с экрана 
     
  12. Like
    DirtyBorov получил реакцию от zairkz в Не работает IFMXPhoneDialerService?   
    Очень интересная идея. Спасибо! Буду пробовать
  13. Like
    DirtyBorov отреагировална zairkz в Не работает IFMXPhoneDialerService?   
    Вообщем так как андройд не поддерживает функцию определения соединения, сделал через журнал звонков
    В Андройде после звонка если было соединение, время звонка будет больше нуля.
    //PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged;
    На Disconnected проверяю журнал звонков, так как бывает не успевает падать информация использую таймер с интервалом 1 секунда, ниже приведен код в нем или iOS соединения и все ок или андройд на дисконекте и пуск таймера.
    procedure TForm_Main.MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState); begin   case ACallState of     TCallState.Connected:       begin  {$IFDEF IOS} TThread.Synchronize(nil, ShowDialDialog); {$ENDIF}       end;     TCallState.Disconnected:       begin {$IFDEF ANDROID} TimerCallCheck.Enabled := true; {$ENDIF}         PhoneDialerService.OnCallStateChanged := nil;       end;   end; end; Пока не добавил такую архитектуру с ТТаском и Синхронизацией были иногда вылеты приложения
    procedure TForm_Main.TimerCallCheckTimer(Sender: TObject); begin   TimerCallCheck.Enabled := false;   TTask.Run(     procedure     var       Dur: Int64;     begin       Dur := CheckStat; //Функция проверки журнала       TThread.Synchronize(nil,         procedure         begin           if Dur = -1 then              TimerCallCheck.Enabled := true           else           begin             TimerCallCheck.Enabled := false;             if Dur > 0 then               ShowDialDialog; //Вызывается форма у меня в приложении           end;         end);     end); end;  
    function TForm_Main.CheckStat: Int64; var   cursor: JCursor;   Dtime, CallDuration: Int64;   JsortOrder, JSelection: String;   wJQueryParams: TJavaObjectArray<JString>; begin   Result := 0;   wJQueryParams := TJavaObjectArray<JString>.Create(4);   wJQueryParams[0] := TJCallLog_Calls.JavaClass.CACHED_NAME;   wJQueryParams[1] := TJCallLog_Calls.JavaClass.NUMBER;   wJQueryParams[2] := TJCallLog_Calls.JavaClass.DURATION;   wJQueryParams[3] := TJCallLog_Calls.JavaClass.DATE;   JsortOrder := 'date DESC LIMIT 1';   Dtime := (DateTimeToUnix(Now, true) - 360) * 1000;  //Последние пять минут   JSelection := 'number = "+77017017708" AND type = 2 AND date > ' + IntToStr(Dtime);   cursor := TAndroidHelper.Activity.getContentResolver.query(TJCallLog_Calls.JavaClass.CONTENT_URI, wJQueryParams,     StringToJString(JSelection), nil, StringToJString(JsortOrder));   if (cursor.getCount > 0) then   begin     while (cursor.moveToNext) do     begin       CallDuration := StrToInt64(JStringToString(cursor.getString(cursor.getColumnIndex(TJCallLog_Calls.JavaClass.DURATION))));       Result := CallDuration;     end;   end   else     Result := -1;   cursor.Close;   FreeAndNil(wJQueryParams); end;  
  14. Like
    DirtyBorov отреагировална zairkz в Не работает IFMXPhoneDialerService?   
    uses 
      Androidapi.Helpers,
      Androidapi.JNI.GraphicsContentViewText,
      Androidapi.JNI.App,
      Androidapi.JNI.JavaTypes,
      Androidapi.JNIBridge,
      Androidapi.JNI.Provider;
     
  15. Like
    DirtyBorov отреагировална rareMax в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования   
    наканецтта! Ярослав, это будет бесплатный класс? плииз скажи что да
  16. Like
    DirtyBorov получил реакцию от #WAMACO в Крякнутая версия XE8   
    Из своего опыта (не про Delphi конкретно), приведу реальный пример. Доводилось работать на удаленке в одной международной компании. Уверен все о ней знают и пользуются ее продуктами (без названия, ок?).  Так вот в нашей интранете мелкого городского провайдера, лежала подборка их крякнутого софта. Я конечно "стуканул" руководителю и предложил "наехать" на местную контору что бы убрали пиратский софт. Но неожиданно получил от "самого главного боса" нагоняй: "Не вздумай им писать! Пусть софт лежит! Пусть люди им пользуются! Да, именно пиратским. Финансовые потери не сопоставимы с прибылью от популяризации. Пиратство - гарантированная, бесплатная реклама. Тот, кому действительно наш софт нужен - заплатит. Кто не готов платить (например школьники) - не заставишь. По этому оставь маркетинг профессионалам, а сам занимайся поставленными задачами."  
    С тех пор я не лезу в маркетинг.
  17. Like
    DirtyBorov получил реакцию от kami в Крякнутая версия XE8   
    Из своего опыта (не про Delphi конкретно), приведу реальный пример. Доводилось работать на удаленке в одной международной компании. Уверен все о ней знают и пользуются ее продуктами (без названия, ок?).  Так вот в нашей интранете мелкого городского провайдера, лежала подборка их крякнутого софта. Я конечно "стуканул" руководителю и предложил "наехать" на местную контору что бы убрали пиратский софт. Но неожиданно получил от "самого главного боса" нагоняй: "Не вздумай им писать! Пусть софт лежит! Пусть люди им пользуются! Да, именно пиратским. Финансовые потери не сопоставимы с прибылью от популяризации. Пиратство - гарантированная, бесплатная реклама. Тот, кому действительно наш софт нужен - заплатит. Кто не готов платить (например школьники) - не заставишь. По этому оставь маркетинг профессионалам, а сам занимайся поставленными задачами."  
    С тех пор я не лезу в маркетинг.
  18. Like
    DirtyBorov отреагировална rareMax в Не работает TLang   
    Баг подтверждаю)
  19. Like
    DirtyBorov отреагировална Alexander в Не работает TLang   
    в Delphi 10 не смог произвести перевод отсканированных строк, не появляются Edit'ы для ввода перевода. Взял файл от рабочего проекта из XE8, в 10-ке подгрузились только английские слова, при этом так же не возможно добавить перевод. Это у меня одного так или ещё ни кто не проверял этот компонент?
  20. Like
    DirtyBorov отреагировална Brovin Yaroslav в Product Roadmap August 2016   
    In February, we provided a detailed view of our Product Roadmap and we committed to update this Roadmap every six months to provide our many customers with good visibility into what is to come. As requested by many of you, we are moving to more updates and one larger release per year. 
    We have an exciting plan* that we will continue to fine tune to reflect customer and MVP requirements and input. One change from before is RAD Studio 10.1 Berlin Update 2 that will provide required support for Windows 10 Anniversary Edition, with specific support for the Windows Desktop Bridge, also known as Centennial. This update will also include new Win10 Anniversary Styles and UX controls.
    While we continue to make excellent progress on Godzilla, we want to keep up-to-date with Microsoft developments.  To further expand our Windows 10 support, Update 2 will also include new Windows 10 Anniversary Edition styles and user interface controls.
    As it was already discussed, the plan is to go back to a yearly release cycle, and offer 2 or 3 updates with additional features and support for new versions of the operating systems released during that time frame. This is an overall view of the roadmap, followed by some detailed comments by the three RAD Studio Product Managers: Marco, David, and Sarina.

    * Features are not committed until completed and released. All of the features mentioned in this article are subject to change, due to technical reasons or changes in priorities.
    More Details from Marco 
    Marco focuses on the Delphi language and personality, Delphi RTL, the VCL, Database and Web Technologies, and RAD Server
    Over the last couple of years, we have made tremendous progress with Delphi. As I speak with many MVPs and customers, I find that many new features incorporated in Seattle and Berlin are not so well known, starting with the extensive support for WinRT APIs on Windows 10. We delivered Windows 10 support for VCL in a timely way and plan to continue working in this direction, supporting new features in Windows 10 Anniversary Edition, as described earlier. 
    The most exciting new feature on the roadmap is the coming Linux support, which we’ll soon start previewing. Having the ability of taking your server side code (Apache extensions, console applications, WebBroker projects, DataSnap server, RAD Server modules, custom middle-tier architectures), keep your data access components and deploy on Linux on-premise machines or cloud instances, will open up new possibilities for Delphi developers -- and C++Builder ones as well.
    In the meantime we won’t forget improving the Delphi language. The main feature coming is support for nullable types, but we are also considering a rather long list of enhancements to the syntax, somehow minor changes that will improve the way you write code, its readability and expressiveness. 
    Here are some more roadmap details focused on Delphi, VCL and RAD Server:
    Berlin Update 2
    Windows Desktop Bridge (aka Centennial) deployment support, for building APPX files directly from the IDE, in a similar way of our mobile deployment support QuickEdit properties, making it faster to do everyday tasks in the VCL designer, by providing rapid access to the most commonly used properties of standard controls New Windows 10 CalendarView VCL control, matching the UX of the native WinRT calendar view controls (but entirely written in VCL code) New VCL Styles for Windows 10 Anniversary Edition  Godzilla
    Delivering Delphi compiler and RTL for Linux Server 64bit Integrated delivery of Konopka Controls Further overhaul of VCL visual design experience, with the inclusion of designers from Konopka Controls in the core VCL design experience New Windows 10 VCL controls including date and time pickers and additional customized panels FireDAC Linux support and drivers update on all platforms, for a large numbers of supported database engines Large-memory enable standalone Delphi compilers The Linux version of RAD Server, with Apache integration, along with the ability to create Linux RAD Server API modules in Delphi and C++, some RAD Server Console UI enhancements and the Multi-Tenancy Capability Godzilla Updates
    Quality and performance improvements New VCL controls under evaluation Improved code migration tools For RAD Server, ActiveDirectory support for login and AD synchronization for accounts, plus Kerberos authentication for clients Carnival
    Apple macOS 64-bit compiler and toolchain Delphi language support for Nullable types Delphi language syntax enhancements Carnival Updates
    Quality and performance improvements Further Windows 10 support More Details from David
    David focuses on the C++ language, including compilers and linkers, on the multi-platform debuggers, and the RAD Studio IDE
    We have some great plans for C++Builder over the next couple of releases that I believe will make C++ readers very happy. We have been focusing on platform support recently, such as with the Linux Server work making its debut in Godzilla. That gives us great support for solving practical user needs - providing cross-platform support natively, compiling natively at all levels, with the same UI and other frameworks. No-one else is doing that to the level we do.  But the cost of focusing on that has been lagging on C++ language support and so from our strong platform foundation, we’re now going to improve that.
    We plan to upgrade our Clang-based compilers to be based on Clang 3.9, and that will start with the Windows compilers with other platforms added soon after. In addition, we’re going to remain up to date with Clang: each release we will have compilers based very close to the head stable version of Clang.  That means we - and you our customers - can have your cake and eat it too: not only will you have better cross-platform support and cross-platform frameworks than other IDEs, but the C++ language support will be right up there as well.
    We also want to open up a little bit from the closed silo we sometimes have with our IDE, and we’re starting this by looking into CMake support for our compilers, and also some degree of IDE integration. Let me know what you think here - we are evaluating what to support, and it’s not limited to only CMake. As well as tools, we’re also considering many of the common C++ libraries. Feedback on all of these is welcome.
    Finally, we have some great plans for our debuggers, with ongoing work to start using LLDB on more platforms and improve its integration with our extensions and IDE. We want to end up using LLDB on many if not all platforms where we also use Clang and LLVM.
    As some smaller but very important details, in Berlin’s Update 2, we will deliver rename refactoring for C++, which should be very useful. We’re also actively improving our IDE features, such as code completion, and the linker. Both these are things that we hear need work, and so we will focus on. All up I think we have some very nice items to deliver soon that will make long-time users happy, and some great features coming over the next year.
    Berlin Update 2
    Rename refactoring Properties support in Win64 C++ debugger Godzilla
    Delivering Linux Server 64 Godzilla Updates
    CMake support: inbuilt support for bcc32c and bcc64 in CMake itself (we will work with them, and/or write patches); some IDE support, extent to be decided Upgrading to Clang 3.9 Win64 and Win32 initially Full C++17 support Other platforms over next few releases Plan to stay constantly up to date with Clang – not fall behind like with Clang 3.3. End goal is all platforms rolling forward just behind the Clang head. Carnival
    Significant debugger improvements for iOS64, OSX64 – use LLDB on these platforms with basic BCC extensions and Delphi support Further Clang 3.9 / 3.x platforms Ongoing, and Carnival Future
    Improved LLDB support – full extension, Delphi support; use on more platforms (iOS64, OSX64, Win64, Win32…) Ongoing linker work More Details from Sarina
    Sarina focuses on FireMonkey, the components libraries UX and styles, the installation experience, plus demos and documentation
    Over the last couple of years, we have added a lot of great features to the FireMonkey framework. This includes the FireUI Multi-Device Designer, Behavior Services, FireUI Live Preview, native controls and many other features and enhancements that enable our customers to quickly build applications for multiple form factors and target platforms. One of the key themes in the FireMonkey roadmap is the expansion of our native controls support. We currently have Z-Order support on both iOS and Windows, and support native presentation for various UI controls on both platforms.
    As you can see in our FireMonkey roadmap below, we have plans to extend our Z-Order support to both Android and Mac OS. As part of our roadmap, we are also planning on adding native presentation support for a range of UI controls on both Android and Mac OS. I think you will like the new native rendering support for TGrid on iOS which will be introduced in Update 1. Grid like layouts are popular in tablet applications given the additional screen real estate. They also offer a very flexible UI for enterprise apps where a table like layout may be preferred and features like column reordering, column resizing and text input are often required. I provided a sneak peek in a recent blog post.
    Berlin Update 1
    Native presentation support for TGrid on iOS FireMonkey bug fixes  Berlin Update 2
    New FireMonkey styles for Windows 10 Anniversary Edition  FireMonkey bug fixes  Deployment support for latest versions of supported operating systems  Godzilla
    FireMonkey native rendering support for Android, Phase 1: Z-Order Manager FireMonkey refactoring work  Deployment support for latest versions of supported operating systems  Radiant Shapes component library Various FireMonkey enhancements  Godzilla Updates
    FireMonkey native rendering support for Android, Phase 2 & 3 : Native presentation for various UI controls, including TEdit, TMemo etc. Additional FireMonkey styles Update advertising component to support additional advertising services FireMonkey bug fixes  Carnival
    Native presentation for additional UI controls on Android FireMonkey native rendering support for Mac OS, Phase 1: FireMonkey Z-Order Manager FireMonkey native rendering support for Mac OS, Phase 2: Native presentation for various UI controls, including TEdit and TMemo Additional FireMonkey controls, including platform specific controls Deployment support for latest versions of supported operating systems  FireMonkey maps support on Desktop Carnival Updates
    Native presentation support for additional UI controls on Mac OS (TListView, TGrid etc.) Native presentation support for additional UI controls on iOS, Android and Windows  FireMonkey bug fixes and other enhancements   We are excited about the current RAD Studio roadmap and what lies ahead. We know the plans don’t cover everything you are expecting, but rest assured there will be many other features delivered along with the main ones highlighted in this document. It is also possible that some of the features will be delivered earlier than listed above. 
    If you have specific questions or feedback,  please let us know, reaching any of the PM over email. You can also log ideas and feature requests at quality.embarcadero.com.
    These plans and roadmap represent our intentions as of this date, but our development plans and priorities are subject to change. Accordingly, we can’t offer any commitments or other forms of assurance that we’ll ultimately release any or all of the above-described products on the schedule or in the order described, or at all. These general indications of development schedules or “product roadmaps” should not be interpreted or construed as any form of a commitment, and our customers’ rights to upgrades, updates, enhancements and other maintenance releases will be set forth only in the applicable software license agreement. 
     
    Просмотр полной статьи
  21. Like
    DirtyBorov отреагировална Равиль Зарипов (ZuBy) в ListView Color Helper   
    версия для берлина
    Раскраска ListView Кастомный цвет для определенного Item'a Отступы для разделителей  Определение Index'a верхнего Item'a Кол-во видимых элементов Показано как можно реализовать интерфейс день/ночь
    ModernListView.rar
     
  22. Like
    DirtyBorov отреагировална Равиль Зарипов (ZuBy) в RTF в Memo   
    нет, но платные компоненты (функционал) не всегда оправдывают цену
  23. Like
    DirtyBorov отреагировална POV в событие TFrame.OnResize   
    Да еще стоит пользоваться SetBounds вместо отдельного задания положения и размеров. В 4 раза сократиться перерисовка )
  24. Like
    DirtyBorov отреагировална krapotkin в событие TFrame.OnResize   
    что за фрейм такой большой, что так много обсчитывается?
    рецепт-то простой. расчеты не должны быть завязаны на компоненты. рассчитывайте на здоровье все в отдельном потоке. потом все рассчитанное разом вылить на экран
  25. Like
    DirtyBorov отреагировална krapotkin в Требуется помощь в технологиях   
    сейчас надо бы отказываться от indy, а то программа и так пухлая, есть нативный HTTPClient
    а в остальном - делаем кэш по-любому на устройстве, создаем потоки, в которых происходит закачка либо из кэша либо через HTTP
    когда поток заканчивается, результат работы он передает на отображение
    по поводу отображения тут была статья про listView и 1000 картинок. К сожалению, поиск на форуме очень странный и я чаще всего не могу найти нужную ссылку
     
×
×
  • Создать...