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

Равиль Зарипов (ZuBy)

Модераторы
  • Постов

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

  • Посещение

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

    264

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

  1. Like
    Равиль Зарипов (ZuBy) получил реакцию от Vitaldj в Несколько мониторов, Windows   
    Как то так
    Left := screen.Displays[1].BoundsRect.Left;
  2. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Несколько мониторов, Windows   
    Как то так
    Left := screen.Displays[1].BoundsRect.Left;
  3. Like
    Равиль Зарипов (ZuBy) получил реакцию от zekelive в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  4. Like
    Равиль Зарипов (ZuBy) отреагировална enatechno в Печать на сетевом принтере   
    У нас тоже печать через базу данных. Отличие от описанного варианта только в том что база удаленная, а служба печати может быть установлена на любом клиентском компе с Windows, с которого и идет печать на любой принтер доступный с этого клиентского компа. При этом на клиенте служба может быть настроена для выбора только определенных заданий печати (например задания только определенного отдела или задания отправленные только с определенных терминалов).
  5. Like
    Равиль Зарипов (ZuBy) получил реакцию от Alex7wrt в Несколько мониторов, Windows   
    Как то так
    Left := screen.Displays[1].BoundsRect.Left;
  6. Like
    Равиль Зарипов (ZuBy) получил реакцию от Martifan в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  7. Like
    Равиль Зарипов (ZuBy) отреагировална zairkz в Вопрос про свайп в лево свайп в право   
    Способов много, попробуйте например через ActionList, откройте пример на TabControl
    Запустите студию -> Open Sample Project -> Samples\Object Pascal\Mobile Snippets\TabSliding
     
    и посмотрите вебинары от Embarcadero 
    https://www.youtube.com/channel/UCtqzKKPLL1uoI7yyCBmKP1w/videos
     
    еще ведь есть компонент от Ярослава в составе FGX
    TfgFlipView - слайдер изображений
  8. Like
    Равиль Зарипов (ZuBy) отреагировална zairkz в Вопрос про свайп в лево свайп в право   
    Да согласен не лучший пример)), но для освоения работы жестов думаю подойдет для начала
  9. Like
    Равиль Зарипов (ZuBy) отреагировална kami в TMultiView и TListBox   
    А лучше не делать такие действия из "детей" MultiView.
    Установку Selected можно оставить, а скрывать лучше через какой-то промежуток времени (реализация "в лоб" - по таймеру с маленьким интервалом и однократным срабатыванием)
  10. Like
    Равиль Зарипов (ZuBy) отреагировална zairkz в Печать на сетевом принтере   
    Первое что пришло в голову в виде "бреда", точнее так уже сделали))
    Но не знаю насколько вам подойдет такое решение.
    У нас есть сервер базы данных, на сервере понятно есть все данные необходимые для печати, принтер настроен на сервере, на сервере есть служба которая мониторит базу (таблицу) в которой если появилась новая команда для печати тогда служба формирует документ из данных базы с использованием FastReport, и кидает на принтер по умолчанию для печати.
    Сервер (а точнее комп Pentium DualCore, 2 gb RAM) на котором MySQL, Windows (хотя FastReport есть и для Linux (beta)) работает автономно уже 8-й месяц, и за это время не прикоснулись к нему ни разу (даже если честно очень странно)
  11. Like
    Равиль Зарипов (ZuBy) получил реакцию от bigjorj в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  12. Like
    Равиль Зарипов (ZuBy) получил реакцию от enatechno в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  13. Like
    Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  14. Like
    Равиль Зарипов (ZuBy) отреагировална kami в [iOS] Добавить свои поля в Info.plist   
    Новые ключи, которые не предусмотрены опциями проекта, можно добавить (например) при помощи бесплатной утилиты iOS9 Fix от TMSSoftware
  15. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  16. Like
    Равиль Зарипов (ZuBy) получил реакцию от #WAMACO в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  17. Like
    Равиль Зарипов (ZuBy) получил реакцию от R.is в [Android] Как изменить цвет системного статус бара и разместить контролы под ним?   
    Тема оказалась настолько интересна что занялся ей подробней.
     
    Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
     
    Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
    Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
     

     
    также написал процедуру для определения высоты статус бара и панели навигации
    procedure androidGetBounds(out statusBar, navigationBar: Integer); {$IFDEF ANDROID} var KeyCharacterMap: JKeyCharacterMap; resourceID: Integer; ScreenService: IFMXScreenService; sScale: Single; {$ENDIF} begin navigationBar := 0; statusBar := 0; {$IFDEF ANDROID} if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить begin sScale := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then sScale := ScreenService.GetScreenScale; //получаем скейл resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then // проверка на существование наэкранных кнопок или физических begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end; end; {$ENDIF} end; и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
    // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <> TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy ... SystemBar.zip
  18. Like
    Равиль Зарипов (ZuBy) отреагировална Axbor в Вопрос про свайп в лево свайп в право   
    Есть компонент GestureManager. Бросим его в проект. Указываем у TImage->Touch->GestureManager на наш GestureManager. Включаем в TImage->Touch->Gestures нужные нам жесты (на вашем случае Left и Right). Потом в событии OnGesture TImage запишем следующее:
    void __fastcall TForm1::Image1Gesture(TObject *Sender, const TGestureEventInfo &EventInfo, bool &Handled) { switch(EventInfo.GestureID) { case sgiLeft: // произошло свайп в лево Handled = true; break; case sgiRight: // произошло свайп в право Handled = true; break; } }
  19. Like
    Равиль Зарипов (ZuBy) отреагировална Gingercat в RAD 11 на подходе?   
    Доброго времени суток. Навеяно постом SergeIT.
    Несмотря на кучу недостатков, по большей части связанных именно с с++ (удобство работы в студии, отсутствие нормального дополнения и тд), на данный момент абракадабра вне конкуренции по скорости и простоте работы. Не могу сказать про кроссплатформенность, а вот разработка под десктоп - да. Безусловно, C# под десктоп здорово, но когда критична скорость обработки - сами понимаете. Так уж сложилось, что я привязан к различным видам обработки графики. Так вот - чего бы там не говорили про оптимизацию кода (лишние вызовы в ассемблере и тд), на данный момент из коробки, быстрее всего Rad Studio. Конечно, мне далеко даже до среднего уровня с++, но все же. 
     
    Работа в Visual Studio с битмапами еще тот геморой (одно заполнение структуры bitmap))) При использовании нативных! BitBlt, Dib-секций и еще множества различных способов, скорость обработки ниже, чем при использовании обертки TBitmap. Полный разбор fullHd картинки  в Visual Studio занимает от 7 до 14 мс, при этом в студии 3 - 6. Проверенно тоннами тестов.
     
    Конечно, можно сказать - OpenCv. Да, пока вы решаете стандартные задачи по обработке. Как только шаг в сторону - начинаешь понимать, что проще самому писать, нежели пользоваться готовым.
     
    Ну и про Qt. Очень удобно - чтобы не говорили. Но есть несколько но: 1 - хвост библиотек (статичная сборка возможна, но там далеко не все гладко). 2 - жесточайшее навязывание своих стандартов - это уже не с а сQt. Не знаю, как дела с кроссплатформенностью - не пробовал. По скорости на посередине. При этом, использование нативных функций винды (именно без костылей) карается (понятно, кроссплатформенность). Однако, либо пользоваться bitmapom нативным (тогда какой смысл вообще в Qt, если все нужно выписывать ручками), либо... bitBlt не возможен (как и множество другого) - вырезали, остается использование довольно медленного QImage, с кучей оговорок.
     
    В Rad Studio - пожалуйте: нужно - дернул из GDI функцию, нужно - из среды, нужен кусок ассемблера - пожалуйста. Про ассемблер в Qt умолчу)))
     
    Вот и выходит, что Rad Studio на данный момент, по сути лучшая. Прошу не судить строго (далеко не профессионал в плюсах), но опыт кой какой имеется. Так что пущай развиваются))
  20. Like
    Равиль Зарипов (ZuBy) отреагировална krapotkin в RAD 11 на подходе?   
    вот для меня если честно, в последнее время стало очевидно перемещение кормивших нас enterprise приложений на web-клиентов
    и все бы хорошо, но web-серверы 99% linux
    и разработка сводится к клиенту на Delphi и php серверу с отдельным интерфейсом и API
    и все Datasnap и другие волшебные пули в этой связке никака не применить
    а 300000 за годовой комплект Enterprise слабо конкурирует с QT
     
    если появится возможность делать linux Сервера, возможно это сможет изменить взгляд на вещи
    я еще раз повторюсь, что считаю Seattle первой версией, на которой можно без особого страха писать на мобилы
    так что следующий шаг может стать решающим для продукта в целом...
  21. Like
    Равиль Зарипов (ZuBy) отреагировална Axbor в Собственный TListBoxItem на C++   
    Очень не хватает примеров на C++. Решил поделится опытом.
    Рассмотрим создание собственного "ListBoxItem"а на C++.
    И так начнем.
    Для начало создадим стиль для нашего "ListItem"а. В моем случае оно выглядит так:

    Структура выглядеть следующим образом:

    А вы сразу можете создать собственный стиль.
    Создадим класс для нашего "Item"а. Я назвал его TMyListBoxItem.
    Нужно знать следующие вещи:
    ApplyStyle() вызывается когда стиль загружен.
    FreeStyle() когда стиль выгружен.
    GetDefaultStyleLookupName() когда стиль не задано берется названые стиля по умолчанию.
    FindStyleResource("стиль") ищет в стиле ресурс с заданным названием.
     
    ListBox автоматически очищает из невидимых "Item"ов стиль что бы избежать от расходы на память. И заново загружает когда оно видимо. При этом вызывается соответствующие функции приведенные выше
     
    я приведу только некоторые кусочки кода. Остальное всё можете посмотреть в прикреплённых файлах.
    class TMyListBoxItem : public TListBoxItem { private: // Переменные для хранения данных System::UnicodeString FTimeTo; System::UnicodeString FTimeFrom; //.... // Визуальные компоненты TText* FTextTimeTo; TText* FTextTimeFrom; //... // Функции для присваивания данных, это нужно при написании "properties" void __fastcall SetTimeTo(const System::UnicodeString Value); void __fastcall SetTimeFrom(const System::UnicodeString Value); protected: void __fastcall ApplyStyle(); void __fastcall FreeStyle(); System::UnicodeString __fastcall GetDefaultStyleLookupName(); virtual void UpdateStyleData(); __published: __property System::UnicodeString TimeTo = {read=FTimeTo, write=SetTimeTo}; __property System::UnicodeString TimeFrom = {read=FTimeFrom, write=SetTimeFrom}; public: __fastcall TMyListBoxItem(System::Classes::TComponent* AOwner); }; Теперь напишем сами функции.
    void __fastcall TMyListBoxItem::ApplyStyle() { // Вызов метода предка TListBoxItem::ApplyStyle(); TFmxObject *StyleObject; // Поиск ресурса из стиля. Посмотрите в скрине, там есть ресурс с названием "timeto" типа TText StyleObject = FindStyleResource("timeto"); // dynamic_cast нужен для корректного преобразования типов. Если тип найденного ресурса не является TText то указателю будет присвоен NULL FTextTimeTo = dynamic_cast<TText*>(StyleObject); StyleObject = FindStyleResource("timefrom"); FTextTimeFrom = dynamic_cast<TText*>(StyleObject); UpdateStyleData(); } void __fastcall TMyListBoxItem::FreeStyle() { // Стиль выгружен из памяти. Нужно очистить указатели что бы избежать ошибок FTextTimeTo = NULL; FTextTimeFrom = NULL; TListBoxItem::FreeStyle(); } System::UnicodeString __fastcall TMyListBoxItem::GetDefaultStyleLookupName() { // название стиля для нашего "Item"а по умолчанию return "mylistboxitemstyle"; } void TMyListBoxItem::UpdateStyleData() { if(FTextTimeTo) FTextTimeTo->Text = FTimeTo; if(FTextTimeFrom) FTextTimeFrom->Text = FTimeFrom; } void __fastcall TMyListBoxItem::SetTimeTo(const System::UnicodeString Value) { FTimeTo = Value; if(FTextTimeTo) FTextTimeTo->Text = FTimeTo; } Вот и всё. Остается только добавит в наш проект ListBox и button для проверки.
    Вот функция создания нашего "Item"а:
    void __fastcall TForm1::Button1Click(TObject *Sender) { TMyListBoxItem *Item = new TMyListBoxItem(this); Item->Parent = ListBox1; Item->StyleLookup = "customstyle1"; Item->TimeFrom = "11:20"; Item->TimeTo = "12:50"; } Скриншот программы:

    В архиве мой класс и стиль. Для корректного отображения некоторых символов нужен fontcustom
    Какие вопросы задавайте. Отдельное спасибо Ярославу за мануал на дельфи: 
    http://blogs.embarcadero.com/yaroslavbrovin/2012/10/15/listboxitem_styling_part2/
    Администраторы и модераторы, прошу подкорректировать если что то неправильно.
    ListBoxItem.zip
  22. Like
    Равиль Зарипов (ZuBy) отреагировална SergeyIT в RAD 11 на подходе?   
    Вы меня простите, Господа. Но позвольте высказать мнение человека нового в Object Pascal, из .NET пришедшего.
    Тьфу-тьфу, дай им всем Бог в Embarcadero доброго здоровья и процветания. Оглянитесь вокруг, ничего ж и близкого нет, даже отдаленно напоминающего того, к чему пришли в Embarcadero за последние годы с кроссплатформенностью! Уму не постижимо.
    Взять Java (хоть к теме напрямую не относится) - на Android идет сырец-порт JavaFX, сервисы и плюшки - за деньги в частном порядке.
    Xamarin видели? Хотите поднять настроение - погуглите. Выглядит это так: MAMA MILA RAMU... С# по Java (что-то дико нелепое). Если человек знает что такое Activity, зачем ему C#? Или Java менее элегантней (учитывая полное родство). MONO - мычание из преисподней, GUI нет фактически. Да вот возьмите хотя бы Unity 3D. Как-то на конференции человек оттуда проговорился: Вы ведь не знаете - мы 90% времени правим баги платформозависимые, чтобы у Вас почти все работало. У Microsoft судороги предсмертные в части всего, что не Windows 10. Почитать куда их бросает каждый месяц - жуть. Кто-то испрашивал по поводу поддержки Windows Phone в одном из топиков. Да даже если бы технически это было возможно, то они ж меняют API каждые полгода на него: то Windows Phone Silverlight, то HTML5, то DirectX C++ (взамен XNA Windows Phone 7)... Поддержка разработчиков ушла в StackOverflow, MSDN скоро рекламу начнет размещать о таблетках для мужчин.
    Ну, кто еще остался?
    Qt? Это не моя тема. Мне трудно думать про указатели, когда надо думать про логику. Увы, не дано... Не владею темой.
    Так что пока нас не слишком много в сравнении с Китаем, есть шанс, что быстро ответят на заданный вопрос... Скоро эта халява закончится...
  23. Like
    Равиль Зарипов (ZuBy) получил реакцию от Axbor в [TidHTTP] Почему IdHttp1.Get может выдавать 404 ошибку, файл не найден?   
    function idHttpGet(const aURL: string): string; // uses System.Net.HttpClient, System.Net.HttpClientComponent, System.Net.URLClient; var Resp: TStringStream; Return: IHTTPResponse; begin Result := ''; with TNetHTTPClient.Create(nil) do begin Resp := TStringStream.Create('', TEncoding.ANSI); Return := Get( { TURI.URLEncode } (aURL), Resp); Result := Resp.DataString; Resp.Free; Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(idHttpGet('http://airnav.tj/ru/online/utdd')); end; Держи
  24. Like
    Равиль Зарипов (ZuBy) отреагировална Kitty в RAD 11 на подходе?   
    Лучше пусть приложения в новой студии для Андроид станут стабильными и быстыми и без падений студии и приложений (и в дельфи и С++ среде).
    А новые не перспективные рынки лучше не охватывать: http://www.theverge.com/2016/1/28/10864034/windows-phone-is-dead
    Навести порядок в том, что есть, лучше.
  25. Like
    Равиль Зарипов (ZuBy) отреагировална Andrew в И снова про ориентацию экрана. Запрет поворота экрана.   
    var   ScreenService: IFMXScreenService; begin   ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService;   ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end;
×
×
  • Создать...