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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. Like
    AngryOwl получил реакцию от Евгений Корепов в Мультиязычность в андроиде   
    В общем я тупо вырезал часть из своего проекта. И создал маленький демо-проект.
    Работает везде!
    Хоть на Винде, хоть на Маке, хоть на Андроиде.
    Думаю - разберетесь. Тем-более, что там все очень просто.
    В демке сделал только два языка (в моем проекте их 11).
    Все в Ini-файлах, работает очень быстро.
    P.S. Все желающие могут использовать как хотят. Можете что-то добавлять, исправлять и т.д. Ну и не забываем делиться с другими...
    P.P.S. Позже выложу приложение (GUI) для редактирования файлов языков. С автоматическим переводчиком и прочими мелочами, упрощающими редактирование.
    Test_Translator.zip
  2. Like
    AngryOwl отреагировална Rusland в А как хочется что бы Delphi опять стал «Первым в мире».   
    Первым не был, но был очень популярен во времена Delphi 7... сколько форумов тогда было, сколько тем. Потом все как-то стало грустно на несколько лет, до появления Firemonkey, когда студия снова заинтересовала.
    А насчет цен - сильно дорого ИМХО, но тут уж ничего не поделать, кто разрабатывает такой мощный инструмент, тот и устанавливает цену (спасибо хоть акции подобно этой устраивают, когда Стартер бесплатно раздают, а потом предлагают Pro+Mobile со скидкой)
  3. Like
    AngryOwl отреагировална Vitaldj в Как Вы используете RAD Studio   
    Я использовал ранее только для себя.  Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
  4. Like
    AngryOwl получил реакцию от Vitaldj в Как скрыть MasterButton?   
    Попробуйте использовать PreloadContent (если, конечно, Вы его уже не используете)
    З.Ы. Это в смысле - по поводу первого появления и прочих лагов "в первый раз"
  5. Like
    AngryOwl отреагировална Fedor K в TNotificationCenter. Можно ли изменить иконку?   
    Чтобы не лезть в исходники, можно сделать так для Android:
    1. В Deployment : добавляешь нужную картинку X.png и устанавливаешь у картинки "Remote Path" "res\drawable\";
    2. В коде перед созданием уведомления добавляешь:
    const IMAGE = 'drawable/X'; //расширение картинки не указывается var lId : Integer; begin lId := TAndroidHelper.Context.getResources().getIdentifier( StringToJString(IMAGE), StringToJString('drawable'), TAndroidHelper.Context.getPackageName); TAndroidHelper.Context.getApplicationInfo.icon := lId; //именно отсюда потом берется Id картинки для локального уведомления *Проверял на Android 4.4, в более поздних версиях могут быть различия, версия IDE =  Delphi 10 Seattle.
    **В прошивках типа MIUI код выше может не работать из-за жестокого кеширования.
  6. Like
    AngryOwl получил реакцию от sinuke в Как скрыть MasterButton?   
    Попробуйте использовать PreloadContent (если, конечно, Вы его уже не используете)
    З.Ы. Это в смысле - по поводу первого появления и прочих лагов "в первый раз"
  7. Like
    AngryOwl получил реакцию от zekelive в Загрузка PNG в Image из Deployment   
    В конкретном случае - речь идет о Android.
    Тут, в некотором смысле, проще - воспользуйтесь замечательными компонентами FGX от автора данного форума. У компонента TfgApplicationEvents есть все события, которые Вам необходимы. А именно - событие ДО отображения формы (и куча других).
    Ну если Вам не хватает отладчика - тупо натыкайте в нужных местах "тостов" (Toast), и смотрите - что будет "последним" событием...
    З.Ы. А зависание программы происходит однозначно из-за того, что Вы пытаетесь что-то изменить в интерфейсе, до момента пока форма еще не стала активной. Решить можно не только синхронизацией, но и каким-нибудь Splash.
  8. Like
    AngryOwl получил реакцию от zekelive в Загрузка PNG в Image из Deployment   
    Попробуйте загрузку ваших картинок оформить в:
    TThread.Synchronize(TThread.CurrentThread, procedure begin // тут загрузка ваших картинок end);  
  9. Like
    AngryOwl получил реакцию от Евгений Корепов в Использование своего шрифта под Windows   
    В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
    Но можно обойтись и без него.
    Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
    Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
    const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
    P.S. Ну и конечно - это все именно под винду...
    RegFont.zip
  10. Like
    AngryOwl получил реакцию от enatechno в Использование своего шрифта под Windows   
    В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
    Но можно обойтись и без него.
    Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
    Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
    const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
    P.S. Ну и конечно - это все именно под винду...
    RegFont.zip
  11. Like
    AngryOwl получил реакцию от Rusland в Использование своего шрифта под Windows   
    В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
    Но можно обойтись и без него.
    Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
    Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
    const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
    P.S. Ну и конечно - это все именно под винду...
    RegFont.zip
  12. Like
    AngryOwl получил реакцию от #WAMACO в Использование своего шрифта под Windows   
    В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
    Но можно обойтись и без него.
    Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
    Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
    const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
    P.S. Ну и конечно - это все именно под винду...
    RegFont.zip
  13. Like
    AngryOwl получил реакцию от zairkz в Использование своего шрифта под Windows   
    В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
    Но можно обойтись и без него.
    Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
    Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
    const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
    P.S. Ну и конечно - это все именно под винду...
    RegFont.zip
  14. Like
    AngryOwl отреагировална sinuke в Анимация нажатия   
    тоже интересно узнать, как убрать этот эффект
     
    добавлено чуть позже:
    разобрался. нужно было убрать этот эффект на итэмах ListBox'а. Нашел стиль listboxitem и удалил у него ActiveStyleObject.

  15. Like
    AngryOwl отреагировална Камышев Александр в Failed to load libssl.so   
    По всему не установлены SDK Intel x86, соответственно проблема не в них. 
    Анекдот. При головных болях Врач пациенту: бросай курить, Пациент: я не курю, Врач: попробуй закурить.
    1. поискать libssl под х86,  пишут что они где-то уже есть в системе у GT.
    2. попробовать обновить библиотеки SDK для x86, т.е. если нельзя удалить х86 то надо их поставить
    применить метод научного тыка
  16. Like
    AngryOwl отреагировална Равиль Зарипов (ZuBy) в Failed to load libssl.so   
    (возможно!) нужно найти libssl.so/libcrypto.so для x86, у вас только для arm. и потом грузить файлы под разные архитектуры, только еще бы определить что запущено на intel'e
  17. Like
    AngryOwl отреагировална tromani в Ошибка "Bitmap size too big"   
    в общем вышел из положения, очередным костылем к FMX, если кому понадобиться вот полный текст, работает сносно
    procedure JBLoadFromFile(FileName:string; const ABitmap : TBitmap;W,H:integer); procedure SwapRB(var src:TJavaArray<Integer>); var i:integer; begin for i:= 0 to src.Length-1 do src.Items[i]:=(src.Items[i] and $FF00FF00) or ((src.Items[i] and $000000FF) shl 16) or ((src.Items[i] and $00FF0000) shr 16); end; procedure JBitmapToBitmap(const AImage: JBitmap; const ResBitmap: TBitmap); var ImageData: TJavaArray<Integer>; BitmapData: TBitmapData; Width, Height: Integer; begin Width := AImage.getWidth; Height := AImage.getHeight; try ResBitmap.SetSize(Width,Height); ImageData := TJavaArray<Integer>.Create(Width * Height); AImage.getPixels(ImageData, 0, Width, 0, 0, Width, Height); SwapRB(ImageData); if ResBitmap.Map(TMapAccess.maWrite, BitmapData) then try Move(ImageData.Data^, BitmapData.Data^, Width * Height * SizeOf(Integer)); finally ResBitmap.Unmap(BitmapData); end else ResBitmap.Clear(TAlphaColorRec.Green); except ResBitmap.Clear(TAlphaColorRec.Green); end; end; function calculateInSampleSize(options:JBitmapFactory_Options; reqWidth, reqHeight:integer):integer; var nh,nw:integer; heightRatio,widthRatio:integer; begin nh:=options.outHeight; nw:=options.outWidth; result:=1; if (nh> reqHeight) or (nw > reqWidth) then begin heightRatio:=round( nh / reqHeight); widthRatio:= round(nw /reqWidth); if heightRatio<widthRatio then Result:=heightRatio else Result:=widthRatio; end; end; var bmf_options:JBitmapFactory_Options; cbm:JBitmap; begin bmf_options:=TJBitmapFactory_Options.JavaClass.init; bmf_options.inJustDecodeBounds := true; TJBitmapFactory.JavaClass.decodeFile(StringToJString(FileName),bmf_options); bmf_options.inSampleSize := calculateInSampleSize(bmf_options, W, H); bmf_options.inJustDecodeBounds := false; try cbm:=TJBitmapFactory.JavaClass.decodeFile(StringToJString( FileName),bmf_options); except cbm:=nil; end; if Assigned(cbm) then try JBitmapToBitmap(cbm,ABitmap) except ABitmap.Clear(TAlphaColorRec.Blue); end else ABitmap.Clear(TAlphaColorRec.Green); end; может кто улучшит, подскажет чтото новое
     
  18. Like
    AngryOwl получил реакцию от Kitty в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?   
    Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
    А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
    Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
    P.S. Ну и сори - что не в тему (какую именно БД использовать)...
  19. Like
    AngryOwl отреагировална zairkz в Получение результата голосового распознавания   
    Компонент надо установить только под 32-bit windows->compile->install
    А для компиляции проекта надо чтобы в папке проекта лежали выше указанные файлы.
  20. Like
    AngryOwl отреагировална zairkz в Получение результата голосового распознавания   
    Упс, не забудьте добавить SpeechRecognition.pas' добавить в проект и в папку с проектом скопировать файлы android.speech.SpeechRecognizer.pas, Androidapi.JNI.Speech.pas, AndroidTTS.pas
  21. Like
    AngryOwl отреагировална Rusland в Получение результата голосового распознавания   
    Создал новый проект, кинул компонент, все работает... что не может не радовать )
    Но можно ли сделать так чтобы появляющееся окно с Микрофоном
     
    было поменьше или располагалось снизу, не перекрывая компоненты формы?
  22. Like
    AngryOwl отреагировална Andrey Efimov в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?   
    База: SQLite, либо файлы xml - тут от задачи зависит.
    Файлы: Деплой (если их немного), файл (.RC или .RES) - удобнее, если файлов много (для авто - генерации, писал утилитку Приложение для создания файла ресурсов (RC, RES)). Либо стягивание с сервера в инете, при необходимости.
     
  23. Like
    AngryOwl получил реакцию от Andrey Efimov в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?   
    Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
    А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
    Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
    P.S. Ну и сори - что не в тему (какую именно БД использовать)...
  24. Like
    AngryOwl получил реакцию от Vitaldj в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?   
    Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
    А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
    Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
    P.S. Ну и сори - что не в тему (какую именно БД использовать)...
  25. Like
    AngryOwl отреагировална Евгений Корепов в Berlin HTTPClient: сломаны Cookies - ошибка в исходном коде   
    Оказывается эта проблема была обнаружена еще  26/Apr/16 12:29 AM  https://quality.embarcadero.com/browse/RSP-14307 . И пока доступен только патч с хелперами https://quality.embarcadero.com/secure/attachment/17147/RSP14307.patch.zip
    Написана что проблема решена в Berlin Update 1. Но как понимаю этого апдейта еще не было?
×
×
  • Создать...