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

kami

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

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

  • Посещение

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

    41

Ответы сообщества

  1. Пост kami - сообщение в ancestor "object" not found был отмечен как ответ   
    возможно, помимо master-view вы создали view под Андроид? А удалять пытаетесь с главного.
  2. Пост kami - сообщение в Неадекватно отображается текст в label был отмечен как ответ   
    Это бага, которая появилась в Токио. В какой из подверсий - не помню.
    Описание бага: всё, что расположено на скроллбоксах и их наследниках (например - листбокс) может произвольно поменять стиль.
    Видео:  https://www.youtube.com/watch?v=HSQI2qDghRQ
    Issue: https://quality.embarcadero.com/browse/RSP-19297
  3. Пост kami - сообщение в Защита FMX был отмечен как ответ   
    Давайте сперва уточним, что именно вы подразумеваете под взломом?
    Потому что если рассматривать взлом, как его понимаю я - то всякие "проверки сертификатов" будут убраны в ходе этого взлома. Поскольку являются неотъемлимой частью хака приложения. Взлом и дальнейшее распространение на мой взгляд - это "сделать так, чтобы программа всегда считала себя лицензионной и работала как ни в чем ни бывало".
  4. Пост kami - сообщение в Undeclared identifier: 'GetSharedDocumentsPath' был отмечен как ответ   
    System.IOUtils в uses поставить после модуля, в котором описан компонент TPath (делфи не под рукой, не скажу в каком конкретно).
  5. Пост kami - сообщение в Поиск клиентов в сети был отмечен как ответ   
    нет. Отправляете как broadcast, т.е. на адрес 255.255.255.255 - пакет улетит всем, до кого в принципе сможет дойти в пределах локалки. С Indy - не подскажу, в Win с ними не работаю, а на мобильных платформах мне хватает http.
  6. Пост kami - сообщение в Развертка на Mac был отмечен как ответ   
    Если XCode 8 (что, собственно, и должно было произойти при обновлении) то работать не будет. Для 8 хкода нужен 10.1 берлин
  7. Пост kami - сообщение в CreateCellControl в Grid (Berlin) был отмечен как ответ   
    Ну, для моих нужд хватило следующего:
     
    type TStringColumn = class(FMX.Grid.TStringColumn) protected // function CreateCellControl: TStyledControl; override; // это было в Seattle public function RefreshEditor(const InplaceEdit: TFmxObject; const Value: TValue): Boolean; override; end; function TStringColumn.RefreshEditor(const InplaceEdit: TFmxObject; const Value: TValue): Boolean; var ivk: IVirtualKeyboardControl; begin // здесь уже создан штатный контрол-редактор из числа имеющихся в Grid.Style.pas if InplaceEdit is TStyledControl then begin TStyledControl(InplaceEdit).StyleLookup := 'editVariableHeightStyle'; // свой стиль if InplaceEdit.GetInterface(IVirtualKeyboardControl, ivk) then begin ivk.ReturnKeyType := TReturnKeyType.Done; // клавиатурные настройки ivk.KeyboardType := TVirtualKeyboardType.NumberPad; end; end; Result:=inherited RefreshEditor(InplaceEdit, Value); // и штатный вызов. end; Будет время (ох, вряд ли...) - попробую разобраться со всем остальным.
  8. Пост kami - сообщение в Многодокументое приложение был отмечен как ответ   
    Фреймы с разделением логики работы между ними спасут отца русской демократии.
  9. Пост kami - сообщение в Автоматическая расстановка End-ов был отмечен как ответ   
    По моему опыту: автодополнение кода перестает работать при
    Длинном методе (вложенные процедуры/функции не в счет) Если между методами (не внутри, а именно между) есть комментарии Если большая вложенность всяких циклов, if и т.п. Если встречаются конструкции, которые форматтер (Ctrl + D) обрабатывает неправильно (некорректно просчитывает отступы). Помогает явная вставка Begin/end или, как было пару раз с array of record x:type1; y:type2; end - вынести объявление типа отдельно. Иногда (но очень редко) с директивами условной компиляции. Когда Луна входит в созвездие Песца. Если случился пункт 6 - помогает закрыть вкладку модуля и открыть ее заново. В особо сложных случаях - перезапустить IDE.
     
  10. Пост kami - сообщение в Динамическое создание/уничтожение был отмечен как ответ   
    Нужно использовать myObject.Release, а не Free.
    Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.
    Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
  11. Пост kami - сообщение в Изменить тип клавиатуры был отмечен как ответ   
    Создавайте свой редактор в OnCreateCustomEditor и выставляйте ему нужный тип клавиатуры.
  12. Пост kami - сообщение в No mapping for the Unicode character exists in the target multi-byte code page был отмечен как ответ   
    Поклонники синапса, извините. Roma77751 - у вас ничего не получится с синапсом. Если честно, я не понимаю, как он работает с любой Delphi версии больше 2007.
    Возможно, в полной библиотеке все нормально и это недостатки "портированной" для мобильных платформ.
     
    Вкратце - полный швах в модуле synabyte, класс (вернее record) TSynaBytes. Несмотря на явно используемую директиву {$IFDEF UNICODE}, считается что 1 символ = 1 байт. Отсюда все проблемы
     
    Roma77751, уходите с этой библиотеки. Не будет она работать на мобильных платформах.
  13. Пост kami - сообщение в Как узнать, в какой кодировке файл? был отмечен как ответ   
    В общем случае - никак. Если файл не содержит преамбулу (1-3 байта) - идентификатор кодировки, то предстоит только догадываться. Если содержит - посмотрите исходники TStringList или TFile.AppendAllText.
    Вкратце - для автоматического "угадывания" используемой кодировки задействуется TEncoding.GetBufferEncoding
  14. Пост kami - сообщение в vkbdhelper - поднятие компонентов над клавиатурой был отмечен как ответ   
    Update. Исправили недостаток на Android 5. Большое спасибо Rusland за тестирование.
    Итоговый файл прикладываю.
     
    По прежнему не рекомендую использовать этот модуль, если создаваемые в runtime контролы ложатся напрямую на форму.
    Перед написанием претензий, пожалуйста прочитайте known issues в комментарии в начале файла.
     
    vkbdhelper.zip
  15. Пост kami - сообщение в Как объединить два StileBook динамически? был отмечен как ответ   
    В качестве самой очевидной ошибки:
    перед LoadFromStream нужно сделать
    FBinary.Seek(0, soBeginning); или
    FBinary.Position:=0;
  16. Пост kami - сообщение в 3 вопроса про лицензию был отмечен как ответ   
    Сужу по тексту лицензии на XE7, но не думаю, что что-либо сильно поменялось.
    1. Нет. Тестовый период предназначен исключительно для ознакомления, Вы вправе создавать приложения исключительно для собственного использования (п.22)
    2. Нет, если не планируете зарабатывать денег с помощью IDE - не стоит.
    3. Достаточно адекватна, не думаю, что в этом есть что-то плохое. Если приложение не использует сторонние компоненты, отсутствующие у целевого "человека с лицензией" и компилируется без ошибок - почему бы и нет.
  17. Пост kami - сообщение в Аналог Post в FMX android был отмечен как ответ   
    TThread.Queue(nil, procedure begin my_code end); ?
  18. Пост kami - сообщение в [TIdTCPClient] Почему TIdTCPClient зависает при общении с по IP в глобальной сети? был отмечен как ответ   
    Это зависит не от индейцев и не от FireMonkey, а является общей проблемой сетевого обмена
     
    Ваш сервер спрятан за NAT, т.е. нет прямого соответствия между внешним IP и локальным. Поэтому клиент и не может достучаться до него "извне".
    Возможные варианты решения:
    сделать серверу белый IP (есть такая услуга у провайдеров, в т.ч. и мобильных) Сделать промежуточный сервер, который будет сидеть на белом IP, а исходный сервер и клиент будут подключаться к этому, таким образом они оба будут клиентами. Если доступен роутер, через который сервер "смотрит" в интернет - можно пробросить на этом роутере порт извне напрямую на локальный ip сервера. Да, в качестве примеров работы "за NAT" вы можете привести Skype, TeamViewer, Ammyy и т.п. Но они все используют метод 2.
    Еще есть вариант (кажется, не помню точно, давно этим не занимался) - DynDNS.
  19. Пост kami - сообщение в A component named ComponentName already exists. был отмечен как ответ   
    вместо всего вышеперечисленного при удалении делать
    MainMenu.Release; MainMenu:=nil; .Free на мобильных платформах не делает ничего.
  20. Пост kami - сообщение в Parallel Library на одно процессорных компах был отмечен как ответ   
    не будет*. Планировщик потоков - штука очень умная.
    *При условии, что Ваш код не глючит сам по себе.
  21. Пост kami - сообщение в Непрерывное обновление холста у формы был отмечен как ответ   
    То же событие есть и у FMX.Application, тут ничего не поменялось.
    For example:
    procedure TMyForm.OnCreate(...)   Application.OnIdle:=myOnApplicationIdle;
  22. Пост kami - сообщение в TServerSocket TClientSocket в FireMonkey был отмечен как ответ   
    Так посмотрите в исходниках Indy - вполне возможно, разновидность метода Write, пересылающий Stream, самостоятельно добавляет длину потока.
  23. Пост kami - сообщение в Как скрыть MultiView на определенном табе или форме? был отмечен как ответ   
    Ну, в качестве костыльного решения могу предложить менять MultiView.DrawerOptions.TouchAreaSize на 0.
    Это должно убрать появление MultiView при слайде пальцем от левого края экрана. А при активации другой закладки возвращать значение по умолчанию.
×
×
  • Создать...