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

Лидеры

  1. krapotkin

    krapotkin

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


    • Баллы

      21

    • Постов

      2 183


  2. OnePeople

    OnePeople

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


    • Баллы

      18

    • Постов

      326


  3. Hevard

    Hevard

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


    • Баллы

      13

    • Постов

      78


  4. Martifan

    Martifan

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


    • Баллы

      13

    • Постов

      396


Популярный контент

Показан контент с высокой репутацией за 03.05.2023 во всех областях

  1. о... да мы меряемся? на 1000: 250-333fps как тебе такое Sulion 10000... fps3.zip
    3 балла
  2. Неужели так сложно не ссылки кидать, а приложить файлы? Среда разработки Delphi 10.3.pdf Delphi. Программирование для Windows, OS X, iOS и Android [2014].pdf Мобильная разработка в delphi.pdf Программирование_на_Delphi_для_школ.pdf
    3 балла
  3. Vladimir Gaivoronsky

    ShoesMaster

    Программа для администрирования обувного цеха. Переписана с VCL на FMX. Проверена и оттестирована на Windows (10) Linux (ubunti 21 - 23, openSuse) MacOS (10, 11 intel) на silicon негде проверять и нет SDK. Работает с Firebird версии 3 и 5. Поддерживает сканеры штрих кодов. Позволяет отследить весь процесс производства: от приемки заказа до отправки в магазин (продажей занимается другая программа) Написана с использованием TMS.FNC. В программе есть несколько тем оформления ( в основном темные, но есть и светлые). Пока еще происходит обкат в нескольких цехах, но скоро можно будет "пощупать" всем желающим. Также чуть позже будет версия на Android. Требует внешний сервер БД (для MacOS и Android). В макинтоше запустить и настроить firebird очень нетривиально, например сортировка по названиям без учета регистра не реализовано в 3 версии.
    2 балла
  4. Или просто сделайте borderstyle формы none. И сами сделайте рамки, кнопки закрыть, свернуть и т.д.
    2 балла
  5. Не по теме, но у оператора от таких цветов в конце дня нет желания кого-нибудь убить?
    2 балла
  6. В Delphi для усиления звука записи можно воспользоваться классом TAudioCaptureDevice и его свойством Volume. Это свойство позволяет установить уровень громкости для записи звука. Чем выше значение Volume, тем громче будет записанный звук. Вот пример, как можно использовать свойство Volume: uses FMX.AudioCapture, System.SysUtils; procedure RecordAudio(const AFileName: string; const AVolume: Single); var AudioCapture: TAudioCaptureDevice; begin AudioCapture := TAudioCaptureDevice.Create(nil); try AudioCapture.FileName := AFileName; AudioCapture.PauseLength := 0; AudioCapture.Volume := AVolume; // Установка уровня громкости AudioCapture.Active := True; Sleep(5000); // Запись в течение 5 секунд AudioCapture.Active := False; finally AudioCapture.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Задайте путь и имя файла, в который будет сохранен звук // Укажите значение громкости от 0 до 1 (например, 0.5 для половины максимальной громкости) RecordAudio('/sdcard/MyRecording.wav', 0.8); ShowMessage('Запись завершена.'); end; В этом примере в процедуре RecordAudio добавлен дополнительный параметр AVolume, который позволяет задать уровень громкости записи. Значение AVolume должно быть в диапазоне от 0 до 1, где 0 соответствует минимальной громкости, а 1 - максимальной. Вы можете экспериментировать с различными значениями AVolume, чтобы найти наиболее подходящий уровень усиления звука для вашего приложения и устройства.
    2 балла
  7. Когда вы говорите, что приложения на Андроиде весят 400КБ и используют библиотеки Java размером 2ГБ, вы, по-видимому, имеете в виду разницу между размером исполняемого файла приложения и размером всех библиотек, которые оно может использовать во время выполнения. Современные фреймворки, такие как Java для Android или .NET, часто используют большое количество библиотек, которые содержат общий код, используемый многими приложениями. Эти библиотеки обычно устанавливаются один раз и затем используются множеством приложений, поэтому их размер не влияет на размер каждого отдельного приложения. С другой стороны, приложения, созданные с использованием Delphi, обычно компилируются в нативный код и включают в себя все необходимые библиотеки и зависимости. Это может привести к тому, что исполняемые файлы будут больше, чем если бы они использовали общие библиотеки, но они не зависят от установленных библиотек времени выполнения. С точки зрения конечного пользователя, размер приложения часто не является ключевым фактором, особенно с учетом того, что современные устройства имеют большое количество памяти. Однако для разработчиков может быть важно минимизировать размер приложения, чтобы сократить время загрузки и уменьшить использование ресурсов. В итоге, вопрос "маленькие или большие приложения" зависит от контекста и требований конкретного приложения. В некоторых случаях использование общих библиотек может быть выгодно, в других - предпочтительнее иметь самодостаточное приложение с включенными в него всеми необходимыми библиотеками.
    2 балла
  8. что за детский сад на андроиде приложения весят 400К и при этом используют библиотеки Java на 2G это как - маленькие или большие приложения? то же с .NET Приложение с пустой формой тащит за собой весь функционал, который вы можете использовать, при этом не требуя установки дополнительных run-time библиотек, чем, собсн, всегда и хороша была Делфи mp3 файл весит 8-10 мб. а 5 сек видео "опы - 120. Не видел я чтобы кто-то плакал по этому поводу
    2 балла
  9. OnePeople

    миграция на 11.3

    Все проще Target - Android - Libraries -Revert System Files to Default
    2 балла
  10. нет никакой технологии, есть набор Bitmap и рисование этих битмап напрямую на Canvas объем памяти ровно такой, что требуется для хранения этих битмапов. скорость отрисовки - максимальная, потому что кроме отрисовки вы собсно ничего не делаете вообще)
    1 балл
  11. А зачем постоянно bringtofront? одного раза не достаточно? там реально медленно... я полагаю нужна глубина сцены? многие ее делают слоями: дальний фон (горы), ближний фон (лес), сцена (персы), и воздух (падающий снег) кидаем 4 лейаута и на них распределяем спрайты
    1 балл
  12. Slym

    Клонирование объекта

    Result := MemStream.ReadComponent(nil);
    1 балл
  13. GASCHE

    Google Play and Delphi

    Как все
    1 балл
  14. Так у меня его нет) Себе делал callback для поиска количества спутников. Пишите на java callback (GnssStatusCallback.rar) Через codex генерируете jar файл, добавляете его себе в проект в Libraries Пишите объявления методов (Androidapi.JNI.GnssStatusCallback.rar) Создаем класс type TGnnsStatusCallbackDelegate = class(TJavaLocal, JGnssStatusCallbackDelegate) private class var FConnectivityManager: JConnectivityManager; private FCallback: JGnssStatusCallback; protected public procedure onFirstFix(ttffMillis: Integer); cdecl; procedure onSatelliteStatusChanged(status: JGnssStatus); cdecl; procedure onStarted; cdecl; procedure onStopped; cdecl; public constructor Create(); end; constructor TGnnsStatusCallbackDelegate.Create; begin inherited Create; FCallback := TJGnssStatusCallback.JavaClass.init(TAndroidHelper.Context, Self); end; GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate.Create; Androidapi.JNI.GnssStatusCallback.rar GnssStatusCallback.rar
    1 балл
  15. OnePeople

    ProgressBar и потоки

    Вам уже ответили, но можете конечно сделать так в главном потоке procedure Test; const n = 200; var I: Integer; begin pb1.Min := 0; pb1.Max := n - 1; for I := 0 to n - 1 do begin pb1.Value := I; sleep(10); Application.ProcessMessages; end; end;
    1 балл
  16. krapotkin

    ProgressBar и потоки

    не понял вопрос. мы работаем в обработчике одного из событий очереди сообщений в главном потоке. событие отрисовки тоже стоит в очереди в главном потоке. закончим обработчик, запустится следующий, произойдет перерисовка.
    1 балл
  17. krapotkin

    Работа с web камерой

    скорее всего просто нет реализации. UI в Linux же обеспечен совершенно сторонними средствами так что вопрос скорее к пакету FMX Linux
    1 балл
  18. OnePeople

    Создание Dockable формы

    Ну я судил поэтому Если нет, то тут только как написали вы, делать все самому, хотя я думаю накрутить и в TabControl можно красивостей)
    1 балл
  19. TForm1 = class(TForm) private public procedure SetBoundsF(const ALeft: Single; const ATop: Single; const AWidth: Single; const AHeight: Single); override; end;
    1 балл
  20. OnePeople

    Создание Dockable формы

    Написал за 5 минут для примера как можно Новая папка.rar
    1 балл
  21. krapotkin

    Создание Dockable формы

    ничего там не из коробки. и в хроме тоже сами писали) TabControl в чистом виде много чего не поддерживает. Зато поддерживает главное - можно табы убрать вообще. И над ним сделать панель, которая будет вести себя как угодно, в том числе анимированно раздвигая элементы во время Drag Over А после дропа выстроить табы. или фреймы, или что угодно. вообще не проблема
    1 балл
  22. Проблема в том что ты убиваешь вкладку на которой кнопка выполняет свой клик... т.е. кнопка убивает себя из под себя... На до убийство сделегировать, например основному потоку через TThread.ForceQueue procedure TfrMain.TabClose(Sender: TObject); var activetab : Integer; begin activetab:=((Sender as TControl).Parent as TControl).Parent.Index; Thread.ForceQueue(nil, procedure begin TabControl1.Delete(activetab); end); end;
    1 балл
  23. В общем рисовать как оказалось на неклиентской части формы вообще не проблема. Но я делаю форму Acrylic (Полупрозрачную с размытым фоном), и вот тут появляются проблемы. Если рисовать обычным способом, как на Canvas, то цвет получается тоже полупрозрачный. Путём экспериментов выяснил, что относительно нормально рисуется таким методом: uses Winapi.Windows; BitBlt( GetWindowDC( WindowHandleToPlatform( Form.Handle ).Wnd ), 0, 0, BitMap.Width, BitMap.Height, BitMap.Canvas.Handle, 0, 0, cmMergePaint ); В обычном случае последний аргумент должен быть cmSrcCopy, но с ним тоже получается полупрозрачная картинка. Помогает только cmMergePaint, НО! таким способом рисуется картинка с инвертированными цветами. То есть перед таким рисованием нужно её самому инвертировать. Следующий шаг – это рисовать png картинку, так как редко надо рисовать просто непрозрачную прямоугольную картинку. С 32-битным TBitMap у меня пока что-то не получилось, а вот TPngImage вполне хорошо рисуется. uses FMX.Platform.Win, Winapi.Windows, Vcl.Graphics, Vcl.Imaging.pngimage; function TForm1.WinHandle: HWND; begin Result := WindowHandleToPlatform( Self.Handle ).Wnd; end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var ACanvas: Vcl.Graphics.TCanvas; png: TPngImage; begin ACanvas := Vcl.Graphics.TCanvas.Create; ACanvas.Handle := GetWindowDC(Self.WinHandle); png := TPngImage.Create; png.LoadFromFile('C:\Image.png'); try PatBlt( ACanvas.Handle, 0, 0, png.Width, png.Height, cmBlackness ); png.Draw( ACanvas, Rect( 0, 0, png.Width, png.Height ) ); finally ReleaseDC(Self.WinHandle, ACanvas.Handle); ACanvas.Handle := 0; ACanvas.DisposeOf; png.DisposeOf; end; end; Но и тут есть подводные камни. Метод TPngImage.Draw, если заглянуть в его код становится понятно, что рисует он поверх того, что уже нарисовано и картина накладывается одна на другую быстро теряя прозрачность полупрозрачных пикселей. Поэтому перед её рисованием нужно стереть, что было до этого, с чем отлично справляется функция Winapi.Windows.PatBlt. Но таким образом появляется мерцание. А так же я ещё не нашёл, как отловить в FireMonkey отловить у формы событие WM_NCPAINT. Пока что навесил рисование на событие формы OnPaint, но оно не стабильно работает в данном случае и бывает, когда картинка стирается и не рисуется, пока не наступит надобность перерисовать клиентскую часть формы.
    1 балл
  24. Martifan

    Размер приложения

    Скорее всего, увеличение размера исходного кода произошло из-за следующих причин: 1. Разница в размере типов PChar и PAnsiChar. В Delphi 2009 и более поздних версиях PChar был заменен на PAnsiChar для совместимости с Unicode. Размер PAnsiChar в 2 раза больше чем PChar. 2. Автоматическая конвертация строковых литералов в Unicode. В новых версиях Delphi строковые литералы имеют тип UnicodeString вместо AnsiString. Это также увеличивает размер. 3. Добавление префиксов перед строковыми литералами. Для совместимости с Unicode Delphi автоматически добавляет префиксы перед строками, например 'U', 'L', etc. Это тоже увеличивает размер кода. 4. Выравнивание данных. Компилятор может добавлять выравнивание в памяти для некоторых типов, например для PAnsiChar. 5. Другие изменения в формате объектного кода. Например, более длинные имена классов/методов. Таким образом, переход на новые версии Delphi с Unicode поддержкой может привести к значительному увеличению размера исходного кода из-за несовместимости строк, упаковки данных и других факторов. Это нормальное явление, цена прогресса.
    1 балл
  25. К сожалению, в FireMonkey для Windows нет встроенной поддержки для размещения компонентов или рисования на заголовке окна (title bar). Однако, есть несколько возможных вариантов для достижения похожего эффекта: Создать собственный кастомный компонент на основе TControl, который будет перекрывать заголовок окна и имитировать его. Можно нарисовать свой фон, кнопки и т.д. Использовать Windows API функции для настройки и изменения заголовка окна. Например, SetWindowText, SetWindowLong и другие. Это более сложный подход, но дает больше контроля. Рассмотреть сторонние компоненты и библиотеки. Возможно, кто-то уже реализовал похожую функциональность для FireMonkey. Попробовать поместить TControlAboveTarget на TForm и настроить его позицию/размер чтобы перекрывал заголовок. Не идеальный вариант, но может сработать. Так что в целом это возможно реализовать в FireMonkey, но нет встроенного прямого решения как в VCL. Придется поиграться с кастомными компонентами и низкоуровневым API.
    1 балл
  26. Используй константу sLineBreak вместо #10#13 / #10 и всё будет правильно работать и виндах, и на андроиде
    1 балл
  27. У меня 11, и без него размер editа зависит от размера шрифта и ни какими свойствами не правиться
    1 балл
  28. Я вот давно уже делаю все на фреймах... Одно главное окно и кучка фреймов в рамках этого окна, даже ShowMessage - кастомный фрейм, даже некоторые TabItemы с фреймом. есть моменты где глубина вложенности фреймов доходит 4 (Окно, фрейм, вкладки с фреймами, под вкладки , фрейм с диалогом) Анимированную прозрачность фрейма - легко: там есть Opacity, TAnimator.AnimateFloat(Frame,'Opacity',1,1); Окна чуть сложнее... Масштаб - TScaledLayout
    1 балл
  29. procedure TForm1.Button1Click(Sender: TObject); var Form2:TForm2; h,w,l,t:integer; begin Form2:=TForm2.Create(nil); try h:=Form2.Height; w:=Form2.Width; l:=Form2.Left; t:=Form2.Top; Form2.Height:=1; Form2.Width:=1; Form2.Left:=l+ (w div 2); Form2.Top:=t+ (h div 2); TAnimator.AnimateInt(Form2,'Height',h,1); TAnimator.AnimateInt(Form2,'Width',w,1); TAnimator.AnimateInt(Form2,'Left',l,1); TAnimator.AnimateInt(Form2,'Top',t,1); Form2.ShowModal; finally Form2.Free; end; end; "В лоб" как-то так
    1 балл
  30. Martifan

    Теряются Push уведомления

    Firebase Cloud Messaging (FCM) предоставляет возможность установить приоритет сообщения, но это не гарантирует, что все сообщения будут доставлены в определенном порядке или что все сообщения будут доставлены вообще. Когда устройство находится в режиме отключения от интернета, FCM хранит только последнее сообщение для каждого топика. Это означает, что если вы отправляете три разных уведомления на одно и то же устройство, когда оно отключено от интернета, FCM сохранит только последнее уведомление. Когда устройство снова подключается к интернету, оно получит только это последнее уведомление. Если вам нужно, чтобы все уведомления были доставлены, вам нужно будет реализовать свою собственную систему очереди на стороне клиента. Это может включать в себя сохранение уведомлений в локальной базе данных на устройстве и отображение их в нужном порядке, когда устройство подключается к интернету.
    1 балл
  31. Intent selectorIntent = new Intent(Intent.ACTION_SENDTO); selectorIntent.setData(Uri.parse("mailto:")); final Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"address@mail.com"}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "The subject"); emailIntent.putExtra(Intent.EXTRA_TEXT, "The email body"); emailIntent.setSelector( selectorIntent ); activity.startActivity(Intent.createChooser(emailIntent, "Send email..."));
    1 балл
  32. Hevard

    Delphi 11 Transparent StatusBar

    Проверено на Александрии. Работает.
    1 балл
  33. Hevard

    Вышла Delphi 11 Community Edition

    Вы не любитель - профессионал мазохизма! Не забудьте, Win x64 должна быть...
    1 балл
  34. krapotkin

    Вышла Delphi 11 Community Edition

    ой, что-то далеко все зашло если что, RAD Studio - это и есть Delphi + Builder только Builder - мертвая штука даже по сравнению с самой Delphi, которая, "как известно", мертва))) Множество людей ставили этот продукт и то, что все работает из коробки, несомненно. Значит, где-то вы сворачивали не туда. Поэтому нужно было просто не валить все в кучу, а разбираться по одной проблеме. Разобрались с видимостью телефона - раз. Установили JDK - два. И далее по шагам. Потому что В двух абзацах описать продукт на десяток гигабайт мне лично не представляется возможным.
    1 балл
  35. Hevard

    Вышла Delphi 11 Community Edition

    Это не платформа встала криво, а Вы ее так установили. Просили "пошаговый букварь", я Вам отправил ссылку. Но, видимо, Вам и прочитать не досуг, и ко второй части перейти самостоятельно. Программирование на Delphi. Часть 2. Разработка Android-приложения - Школа программирования ProgTips Я не знаю, где Вы вычитали про какие-то последовательности установок Явы, СДК, и "что-то" ещё. Отмечаете при установке, всё что нужно и все устанавливается автоматически. А как "она устроена" ломать голову не надо, для этого есть специально обученные люди. Вроде как уже всё разжевали несколько раз...
    1 балл
  36. Hevard

    Вышла Delphi 11 Community Edition

    Программирование на Delphi. Часть 1. Установка Delphi Community Edition (бесплатная версия) - Школа программирования ProgTips
    1 балл
  37. krapotkin

    Вышла Delphi 11 Community Edition

    безотносительно SDK. Надеюсь, вы сможете найти на своих дисках свой SDK и ввести путь к нему в SDK base path. Остальное она и так почти все сама подтягивает. Но. Проблема в заголовке вовсе не в SDK. Закрыть Delphi. Ввести в командной строке ado devices и искать свой телефон там https://learn.microsoft.com/ru-ru/dual-screen/android/emulator/adb еще внимательно почитайте тут: https://fire-monkey.ru/topic/7184-android-sdk-с-чем-едят-и-как-бороться/#comment-42318 https://fire-monkey.ru/topic/6431-не-подключается-huawei/#comment-38150
    1 балл
  38. Hevard

    Диалоговое окно MessageBox на Android

    MessageDlg (C++) - RAD Studio Code Examples (embarcadero.com) void __fastcall TForm4::Button1Click(TObject *Sender) { UnicodeString errorText = "This is a sample message for an error"; MessageDlg(errorText,mtError,mbAbortRetryIgnore,0); }
    1 балл
  39. OnePeople

    Компиляция приложения android

    Ну у вас в настройках sdk API-Level location версии 26, а был наверное 29 и выше вот ошибки и небыло
    1 балл
  40. OnePeople

    Компиляция приложения android

    Нигде в деплоймент не указана внешняя память ??????? Вообще то requestLegacyExternalStorage это параметр у вас в AndroidManifest.xml
    1 балл
  41. OnePeople

    Иконка приложения

    procedure loadbit; begin if JStringToString(Drawable.getClass.toString) = TJBitmapDrawable.ClassName then begin if (TJBitmapDrawable.Wrap((Drawable.getCurrent as ILocalObject).GetObjectID).getBitmap<>nil) then begin Bitmap := TJBitmapDrawable.Wrap((Drawable.getCurrent as ILocalObject).GetObjectID).getBitmap end else Bitmap:=nil; end else begin bmp:=TJBitmap.JavaClass.createBitmap(Drawable.getIntrinsicWidth, Drawable.getIntrinsicHeight, TJBitmap_Config.JavaClass.ARGB_8888); Canv:= TJCanvas.JavaClass.init(bmp); drawable.setBounds(0, 0, Canv.getWidth(), Canv.getHeight()); drawable.draw(Canv); Bitmap:=bmp; end; end;
    1 балл
  42. Линковка Kotlin (Котлин) библиотек в Delphi, как делаю: Хедеры линкуемых библиотек обычно громадны описанием всех типов... Я обычно делаю свой jar на java в нем линкую зависимости и наружу для дельфи оставляю один объект с простыми функциями. Хедер дельфи получается компактным и понятным: package com.MyCompany.evotor; public interface J2DCallback { void Log(String str); String Trans(String str); String GetValue(String name); void SetValue(String name, String value); Activity GetActivity(); Context GetContext(); } public class FiscalCoreConnection { final private Global Instance; public FiscalCoreConnection(J2DCallback aj2d) throws NullPointerException { Instance = new Global(aj2d); } public String SendJSON(String JSON){ try{ return Instance.SendJson(JSON); } catch (Exception e) { return FiscalCoreException.MakeJson(e); } } } type J2DCallbackClass = interface(IJavaClass) ['{856654D5-7939-44DF-ACD5-E2EF8C6D3AA4}'] end; [JavaSignature('com/MyCompany/evotor/J2DCallback')] J2DCallbackIntf = interface(IJavaInstance) ['{025B14E9-C041-4105-9E85-83CC127CC340}'] procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; TJ2DCallbackImp = class(TJavaGenericImport<J2DCallbackClass, J2DCallbackIntf>) end; [JavaSignature('com/MyCompany/evotor/FiscalCoreConnection')] JFiscalCoreConnection = interface(JObject) ['{5797747D-D61D-4EF6-94F7-5E8994545CC2}'] function SendJSON(JSON:JString):JString; cdecl; end; JFiscalCoreConnectionClass = interface(JObjectClass) ['{81782882-DFCF-4FA9-BD37-02CCCF2409EA}'] function init(j2d : J2DCallbackIntf) : JFiscalCoreConnection; cdecl; end; TJFiscalCoreConnection = class(TJavaGenericImport<JFiscalCoreConnectionClass, JFiscalCoreConnection>) end; TJ2DCallback = class(TJavaLocal, J2DCallbackIntf) public procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; Все зависимости в build.gradle: dependencies { implementation 'com.github.evotor:integration-library:v0.4.50' implementation 'com.google.zxing:core:3.4.0' } В Дереве External Libraries забираем jarы зависимостей ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Там же забираем kotlin-stdlib ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Но в kotlin-stdlib.jar есть "лишний" файл kotlin-stdlib-1.5.10.jar\META-INF\versions\9\module-info.class Открываем архиватором и удаляем файл или всю папку versions Почти все готово... Но котлин еще и посыпан сахаром и не хочет Дельфей dexится, хочет -min-sdk-version=26 Поможем Delphi: Ищем CodeGear.Common.Targets, у меня он в "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"\ Ищем в нем --output, и перед ним вставим все про sdk. У меня получилось так: <DxCmd>PATH $(JDKPath)\bin;$(PATH); %26 set JAVA_HOME=$(JDKPath)%26 "$(JavaDxPath)" --dex --min-sdk-version=26 --output=</DxCmd> Далее цепляем все jar в проект Либа производителя, Либа своя обертка, и котлин Иии собираем! Если есть еще зависимости делаем аналогично: находим jar, выпиливаем META-INF\versions\9\module-info.class, линкуем в проект и собираем... Не все зависимости используются и нужны, поэтому добавляем поштучно до тех пор пока не заведется.
    1 балл
  43. ENERGY

    Размер компилируемого файла

    Системе не навредит, просто смысла в этом нет. Лучше упаковать архиватором, или инсталлятором. Упакованные exe распаковываются целиком в память, и остаются там до конца, плюс дольше запускаются. Не упакованные exe загружаются по сегментам, частично, только то, что нужно. http://api.farmanager.com/ru/articles/packers.html Я такой обычно код вставляю в dpr файл, для Windows проектов. uses Windows; {$IFDEF RELEASE} {$SETPEFlAGS IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_DEBUG_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED} {$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])} {$ENDIF} Конечно же нужно выбрать Release в Build Configurations в правой панели. Есть смысл упаковывать вирусы итп, чтобы быстрее скачать, чтобы зашифровать и сменить сигнатуру. Или кеиген или что-то подобное.
    1 балл
  44. Brovin Yaroslav

    Кастомизация listbox

    Актуальны :-)
    1 балл
  45. Axbor

    MaskEdit

    // --------------------------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include "Unit1.h" // --------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm1 *Form1; // --------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Mask = "+7(00)000-00-00;0;*"; PhoneNumber = ""; } // --------------------------------------------------------------------------- void __fastcall TForm1::edtPhoneTyping(TObject *Sender) { edtPhone->CaretPosition = GetCaretPos(); } // --------------------------------------------------------------------------- int __fastcall TForm1::GetCaretPos() { int i; int Result = 0; for (i = 0; i < Mask.Length(); i++) { if (!(MaskGetCharType(Mask, i) == mcDirective || MaskGetCharType(Mask, i) == mcMask)) Result += 1; if ((Result + PhoneNumber.Length()) == i) break; } Result = Result + PhoneNumber.Length() - 1; return Result; } int __fastcall TForm1::GetMaxLength() { int Result = 0; for (int i = 0; i < Mask.Length(); i++) if (MaskGetCharType(Mask, i) == mcMask) Result = Result + 1; return Result; } void __fastcall TForm1::edtPhoneKeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift) { if ((Key == 8) && (PhoneNumber.Length() > 0)) PhoneNumber = PhoneNumber.SubString(1, PhoneNumber.Length() - 1); else if ((PhoneNumber.Length() < GetMaxLength()) && (Key == 0) && IsDigit(KeyChar)) PhoneNumber = PhoneNumber + KeyChar; else KeyChar = 0; } // --------------------------------------------------------------------------- void __fastcall TForm1::edtPhoneKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift) { edtPhone->CaretPosition = GetCaretPos(); } //--------------------------------------------------------------------------- void __fastcall TForm1::edtPhoneValidating(TObject *Sender, UnicodeString &Text) { Text = FormatMaskText(Mask, PhoneNumber); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { edtPhone->Text = FormatMaskText(Mask, PhoneNumber); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <System.Classes.hpp> #include <FMX.Controls.hpp> #include <FMX.Forms.hpp> #include <System.MaskUtils.hpp> #include <FMX.Controls.Presentation.hpp> #include <FMX.Edit.hpp> #include <FMX.StdCtrls.hpp> #include <FMX.Types.hpp> #include <System.Character.hpp> #include <string.h> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TEdit *edtPhone; TButton *Button1; void __fastcall edtPhoneTyping(TObject *Sender); void __fastcall edtPhoneKeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift); void __fastcall edtPhoneKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift); void __fastcall edtPhoneValidating(TObject *Sender, UnicodeString &Text); void __fastcall FormCreate(TObject *Sender); private: // User declarations public: String PhoneNumber; String Mask; int __fastcall GetCaretPos(); int __fastcall GetMaxLength(); // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif Для тех кому нужен на C++
    1 балл
  46. Где-то был материал... У меня в блоге есть вот такие статьи: Как создавать обёртки для JAVA-кода Как подключить и использовать свой JAVA-класс Страничка с готовым кодом: JNI Code Snippet и ещё куча примеров использования Android API в самих статьях Кстати, это не вы случаем задали вопрос "Здравствуйте. А есть ли возможность определить текущее положение ползунка громкости?" в блоге? Примерный код: uses Androidapi.JNI.JavaTypes, Androidapi.JNI.Media, Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNIBridge; procedure TForm1.Button1Click(Sender: TObject); var AudioObj: JObject; Audio: JAudioManager; CurrentVolume: Integer; begin AudioObj = SharedActivity.getSystemService(TJActivity.JavaClass.AUDIO_SERVICE); Audio := TJAudioManager.Wrap((AudioObj as ILocalObject).GetObjectID); CurrentVolume = Audio.getStreamVolume(TJAudioManager.JavaClass.STREAM_MUSIC); end;
    1 балл
  47. не знаю актуально ещё или нет, но возможно так: http://stringgrid-delphi.ru/delete-row.php Удаление одной строки: процедура: procedure TForm1.DeleteRow(ARow: Integer); var i, j: Integer; begin with StringGrid1 do begin for i:=ARow+1 to RowCount-1 do for j:=0 to ColumnCount-1 do Cells[j, i-1]:=Cells[j, i]; RowCount:=RowCount-1; end; end; вызов процедуры: DeleteRow(номер строки); Удаление всех строк: StringGrid1.RowCount:=0;
    1 балл
  48. Добрый день О том, как получить доступ к любому свойству через StylesData (в том числе к свойству text) частично описано тут: Как получить значение свойства объекта стиля, используя StylesData? Как получить объект стиля? Назначение обработчиков событий для элементов стиля через StylesData Допустим, что TSpinBox в стиле назван (StyleName), как 'spinbox', тогда Присваивание обработчика для SpinBox: ListBoxItem1.StylesData['spinbox.OnChange'] := TValue.From<TNotifyEvent>(SBCountChange); Доступ к свойству Text у TSpinBox: ListBoxItem1.StylesData['spinbox.Text'].ToString; Таким способом можно получить доступ к любому свойству и событию любого элемента стиля.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...