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

Maximus

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

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

  • Посещение

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

    9

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

  1. Like
    Maximus получил реакцию от Rusland в Как подавить экранный курсор crSQLWait ?   
    На самом деле это поведение можно достаточно просто отключить
    var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...  
  2. Like
    Maximus получил реакцию от Евгений Корепов в Как подавить экранный курсор crSQLWait ?   
    На самом деле это поведение можно достаточно просто отключить
    var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...  
  3. Like
    Maximus получил реакцию от Равиль Зарипов (ZuBy) в Как подавить экранный курсор crSQLWait ?   
    На самом деле это поведение можно достаточно просто отключить
    var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...  
  4. Like
    Maximus отреагировална enatechno в Цифровая подпись   
    Если нужно просто запустить программу, нажмите на "Подробнее", появится кнопка для запуска.

    инфа по цифровой подписи:
    Code Signing сертификаты или сертификаты разработчика. Виды, как выбрать
    Code signing для Open Source от Certum
    Code Signing в Windows, просто и недорого
    Где приобрести сертификат : KSoftware, Comodo, Symantec ... (ссылки есть в статьях)
    Как подписывать
  5. Like
    Maximus получил реакцию от Alex7wrt в Параллельные вычисления, System.Threading   
    Вкратце вот здесь можно почитать http://proghouse.ru/programming/36-delphi-xe7-ppl
    Например, если таск организован как бесконечный цикл, то после завершения каждого таска, в главном потоке увеличивать счётчик. Как только он станет равным количеству запущенных, можно будет обновлять информацию на экране и делать повторный запуск. Разумеется доступ к главному потоку должен быть синхронизирован. А если в таске конечная последовательность действий, то можно просто проверять статусы всех тасков.
    Логично. WaitForAll приостанавливает поток в котором был вызван до тех пор, пока не будут завершены все таски.
  6. Like
    Maximus отреагировална Mars M в Стрелковый тир (игра)   
    Описание того что нужно как то расплывчато, но вот примерно так можно сделать.
    Всего один TImage который используется для отрисовки битмапов.
    Видео
     и проект 
     
    Tire.rar
  7. Like
    Maximus отреагировална dnekrasov в Стрелковый тир (игра)   
    Если игра под Windows, то самый простой выход (по моему мнению) - работа с регионами. Ведь каждый объект это по сути дела какой-то замкнутый полигон, а функции CreatePolygonRgn и PtInRegion еще никто не отменял. А вообще функций для работы с регионами немало, так что почитайте о них на MSDN. 
    Если не хотите использовать WinAPI-шные функции - работайте с полигонами. Мне когда-то очень помогла библиотека AlgLib - из нее можно вытянуть много полезных функций, чтобы самому не реализовывать алгоритмы.
  8. Like
    Maximus отреагировална Сергей Сергеев в XE10.2 Tokyo есть запись вебинара от 28.03.2017?   
    Поставил Токио для проверки, такого я не ожидал, скажу честно. Проект, который достаточно безболезненно двигался с Сиетла в Берлин, и количество глюков уменьшалось, просто "умер" в Токио. в Андроид 4.4.2 просто не стартует после splash экрана, до точки останова на первой же команде не доходит, segmentation fault. В Андр 5.1 , 6.0 хоть запускается. Опять пропадают картинки с кнопок ( допилили). Форма с анимацией, пока идёт соединение в потоке, не анимирует. Шрифт на этой форме искажен, с зелёной обводкой. Форма не закрывается после установки соединения. Сказать что я разочарован, не сказать ничего.
  9. Like
    Maximus отреагировална fsdb в Как работать с Arduino по bluetooth?   
    вопрос закрыт. все получилось. с ардуино получаю и отправляю данные
    ничего такого  особо интересного - я делаю экструдер
     
  10. Like
    Maximus получил реакцию от Winexcel в DealLock или что сделать чтобы его получить   
    Во-первых ни в коем случае нельзя обращаться к визуальным компонентам напрямую без синхронизации, да и вообще к любым разделяемым ресурсам. Во-вторых deadlock в FMX ничем не отличается от deadlock на VCL или на WinAPI, почитать можно здесь http://forum.vingrad.ru/topic-60076.html
    Конкретно в приведённом примере достаточно обернуть изменение метки в Synchronize
    TThread.Synchronize(nil, procedure begin Form4.Label1.Text:=i.ToString; end); и после запуска потока вызывать MyThread.WaitFor; - получите deadlock.
  11. Like
    Maximus отреагировална Евгений Корепов в передача сообщений по локальной сети   
    Может вам не писать тогда свой мессенджер а использовать что то готовое? Я в свей конторе использую http://www.commfort.com/ru/
  12. Like
    Maximus получил реакцию от Winexcel в Запретить выходить за пределы родителя   
    Вы же знаете длину и ширину своего "потомка", учитывайте её при проверке и всё.
  13. Like
    Maximus получил реакцию от Rusland в NetHTTPClient передача файла и OnReceiveData   
    В общем, я бы исправил так: добавил локальную переменную
    Abort: Boolean;  
    в TWinHTTPClient.DoExecuteRequest, до цикла передачи данных вызвал бы коллбек с объёмом файла, так же как происходит при загрузке файла на ПК - первый коллбек вызывается с нулевым объёмом переданных данных.
    LRequest.DoReceiveDataProgress(0, DataLength, 0, Abort);  
    В цикл добавил бы проверку на прекращение загрузки
    while (LRequest.FSourceStream.Position < LRequest.FSourceStream.Size) and (not Abort) do  
    В конце цикла вызывал бы коллбек с объёмом файла и количеством переданных байт.
    Первый параметр коллбека - StatusCode получить на данном этапе скорее всего нельзя, или я не понял как, поэтому передаю ноль.
    LRequest.DoReceiveDataProgress(0, DataLength, LRequest.FSourceStream.Position, Abort);  
    Полный текст исправленной функции.
     
  14. Like
    Maximus отреагировална Brovin Yaroslav в [Форум]Последние сообщения - проблемы   
    Починил
  15. Like
    Maximus отреагировална Равиль Зарипов (ZuBy) в [Форум]Последние сообщения - проблемы   
    У Ярослава нету пока времени вернуть обратно, требуется поработать ручками и править шаблон.
    Но он обещал исправить
  16. Like
    Maximus отреагировална Евгений Корепов в DeviceInfo - модуль для получения информации о девайсе   
    Рекомендую при первом запуске генерировать GUID (System.SysUtils.CreateGUID), записывать в файл и использовать его. Привязка к железу это хорошо, но требует дополнительных разрешений, не понятных пользователю. И китайцы рано или поздно выпустят что то такое, где ваш код работать не будет.
  17. Like
    Maximus отреагировална Pavel M в Подбор максимального размера шрифта TLabel   
    Подскажите более быстрый и менее затратный способ
    получить максимально возможный размер шрифта 
    исходя из статических размеров.TLabel
    (с центрованием текста и без переноса строк)
    procedure TfrmMain.MaxFontSize(xLabel: TLabel); var xFntSize: Single; xW, xH: Single; begin xW := 0; xH := 0; xFntSize := 1; xLabel.ResultingTextSettings.Font.Size := xFntSize; while (xLabel.Size.Width > xW) and (xLabel.Size.Height > xH) do begin xLabel.ResultingTextSettings.Font.Size := xFntSize; xFntSize := xFntSize + 1; xLabel.Canvas.Font.Size := xFntSize; xW := xLabel.Canvas.TextWidth(xLabel.Text); xH := xLabel.Canvas.TextHeight(xLabel.Text); end; end;
  18. Like
    Maximus получил реакцию от Menkos1 в Запуск стороннего приложения со своими координатами.   
    Ну да, конкретно с калькулятором такой финт не прокатит, он явно запоминает свою позицию перед закрытием, а затем при запуске её восстановление происходит уже после применения заданных в CreateProcess параметров позиции. А вообще работает, например, если запустить своё же приложение, разумеется если в нём нет установки координат после запуска.
    Можно и MoveWindow или SetWindowPos использовать после запуска, только тогда придётся получить хендл окна.
  19. Like
    Maximus отреагировална Brovin Yaroslav в Описание TfgRatingBar   
    Доработал компонент. Добавлено:
    Поддержка Tint эффекта - TfgRatingBar.TintColor Автоматический размер - TfgRatingBar.AutoSize Режим только отображения - TfgRatingBar.ReadOnly Событие окончательного изменения рейтинга (отжатие пальца от экрана или кнопки мышки) - TfgRatingBar.OnChange Событие в процессе изменения рейтинга - TfgRatingBar.OnChanging

  20. Like
    Maximus отреагировална Brovin Yaroslav в [Статья] Жизненный цикл объектов в Delphi. Часть 2. Android, iOS. Что же использовать Destroy, Free, FreeAndNil или DisposeOf?   
    Ссылка: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_2_android_ios-ru/ Автор: Ярослав Бровин Продолжаем тему жизненного цикла объектов в мире Delphi, но в этой части рассматриваем эту тему в рамках мобильных платформ Android и iOS.
    Delphi вводит новый подход к управлению памятью в мобильных платформах. Появляется автоматический подсчет ссылок, который с одной стороны облегчает код разработчика и должен помочь ему, а с другой стороны раскладывает равномерно грабли на пути освоения новых платформ в мире Delphi.
  21. Like
    Maximus отреагировална AliZairov в CrossVCL Beta XE3-Berlin   
    Hi. New tools for Delphi IDE. Using CrossVcl you focus only on your VCL application and CrossVcl makes it cross-platform.
    This is beta software only for testing purpose. CrossVcl on early stage of development, what are to test in this release:

    * Installation process (CrossVcl creates copy and patches existing on your machine Vcl and Rtl sources, all original sources stay unmodified)
    * Upgrading simple or new Vcl project to macOS (Right Click on Project in Project Inspector)
    * Compilation and deploying of simple project

    Please do not create bug-report if you can't compile or launch big Vcl projects or any third-party controls at this stage.

    Bug reports and suggestions welcome at:
    https://bitbucket.org/crossvcl/crossvcl/issues

    We help you on:
    http://stackoverflow.com/questions/tagged/crossvcl

    Google+:
    https://plus.google.com/109334532832375082802

    Facebook:
    https://www.facebook.com/crossvcl

    Twitter:
    https://twitter.com/VclCross
    Home
  22. Like
    Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData   
    Да, работает. Мне легче было просто файл поправленный к проекту подложить.
    Кстати, исходник со второго апдейта берлина, а то мало ли.
  23. Like
    Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData   
    В общем, я бы исправил так: добавил локальную переменную
    Abort: Boolean;  
    в TWinHTTPClient.DoExecuteRequest, до цикла передачи данных вызвал бы коллбек с объёмом файла, так же как происходит при загрузке файла на ПК - первый коллбек вызывается с нулевым объёмом переданных данных.
    LRequest.DoReceiveDataProgress(0, DataLength, 0, Abort);  
    В цикл добавил бы проверку на прекращение загрузки
    while (LRequest.FSourceStream.Position < LRequest.FSourceStream.Size) and (not Abort) do  
    В конце цикла вызывал бы коллбек с объёмом файла и количеством переданных байт.
    Первый параметр коллбека - StatusCode получить на данном этапе скорее всего нельзя, или я не понял как, поэтому передаю ноль.
    LRequest.DoReceiveDataProgress(0, DataLength, LRequest.FSourceStream.Position, Abort);  
    Полный текст исправленной функции.
     
  24. Like
    Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData   
    Да вот смотрю на то что они понаписали и думаю, то ли они вообще не предусмотрели вызов этого коллбека при отдаче файла, то ли забыли...
    Вот эта функция вызывается вне зависимости от того куда мы загружаем файл: к себе или на сервер.
    Разница начинается на этой сроке
    LExecResult := DoExecuteRequest(LRequest, LResponse, AContentStream); При загрузке на ПК эта функция
    не входит в блок кода, помеченный // Send data. TWinHTTPClient.DoExecuteRequest выполняется полностью и продолжается выполнение процедуры THTTPClient.ExecuteHTTPInternal, в которой выполнение доходит до строки
    if not SameText(LRequest.FMethodString, sHTTPMethodHead) then LResponse.DoReadData(LResponse.FStream); откуда вызывается функция
    где и начинается загрузка файла на ПК. Отсюда уже и происходит вызов нашего коллбека в цикле, пока файл не загрузится.
    FRequestLink.DoReceiveDataProgress(LStatusCode, LExpected, LReaded, Abort);  
    С передачей на сервер всё обстоит не так. После того как мы попали в функции TWinHTTPClient.DoExecuteRequest в блок кода, помеченный // Send data, мы там и остаёмся в цикле, пока файл не будет загружен, там разумеется нет никакого вызова коллбека, и только после того как файл будет загружен и мы выйдем из TWinHTTPClient.DoExecuteRequest, то так же попадаем в TWinHTTPResponse.DoReadData и там вызывается FRequestLink.DoReceiveDataProgress(LStatusCode, LExpected, LReaded, Abort); который перед циклом и который вызывается в итоге после окончания загрузки файла на сервер. Дальше мы входим в цикл, но он досрочно завершается вместе с процедурой на строке
    if LSize = 0 then Break; Самое забавное, что в цикле при передаче на сервер, даже флага Abort нет, значит прервать никак передачу нельзя, ну разве что объект уничтожать прямо во время работы.
  25. Like
    Maximus получил реакцию от Rusland в Как заблокировать антиалиасинг?   
×
×
  • Создать...