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

Лидеры

  1. krapotkin

    krapotkin

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


    • Баллы

      21

    • Постов

      2 181


  2. OnePeople

    OnePeople

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


    • Баллы

      17

    • Постов

      323


  3. Hevard

    Hevard

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


    • Баллы

      14

    • Постов

      78


  4. Martifan

    Martifan

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


    • Баллы

      13

    • Постов

      396


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

Показан контент с высокой репутацией за 30.04.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. Hevard

    Вышла Delphi 11 Community Edition

    Для переноса (компилирования) проектов из более ранней версии необходимо провести действия для Android 32-bit и Android 64-bit. В окне Projects (справа) выбрать Target Platforms -> Правой кнопкой щёлкнуть по Libraries и выбрать Revert System Files to Default. И не забудьте перенести debug.keystore из c:\Users\<USER>\AppData\Roaming\Embarcadero\BDS\21.0\ в папку ...\22.0\ Delphi: Community Edition - Embarcadero
    2 балла
  10. OnePeople

    миграция на 11.3

    Все проще Target - Android - Libraries -Revert System Files to Default
    2 балла
  11. нет никакой технологии, есть набор Bitmap и рисование этих битмап напрямую на Canvas объем памяти ровно такой, что требуется для хранения этих битмапов. скорость отрисовки - максимальная, потому что кроме отрисовки вы собсно ничего не делаете вообще)
    1 балл
  12. Tumaso

    Параллельный отладчик

    Сама суть Synchronize в том, чтобы выполнить код в главном потоке
    1 балл
  13. OnePeople

    bluetooth что не так

    Может их нет, новых, а есть устройства которые уже подключались ранее Bluetooth.GetPairedDevices; FPairedDevices := Bluetooth.GetPairedDevices; if FPairedDevices.Count > 0 then for I:= 0 to FPairedDevices.Count - 1 do ListBox.Items.Add(FPairedDevices[I].DeviceName) Ну и если Android API >= 31 if TJBuild_VERSION.JavaClass.SDK_INT >= 31 then begin FPermissionBTConnectSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_CONNECT); FPermissionBTScanSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_SCAN); FPermissionBTAdvertiseSettings := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADVERTISE); PermissionsService.RequestPermissions([FPermissionBTConnectSettings] + [FPermissionBTScanSettings] + [FPermissionBTAdvertiseSettings], nil); end;
    1 балл
  14. Решено! Если кому интересно: При долгом нажатии на PUSH, активизируется виртуальная клавиатура! А у меня навешено событие на OnVirtualKeyboardShown() ...
    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. OnePeople

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

    Ну я судил поэтому Если нет, то тут только как написали вы, делать все самому, хотя я думаю накрутить и в TabControl можно красивостей)
    1 балл
  17. krapotkin

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

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

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

    Написал за 5 минут для примера как можно Новая папка.rar
    1 балл
  20. Подведи мышкой к правому краю, курсор поменяется на изменение размеров, зажми левую кнопку мыши и вытащи правую область (которая и есть предпросмотр) влево
    1 балл
  21. krapotkin

    TLocationSensor - километраж

    тут написано, что проблема сложная и не решается в лоб https://android-developers.googleblog.com/2020/12/improving-urban-gps-accuracy-for-your.html можно попробовать оставить только Manifest.permission.ACCESS_FINE_LOCATION и исключить Manifest.permission.ACCESS_COARSE_LOCATION чтобы попадали только данные со спутников но вот тут написано, что в современных ОС вы должны это запрашивать, и не факт что получите https://developer.android.com/training/location/permissions
    1 балл
  22. Подключусь к теме... Как-то пытался сделать подобное и в принципе получилось, безрамочное окно, которое по-нативному работает, что удалось заставить работать: Если взять окно за заголовок и начать двигать им туда-сюда, то все остальные окна свернутся - нативное поведение Если взять окно за заголовок то в Windows 11 появляется верхнее меню с макетами отображения на экране - нативное поведение Если взять окно за заголовок и перетащить его к одному из краев экрана, то появится макет для отображения окна - нативное поведение Нативным образом реализовано изменение размера за все края формы, включая диагональные. Так же окно имеет нативные анимации появления\исчезания, разворачивания\сворачивания Так же имеется нативная тень А на Windows 11 имеются закруглённые края окна Что не получилось: Не получилось реализовать нативное поведение, когда в Windows 11 наводишь курсор на кнопку "развернуть окно", там появляется небольшое меню с макетами отображения на экране. Нормально реализовать границы для изменения размеров окна, ибо из-коробки они находятся за пределами окна в поле где тень у окна (в Windows 10 и Windows 11 так), у меня же они внутри окна. Как-то делал и получалось, но уже не помню. Код несложно адаптировать и под FireMonkey BorderlessWindowWithAeroSnap.zip
    1 балл
  23. krapotkin

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

    В RTL за годы тоже произошло 100500 изменений и добавлений. Функционал форм поменялся. Добавились стили в VCL. Все это отразилось на размере. Но я по-прежнему не вижу проблем. Вот питонные программы тянут почти 500м самого питона. Сишарп и другие - гигабайты дотнета. И ничего, никто не морщится даже.
    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. Martifan

    splash_image_def rad 11.3

    К сожалению, вы не можете использовать прямые значения цвета в теге android:drawable. Этот атрибут предназначен для ссылок на ресурсы, а не для прямых значений цвета. Однако вы можете определить свой собственный цвет в ресурсах вашего приложения и ссылаться на него. Для этого выполните следующие шаги: 1. Откройте файл res/values/colors.xml в вашем проекте. Если этот файл не существует, создайте его. 2. В файле colors.xml определите свой собственный цвет, как показано ниже: <?xml version="1.0" encoding="utf-8"?> <resources> <color name="my_custom_color">#0066cc</color> </resources> Теперь вы можете использовать свой пользовательский цвет в файле splash_image_def: <item android:drawable="@color/my_custom_color" /> учтите, что названия ресурсов не должны начинаться с цифры и не должны содержать символов, кроме букв (a-z), цифр (0-9) и подчеркивания (_). Ваш код может выглядеть следующим образом: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/my_custom_color" /> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher" /> </item> </layer-list>
    1 балл
  26. Используй константу sLineBreak вместо #10#13 / #10 и всё будет правильно работать и виндах, и на андроиде
    1 балл
  27. Ваши проблемы с анимацией могут быть связаны с несколькими вещами. Во-первых, стоит отметить, что метод AnimateFloatWait помечен как устаревший, и рекомендуется использовать Ani.TAnimator вместо него. Ani.TAnimator.AnimateFloat создает и запускает объект TFloatAnimation. Он устанавливает свойства анимации и начинает анимацию. Однако стоит заметить, что если объект не видим в момент вызова этого метода, анимация не запускается: анимация создается, но не выполняется. Вторым фактором может быть то, как Android обрабатывает анимацию. Android может иметь разные характеристики производительности и отображения, которые влияют на то, как анимация выполняется на устройстве. Также, есть пример использования анимации в Delphi для Android, который может быть полезен. Get access to over 100 FireMonkey cross platform samples for Android, IOS, OSX, Windows, and Linux! Следовательно, я бы посоветовал начать с применения Ani.TAnimator.AnimateFloat вместо AnimateFloatWait, и убедиться, что объект, который вы пытаетесь анимировать, видим на экране во время начала анимации. Если проблема продолжает сохраняться, вам может потребоваться более детальное исследование спецификаций Android и как он обрабатывает анимацию в Delphi.
    1 балл
  28. В контексте Delphi, вы можете использовать Indy компоненты для этого. TIdStack имеет метод ResolveHost() который может быть использован для разрешения имени хоста. var GStack: TIdStack; begin GStack := TIdStack.Create; try ShowMessage(GStack.ResolveHost('localhost', Id_IPv4).ToString); finally GStack.Free; end; end; Учтите, что разрешение имени хоста в IP-адрес не гарантирует, что хост будет доступен для подключения. Если имя хоста не может быть разрешено, будет вызвано исключение UnknownHostException. Также обратите внимание, что операции с сетью, такие как разрешение имени хоста, могут быть медленными, и рекомендуется выполнять их в фоновом потоке, чтобы не блокировать главный поток приложения. По поводу вашей проблемы с локальной сетью - возможно, имя хоста, которое вы пытаетесь разрешить, не зарегистрировано в локальном DNS. В этом случае, вы можете попробовать использовать полное доменное имя (FQDN) хоста, или использовать прямой IP-адрес, если он известен. Если метод разрешения имен не работает для локальной сети, вероятно, проблема связана с настройками DNS в вашей локальной сети. Имена хостов в локальной сети обычно разрешаются с помощью механизма DNS, поэтому если ваш DNS сервер или файлы hosts не содержат соответствующих записей для имени хоста, который вы пытаетесь разрешить, то метод разрешения имен вернет ошибку. Если вы контролируете настройки DNS в вашей локальной сети, вы можете добавить соответствующие записи для всех хостов, которые вы хотите разрешать. Кроме того, некоторые системы поддерживают механизмы обнаружения служб на локальной сети, такие как mDNS (Multicast DNS), который используется в протоколе Zeroconf/Bonjour. Если ваши устройства и приложения поддерживают mDNS, вы можете использовать имена хостов с суффиксом .local для разрешения имён в локальной сети. Пожалуйста, учтите, что разрешение имён хостов в IP-адреса - это сложная область, которая зависит от многих факторов, включая конфигурацию вашей сети, настройки DNS, поддержку протоколов обнаружения служб и т.д. Если вы столкнулись с проблемами, вам может потребоваться обратиться к системному администратору или к специалисту по сетям для получения помощи.
    1 балл
  29. Hevard

    Вышла Delphi 11 Community Edition

    которые не ставятся вместе, в случае Community Edition. Лицензия даётся на один продукт.
    1 балл
  30. Hevard

    Вышла Delphi 11 Community Edition

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

    Вышла Delphi 11 Community Edition

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

    Вышла Delphi 11 Community Edition

    Смех-смехом, но Вы единственный в чате с таким траблом.... Моё скромное... не надо было устанавливать ненужные "продукты", потом прописывать пути с этих продуктов... и т.п. (господин "@Krapotkin" даже устал от безумия, которое Вы творите) 1. удаляем 10.4 через Удаление программ 2. От имени Админа запускаем установку. 3. Выбираем х64, Android 4. В Additional выбираем Andriod (меня даже не спросили - куда) накатываем ADB Пишем, компилируем
    1 балл
  33. Hevard

    Вышла Delphi 11 Community Edition

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

    Вышла Delphi 11 Community Edition

    Программирование на Delphi. Часть 1. Установка Delphi Community Edition (бесплатная версия) - Школа программирования ProgTips
    1 балл
  35. 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 балл
  36. я предлагаю простую игру вместо всех этих (XXX+YYY*Z/12.4) поставить константы и тогда вся отладка будет простой и красивой 50,50 - 100,120 - вырезать 0,0 - 50,70 - вклеить и посмотреть, соответствует ли вашим ожиданиям картинка на 99% ваша ошибка в расчетах координат. что ваши переменные обозначают и чему равны, кроме вас, никто не ведает писать программу, чтобы отладить ваш код, ну какбы совсем лень а свой проект вы не приложили. вот собсно никто и не отвечает
    1 балл
  37. Hevard

    Вышла Delphi 11 Community Edition

    Я обычно "сверху" ставлю UniversalAdbDriverSetup.zip
    1 балл
  38. OnePeople

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

    Ну у вас в настройках sdk API-Level location версии 26, а был наверное 29 и выше вот ошибки и небыло
    1 балл
  39. 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 балл
  40. gonzales

    Push в Delphi11

    Оставлю здесь информацию, как заставить работать пуши при переходе на delphi11. Если Вы заметили, что после перехода на 11 версию у Вас отвалились пуши, система не показывает firebase token, то проблема решается так. 1. Скачиваем JSON с консоли FireBase 2. Открываем его, видим следующий вид 3. Вписываем в Настройках проекта в секцию Services в следующем соответствии: API key - current_key Application id - mobilesdk_app_id Project id - project_id GSM sender id - project_number 4. И не забываем выставить в секцию Entitlement List галочку Receive push notifications. После этого все опять начинает работать.
    1 балл
  41. Используй TNetHTTPClient вместо инди, проблема с ssl уйдет. При использовании инди и указании https в URL например в виндах требуется две дополнительные dll-ки (libeay32.dll / ssleay32.dll), для андроида libcrypto.so / libssl.so и т.д. Поэтому проще перейти на TNetHTTPClient
    1 балл
  42. Dev

    FMX Form

    dnekrasov Спасибо Вам Большое! работает, то что надо
    1 балл
  43. В событии OnResize формы проверять width > height и для каждого из двух вариантов переприсваивать позиции и размеры тех контролов, которые должны меняться.
    1 балл
  44. Ссылка на статью. Автор: Александр Бирюков В статья я максимально подробно попытался описать работу с PHP скриптом для рассылки Push сообщений из любой программы вне зависимости от платформы. Затрагивается вопроса от экспорта скриптов до кода программы: отправка и получение Push, регистрация устройств. Надеюсь кому-нибудь пригодится. Буду рад комментариям, обоснованной критике и доработкам.
    1 балл
  45. ENERGY

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

    Menkos1 Это код для уменьшения размера exe под Windows. Добавляшь в Dpr файл (Project > View Source), выбираешь Release в правой панели, затем Project > Build. Размер еще уменьшиться. Правда потом нужно протестировать программу. На VCL с этими директивами у меня проблем никогда не было, - в смысле каких то багов в программе. На FMX не пробовал (я FMX пока только под моб. девайсы использую)
    1 балл
  46. Ссылка: http://blog.rzaripov.kz/2016/11/0-modernlistview.html Автор: Равиль Зарипов @ZuBy Описание: Знакомство с ModernListView
    1 балл
  47. uses AndroidApi.JNI.Media; procedure MakeSound(ADuration: Integer); var Volume: Integer; StreamType: Integer; ToneType: Integer; ToneGenerator: JToneGenerator; begin Volume := TJToneGenerator.JavaClass.MAX_VOLUME; // задаем громкость StreamType := TJAudioManager.JavaClass.STREAM_ALARM; ToneType := TJToneGenerator.JavaClass.TONE_DTMF_0; // тип звука ToneGenerator := TJToneGenerator.JavaClass.init(StreamType, Volume); ToneGenerator.startTone(ToneType, ADuration); end; Типы звука можно посмотреть здесь
    1 балл
  48. Посмотрел на код и решил еще на пару строк сократить, совместил проверку на "пусто" и минус в одном условии procedure TFormMain.Edit1ChangeTracking(Sender: TObject); Var FEdit : TEdit; FFloat : Single; begin If Not (Sender is TEdit) Then // Защитимся от не выспавшегося самого себя Exit; FEdit:=(Sender as TEdit); // Для удобства... FEdit.Text:=FEdit.Text.Replace(' ',''); // Убираем случайные пробелы if (FEdit.Text.IsEmpty) or (FEdit.Text.Equals('-')) then // Если пусто (ничего не введено или все удалено) или только минус, ничего не делаем Exit; FEdit.Text:=FEdit.Text.Replace('.',','); // Заменяйм точку запятой if FEdit.Text.Equals(',') then // Если введен разделитель, добавляем перед ним ноль для красоты (не обязательно) begin FEdit.Text:='0,'; FEdit.CaretPosition:=FEdit.CaretPosition+1; // без этого курсор останется между нулём и запятой end; if TryStrToFloat(FEdit.Text,FFloat) Then // Пробуем преобразовать в число FEdit.TagString:=FEdit.Text // Если удалось, сохраняем в временном хранилище Else FEdit.Text:=FEdit.TagString; // Если не удалось, восстанавливаем из временного хранилища end;
    1 балл
  49. если правильно понял вам нужна это: в FireMonkey и в Android свойстве TEdit добавлена FilterChar и выглядит это так: procedure TForm1.FormCreate(Sender: TObject); begin Edit1.FilterChar:= '0123456789'; end;
    1 балл
  50. Добрый день О том, как получить доступ к любому свойству через 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
×
×
  • Создать...