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

Rusland

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

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

  • Посещение

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

    26

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

  1. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в Порядок запуска TBitmapListAnimation     
    картинка из примера
      
    Загружаем её в BitmapListAnimation
     
    настройка BitmapListAnimation
     
    ну и не забываем
    BitmapListAnimation1.Enabled := true;  
  2. Like
    Rusland отреагировална ENERGY в Серия статей, как настроить Android, OS X, iOS Simulator, iOS с RAD Studio (Delphi, C++ Builder)   
    Наоборот, профи советуют ставить рекомендуемые, протестированные версии SDK, те что идут по умолчанию с пакетом.
    Note: You need to use the recommended versions of the Android development tools. RAD Studio might not support changes that alternative versions introduce.  
    http://docwiki.embarcadero.com/RADStudio/Seattle/en/Installing_the_Android_Development_Tools
    Хотите случайных багов, - все в ваших руках.
     
    Можно и без устройства, на симуляторе.
    Все руководства уже расписаны: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Set_Up_Your_Development_Environment_on_the_Mac_(iOS)
     
     
     
  3. Like
    Rusland отреагировална ENERGY в Фотография стандартной камерой смартфона   
    Сделал решение для описанного выше варианта.
    Добавил его на Stackoverflow
     
    unit Misc.Android; interface uses SysUtils, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, Androidapi.JNI.Provider; type TGallery = class public class function GetLastImageID: integer; class function GetNextImageIDFromID(aFromID: integer; out aImagePath: string): integer; class function DeleteImageByID(aID: integer): boolean; end; implementation const _ID = '_id'; // TJBaseColumns.JavaClass._ID // uri in Androidapi.JNI.Provider { TGallery } {If you're using action TakePhotoFromCameraAction remember to set NeedSaveToAlbum to true. It does not work, because of Android problems, but it can work in future.} class function TGallery.GetLastImageID: integer; var vContent: JContentResolver; vValues: TJavaObjectArray<JString>; vOrderBy: JString; vCursor: JCursor; begin Result := -1; vContent := TAndroidHelper.Activity.getContentResolver; vValues := TJavaObjectArray<JString>.Create(1); vValues[0] := TJBaseColumns.JavaClass._ID; vOrderBy := StringToJString(_ID + ' DESC'); vCursor := vContent.query(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, vValues, nil, nil, vOrderBy); try if vCursor.moveToFirst then Result := vCursor.getInt( vCursor.getColumnIndex(TJBaseColumns.JavaClass._ID) ); finally vCursor.close; end end; // Result is next Image ID and its aImagePath - is path to jpg image class function TGallery.GetNextImageIDFromID(aFromID: integer; out aImagePath: string): integer; var vContent: JContentResolver; vValues: TJavaObjectArray<JString>; vFilter: JString; vOrderBy: JString; vArgs : TJavaObjectArray<JString>; vCursor: JCursor; begin Result := -1; aImagePath := ''; vContent := TAndroidHelper.Activity.getContentResolver; vValues := TJavaObjectArray<JString>.Create(2); vValues[0] := TJMediaStore_MediaColumns.JavaClass.DATA; vValues[1] := TJBaseColumns.JavaClass._ID; // vValues[1] := TJMediaStore_MediaColumns.JavaClass.SIZE; // vValues[1] := TJImages_ImageColumns.JavaClass.DATE_TAKEN; vOrderBy := StringToJString(_ID + ' DESC'); vFilter := StringToJString(_ID + '>?'); vArgs := TJavaObjectArray<JString>.Create(1); vArgs[0] := StringToJString(aFromID.ToString); vCursor := vContent.query(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, vValues, vFilter, vArgs, vOrderBy); try if (vCursor.getCount > 0) and vCursor.moveToFirst then begin Result := vCursor.getInt( vCursor.getColumnIndex(TJBaseColumns.JavaClass._ID) ); // vCursor.getLong(imageCursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN)); //vSize := wCursor.getLong(wCursor.getColumnIndex(TJMediaStore_MediaColumns.JavaClass.SIZE)); aImagePath := JStringToString(vCursor.getString( vCursor.getColumnIndex(TJMediaStore_MediaColumns.JavaClass.DATA) )); end; finally vCursor.close; end; end; class function TGallery.DeleteImageByID(aID: integer): boolean; var vContent: JContentResolver; begin vContent := TAndroidHelper.Activity.getContentResolver; Result := vContent.delete(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, StringToJString(_ID + '=' + aID.ToString), nil) = 1; end; end.
  4. Like
    Rusland отреагировална Евгений Корепов в [TMultiView] Починили TMultiView.Enable в Tokyo   
    Починили TMultiView.Enable в Tokyo, вот небольшой видео-пример:
    https://www.youtube.com/watch?v=T0gJwfiyRyY
  5. Like
    Rusland отреагировална ENERGY в Кто вызвал процедуру   
    Upd   
    Используйте Call Stack (View > Debug Windows)
  6. Like
    Rusland отреагировална denprox в TCombobox и TextSettings   
    Изменить размер шрифта у ComboBox можно таким образом: 
    procedure TForm1.ComboBox1ApplyStyleLookup(Sender: TObject); var   Item : TListBoxItem;   i : Integer; begin   for i := 0 to ComboBox1.Count-1 do begin     Item := ComboBox1.ListItems[i];     Item.Font.Size := 18;     Item.StyledSettings := Item.StyledSettings - [TStyledSetting.Family,TStyledSetting.Size,TStyledSetting.FontColor];   end; end;  
  7. Like
    Rusland получил реакцию от Menkos1 в Клавиша Tab   
    Так всегда и надо делать, тогда Tab / Shift+Tab работает корректно
  8. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в DeviceInfo - модуль для получения информации о девайсе   
    ну если вам для андроида, то есть один вариант
    ANDROID_ID
    // uses Androidapi.Helpers, Androidapi.JNI.Provider; // permission read_phone_state ShowMessage(JStringToString(TJSettings_Secure.JavaClass.getString(TAndroidHelper.ContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID)));  
  9. Like
    Rusland отреагировална AliZairov в "Cant load package..." ошибка   
    Привет. Я сделал установку на CorssOver ( WineHQ ).
  10. Like
    Rusland отреагировална krapotkin в Get запросы в iOS   
    Пользуйтесь Try - Except
    try   THttpClient.Create.Get(URL); HasConnection := true; except  HasConnection := false; end;
    Ну и вместо компонента TNetHTTPClient я обычно пользуюсь классом THTTPClient в отдельном потоке
     
     
  11. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в Get запросы в iOS   
    проверка интернета
    function CheckInet: boolean; var aResp: IHTTPResponse; aHTTP: THTTPClient; begin Result := false; aHTTP := THTTPClient.Create; try try aResp := aHTTP.Head('http://google.com'); Result := aResp.StatusCode < 400; except Result := false; end; finally FreeAndNil(aHTTP); end; end; get запрос
    function HTTPGet(const aURL: string): string; var aHTTP: THTTPClient; aResp: TStringStream; begin Result := 'Error'; aResp := TStringStream.Create('', TEncoding.UTF8); aHTTP := THTTPClient.Create; try try aHTTP.Get(aURL, aResp); Result := aResp.DataString; except Result := 'Error'; end; finally FreeAndNil(aHTTP); FreeAndNil(aResp); end; end;  
  12. Like
    Rusland отреагировална Евгений Корепов в Одинаковые логотипы и картинки   
    Получите от медицинского центра разрешение на использование их логотипа. Можно на русском языке. Текст произвольный - поручаем Kitty изготовление приложения и разрешаем использование логотипов, торговых марок, фирменных наименований и т.д. в приложениях. 
    Подробнее здесь https://play.google.com/intl/ru/about/ip-deception-spam/impersonation-ip/ 
    И отправьте скан (pdf к примеру) этого письма в гугл, подробности тут https://support.google.com/googleplay/android-developer/answer/6320428
     
    Последнее время все сложнее публиковать приложения, правила уже балансируют на грани маразма. Одно моё приложение заблокировали по причине того что я "выдавал" себя за магазин линолиума в какой то немецкой деревушке - логотип приложения был немного искаженной зеркальной копией логотипа этого магазина, так же отличались цвета - у магазина желтый, у приложения оранжевый. Вот такие дела... 
    Так же сильно зависит от места модерации - если повезет попасть в британский офис, то вам досконально объяснят причину блокировки, приведут примеры правильного и не правильного решения вашего вопроса. Вот пример из моей практики:
    Если не повезет попасть в подмосковье - то вы не получите комментариев, апелляция будет проигнорирована и относится к вам будут как к ничтожеству. Российская специфика - мальчик получивший работу в Великом Гугле, благодаря двоюродному дяде, сам становится Великим. И естественно он обязан быть гавном, так у него в должностной инструкции написано ;-)
  13. Like
    Rusland отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке   
    Есть такое дело. Он (Боян Митов) один автор сего продукта. Делает его ооооочень давно. В последнее время ударился в создание компонент и библиотек для работы с Arduino (почитать все новости можно в блоге). Недавно объявил о том, что скоро появится версия VideoLab для FMX с поддержкой не только Windows, но и MacOS и Android.
  14. Like
    Rusland отреагировална ASovtsov в ListVew как лента твиттера   
    Сделал маленький пример, как использовать  Binding Expressions в Design Time. По прилагаемому снимку экрана легче ориентироваться в выборе компонент.
    Подробнее на эту тему здесь: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Using_Custom_Format_and_Parse_Expressions_in_LiveBindings
     
    pLBExpr1.zip

  15. Like
    Rusland отреагировална HyperZen в InputQuerySync реагирует только на OK   
    procedure GoToWithInputBox; begin TDialogServiceAsync.InputQuery('Введите номер страницы', ['№ страницы:'], [''], procedure(const AResult: TModalResult; const AValues: array of string) begin case AResult of mrOk: begin if AValues[0] <> '' then begin // делаем что надо с полученным значением по кнопке ОК, введенное значение в AValues[0] end; end; mrCancel: begin Exit; // тут выполняем действия по кнопке Отмена end; end; end ); end;  
  16. Like
    Rusland отреагировална krapotkin в TVideoCaptureDevice, трансляция в потоке   
    я не вдавался в прямо подробности, но
    http://s408599889.onlinehome.us/forumdisplay.php?fid=18
    это ветка форума 
    VideoLab / Firemonkey components
  17. Like
    Rusland отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке   
    Нет нет. Есть и под FMX. Смотрите на странице загрузки - Firemonkey and VCL, Current Version Installers.
    Но проблемы все те же останутся. Только Windows и сложность организации rtmp-потоков.
  18. Like
    Rusland отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке   
    Называется VideoLab (библиотека для работы с видео)
    Проблем с ним несколько.
    Во-первых - это только под Windows (уточним, насколько я знаю, сейчас Митов занимается созданием кроссплатформенной версии библиотеки, и вроде у него уже есть "наброски" (разумеется - под FMX), но когда появится релиз - не знаю).
    Во-вторых - непосредственно сама эта либа работать с RTMP не может. Так-что прийдется использовать фильтры, которые еще найти надо будет, если они есть )))
  19. Like
    Rusland отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке   
    На случай "своими руками", я бы порекомендовал Вам копать в сторону WebRTC. Разумеется все зависит от конечных задач, стоящих перед Вашей программой. Судя по всему - это организация потокового видео в режиме реального времени на соответствующие сервисы. А это значит, что:
    - нужно организовать формирование и передачу RTMP (RTSP) потока, с чем в Delphi (если о нем речь идет) есть определенные сложности) (в ситуации с С++ будет немного проще);
    - нужно использовать кодеки (encoder), формат которых поддерживается теми системами, на которых вы хотите видеть воспроизведение потока. Аналогично, как и в вопросе с rtmp-потоком, ситуация с реализацией в Delphi будет сложнее (хотя тоже можно);
    - что касается конвертации кадров из одного формата в другой, то тут все немного проще. В интернете полно алгоритмов описывающих конвертацию битмапа из одного формата в другой. Разумеется - не все так просто. Поскольку необходимо не просто конвертировать кадры, перед тем как передать их энкодеру, но еще и правильно от энкодера получить сам поток и передать его. После энкодера, конечно, идут не просто "кадры". В зависимости от настроек энкодера, сначала идет "ключевой кадр" (и он повторяется с определенной периодичностью), а за ним последовательность "фреймов" - "описывающих" лишь изменения в "ключевом кадре".
    Кратко как-то так...
    В любом случае, я бы порекомендовал Вам сначала пошарить по ресурсу, описывающему работу с потоковым видео. Просто понять как это работает, в принципе. Ну и многое можно там же подчерпнуть. Например, просто как  оптимальнее настроить энкодер для трансляции того или иного видео.
  20. Like
    Rusland отреагировална sinuke в Учебное приложение "Слесарное дело"   
    Вышло обновление до версии 1.5.0:
     - Исправлены переходы в глоссарии
     - Значительно уменьшен размер приложения
     - Настройки автоматической проверки обновлений
     - [Windows] Переработка приложения для Windows
     - [Windows] Добавлены анимации перехода
     - [Windows] Минимальные размеры окна ограничены 800 пикселями по ширине и 600 по высоте
     - [Android] Системная строка подкрашивается в "фирменный" синий во всех режимах работы приложения
     - [Android] Отключена анимация перетаскивания элементов бокового меню
     - [Android] Индикатор загрузки
     - [Android] Навигационная панель больше не перекрывает интерфейс приложения
     - [Android] Исправлена ошибка с сохранением PDF-документа
     - [Android] Увеличена скорость вывода информации и тестирования
     - [Android] Немного изменен внешний вид экрана вывода результата тестирования

    Ссылка на скачивание Android-версии: https://yadi.sk/d/edIZR2VuuRFce
    Ссылка на скачивание Windows-версии: https://yadi.sk/d/iIeC0OE8ukMoi
  21. Like
  22. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в Подключение в VCL компонента FMX   
    Чтобы сделать аналог TLayout в VCL, достаточно унаследоваться от TWinControl
    Я так понимаю, вам нужен прозрачный компонент с возможностью держать в себе компоненты?
     
    Update: добавил компонент
    TLayout Win32.zip
  23. Like
    Rusland получил реакцию от Brovin Yaroslav в Не работает поток на других ПК   
    Как определили что поток не запускается на другом ПК? И что значит " Поток должен мониторить визуальный компонент"?
  24. Like
    Rusland отреагировална enatechno в Зависает программа, использующая фреймы (Android)   
    1 Вариант. Заменой удаления фреймов на скрытие (подправленный проект приложил).
    2 Вариант. Расположить панель с кнопкой Back на главной форме, а не дублировать ее в каждом фрейме. (При необходимости саму кнопку Back можно скрывать при возврате на первый таб).
    3 Вариант. Использовать отложенное удаление фрейма).
     ...
    и еще много разных вариантов.
    Click; FPressed := False; StartTriggerAnimation(Self, 'Pressed') Отладчик выдал ошибку в методе объекта TControl (в Вашем случае это кнопка SpeedButton1 на фрейме). В этом методе в Click вы удаляете Frame, а значит и кнопку на ней. А в строке StartTriggerAnimation(Self, 'Pressed'); вы обращаетесь к этой удаленной кнопке (Self). Здесь и происходит AV.
    test2.zip
  25. Like
    Rusland отреагировална enatechno в FDQuery & LocalUpdate   
    FDQuery1.CachedUpdates := True; подробнее тут
×
×
  • Создать...