Активность

Лента обновляется автоматически     

  1. Последний час
  2. Угу, пасиб. Сейчас попробую.
  3. Есть ли аналог TCreateParams ?

    Ну хорошо. Должен одинаково на всех платформах. Но ведь не зря существуют фишки вроде {$IFDEF MSWINDOWS}. Разве нельзя добиться, чтобы это или что-то похожее работало хотя бы только под Windows?
  4. TGrid vs Тач интерфейс

    Да. Во всяком случае так было в той версии которая у меня и которой я занимался. Задержка порядка 50 мс. это мало, чтобы заметить но не 0. Если бы задержки не было вообще, то при любой попытке скрола, менялась бы выделенная ячейка. Вот видео, записал как смог. Это ни как не настраивается, просто после многих проб и ошибок подобрался наиболее оптимальный вариант. Похожий на стандартное поведение. Да, были с этим проблемы, при чем как всегда: "Не знаю, не знаю, у меня всё работает, что у вас за телефон?". Тут надо понимать, что это некие искусственные события которые эмулируют работу с мыши т.е. добавляют свою логику поверх системной, и там в зависимости от модели могут быть разные особенности, лучше обрабатывать жесты. Посмотрите исходники, можно сделать по образу и подобию. А чем собственно не удовлетворяет стандартное поведение? Я так и не понял.
  5. Сегодня
  6. Рисует за пределами канвы

    Добавлять ClipRect при отрисовки в регионе. { clipping } procedure IntersectClipRect(const ARect: TRectF); virtual; abstract; procedure ExcludeClipRect(const ARect: TRectF); virtual; abstract;
  7. Item has been already purchased

    А если товар расходуемый? Купил внутриигровую валюту, расходовал ее полностью, заново надо купить
  8. Вчера
  9. TGrid vs Тач интерфейс

    Эээ... Разве? Я как только прикасаюсь к таблице, ещё палец не убираю, сразу вызывается OnCellClick.Т.е. не важно, после касания я провёл пальцем или сразу отпустил OnCellClick вызывается у меня в любом случае. Есть настройка этого поведения? Я сейчас как раз и обрабатываю Mouse Down/Up, вычисляя радиус между нажатием и отпусканием. Но это имхо не правильно. Поэтому и возник вопрос. P.S. А каким тогда компонентом правильнее сделать список на подобии такого: вывод отличается в зависимости от кучи параметров (например если адрес не влез в строку уменьшаем шрифт). Сейчас я перехватываю DrawColumnCell и рисую что и как мне надо. Самые очевидные для подобной задачи ListBox/ListView не умеют такого, на сколько я понял? Мне нужно что бы под мобильными платформами это всё без затруднений скроллилось и открывалось при клике.
  10. TGrid vs Тач интерфейс

    Да, действительно в случае грида, перемещение пальца не рассматривается как клик по ячейке, а рассматривается как скроллирование. Если прикоснулся пальцем и держал на месте короткое время, или прикоснулся и сразу отпустил не перемещая, то это считается желанием выделить ячейку (начать редактирование), и приводит к событию OnCellClick. Если прикоснулся пальцем и сразу начал двигать, то считается что пользователь захотел переместить рабочую область таблицы (проскроллировать) и это не приводит к выделению ячейки и событию OnCellClick. Это нормальное и корректное поведение: ячейки "не кликаются", когда пользователь просто перетаскивает рабочую область таблицы. Если хотите странного, то обрабатывайте события OnMouseDown, OnTap и т.п. по своему собственному усмотрению на свой страх и риск игнорируя всю остальную логику работы таблицы.
  11. Разница есть. И она не только в вызове Synchronize, но и Queue. Указание потока в качестве источника метода синхронизации позволяет вам впоследствии сделать TThread.RemoveQueuedEvents(myThread) перед его удалением. Вызов RemoveQueuedEvents необходим, если в синхронизируемых методах может идти обращение к полям и методам уничтожаемого потока. Потому что с удалением потока то, что подлежало синхронизации, никуда не пропадет, а раз поток уже не существует - у вас вылезет AV на ровном месте. Или же ваш код испортит чью-то память, что еще труднее отловить.
  12. Item has been already purchased

    Не очень понимаю, что не так. Если товар уже был один раз куплен, то считается, что он есть у клиента. Поэтому при попытке повторно купить то, что уже было куплено порождает данное сообщение.
  13. Есть ли аналог TCreateParams ?

    Нет, аналога нет. Так как кода должен одинаково работать на всех платформах, а CreateParams сугубо виндовая вещь.
  14. http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TThread.Synchronize Судя по документации, если передать первым параметром поток, то в дальнейшем в основном потоке можно будет определить какой из дополнительных потоков вызвал метод. Если это не требуется, то можно ничего не передавать.
  15. Здравствуйте, объясните пожалуйста разницу между вызовами TThread.Synchronize(nil, procedure begin {код работающий с FMX компонентами} end); TThread.Synchronize(TThread.Current, procedure begin {код работающий с FMX компонентами} end); Это одно и тоже или есть разница какая-то важная?
  16. Есть ли аналог TCreateParams ?

    В своем VCL-проекте я использовал оригинальный способ застраховаться от повторного запуска приложения. Обычно это делают через Mutex. Но умные люди на experts-exchange.com много лет назад посоветовали мне следующее: // в главном окне: protected procedure CreateParams(var Params: TCreateParams); override; procedure TMyApp.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WinClassName:='MyAPP String ID'; end; // В файле .dpr: var AWnd, A1Wnd: HWND; AWnd:=FindWindow('MyApp String ID',nil); if IsWindow(AWnd) then begin A1Wnd := GetWindow(AWnd, GW_OWNER); if IsWindow(A1Wnd) then AWnd := A1Wnd; ShowWindow(AWnd, SW_RESTORE); SetForegroundWindow(AWnd); end else begin Application.Initialize; ....... end Способ хорош тем, что он не просто блокирует повторный запуск, а выводит уже запущенное приложение на передний план, тычет юзера в него носом. Но при переходе на FireMonkey возникла закавыка: компилятору не нравится TCreateParams. Говорит: undeclared identifier. Чем бы его заменить?
  17. Последняя неделя
  18. TGrid vs Тач интерфейс

    Как можно отследить, что пользователь кликнул на ячейку грида (режим только чтение, при клике программа должна выполнить действие в зависимости от выбранной ячейки)? Теоретически этим должны заниматься OnCellClick/OnClick. Но по факту они ловят событие нажатия на грид, не рассматривая случай скролла. Т.е. мимо. OnSelChanged - почти оно, кроме случая когда пользователь ткнул на выделенную ячейку. OnTap - вызывается до изменения выделенности (очередной баг?). Соответственно тоже мимо. Есть ли корректный способ отследить нажатие пользователем на ячейку TGrid?
  19. MacOS High Sierra (10.13) OpenSSL

    Решения данной проблемы так и нет? Так чтобы половина кода не переделывать? Аппликуха нормально работала на всех Маках пока не вышла High Sierra Я даже готов отказаться от https, в случае если юзер будет запускать мое приложение на High Sierra. Как внутри отловить условие ненайденной SSL библиотеки и отказаться от ее использования в данном случае?
  20. AutoSize работает иначе под Tokyo!

    Неочевидного хватает. Радует, что пока так или иначе это побеждается. VCL со своей вылизанностью и близко не подпускает FMX )) .. хотя ряд вещей "искоропки" радует
  21. Item has been already purchased

    Кто сталкивался с таким сообщением при работе с компонентом TInAppPurchase? Настроил в консоли Google Play "Контент для продажи", добавил товар. Если в первый раз купить этот товар, то покупается. При повторной покупке после InAppPurchase1.PurchaseProduct выскакивает "Item has been already purchased". Как исправить? Заранее благодарен
  22. ENetHTTPClientException

    Спасибо, а как тогда удалять lSendData, чтобы память не расходовать?
  23. ENetHTTPClientException

    Мне кажется вся проблема в том, что идет удаление объекты до окончания операций. Учитывайте, что процесс выполняется асинхронно: begin //тут лишь создается поток, в котором выполняется запрос lHttp.Post(Url, lSendData); Result := ''; end; // Result := lResponse.StatusCode = 200; finally //вот здесь ошибка. Нельзя удалять объекты, если действие еще не завершилось. Вы можете узнать об завершении прцоессса в событии OnRequestCompleted lSendData.Free; lHttp.Free; end;
  24. AutoSize работает иначе под Tokyo!

    Ну вообще для меня вот неочевидно, что размер невидимого компонента должен быть определен. если у меня три панели и две из них невидимы, то это сильно влияет на размеры и положение третьей
  25. AutoSize работает иначе под Tokyo!

    С таким сталкивался. Но в более сложных вариациях.. там даже свойство (объект внутри компонента) может быть не создан до первой отрисовки. Приходилось комбинации всяких мероприятий (в том числе Application.ProcessMessage) делать без обращением к компонентам.
  26. AutoSize работает иначе под Tokyo!

    FREEFAR, спасибо, ApplyStyleLookup прекрасно помог! (пробовал здесь поаккуратнее переписать ваш код, но скрипту почему-то не понравилось)
  27. AutoSize работает иначе под Tokyo!

    для фрейма пробовал procedure PreloadContent(const Control: TControl); var I: Integer; begin if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; for I := 0 to Control.ControlsCount - 1 do PreloadContent(Control.Controls); end; Или каждый лейбл пересчитать кодом по ширине/высоте до отображения - есть процедурки соответствующие.
  28. AutoSize работает иначе под Tokyo!

    > а этап выравнивания это когда? У меня так: есть некий фрейм, до поры невидимый. По определенному событию (щелчок по кнопке) все TLabel на фрейме заполняются текстом и свойство Visible фрейма переводится в True. В Tokyo получается так, что пока фрейм невидим, размеры TLabel не меняются, невзирая на AutoSize. Какой здесь может быть другой момент для расчетов?
  29. AutoSize работает иначе под Tokyo!

    а этап выравнивания это когда? может, найти другой момент для расчетов? типа onresize
  1. Загрузить ещё активность