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

Brovin Yaroslav

Администраторы
  • Постов

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

  • Посещение

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

    390

Весь контент Brovin Yaroslav

  1. Вы, по-видимому, так и не поняли, что к чему. Ради вас, я потрачу свое время на написание ответов на все ваши претензии. Но только один раз. Перед тем, как я отвечу. Я хочу сделать небольшое введение фактов, чтобы вам было проще понять картинку в вашей голове: Цели форума: Создать полезный сообществу ресурс для решения вопросов/проблем разработки с использованием FireMonkey"Создать удобную структуру для быстрого поиска ответов и получения полезной информации,Избежать лишней болтовни и выяснения отношений вместо смотреть пункт 1, что очень часто свойственно другим форумам.По возможности помочь пользователям решить их задачи и предоставить актуальную информацию так сказать из первых уст.Поддерживать хорошие нормы поведения и профессиональной этики среди всех пользователей сайта для создания здорового взрослого сообщества.Привлечь разработчиков, которые будут обогащаться знаниями на форуме, делиться своими решениями и помогать другим.Форум - это не место обсуждения политики компании и продукта, а смотреть предыдущие пункты.Вам важно это знатьФорум - моя личная инициатива, о которой американскому руководству компании ничего не сказано.Я владелец этого форума и домена. И я устанавливаю правила приличия, нормы поведения и правила публикации информации на этом форуме.Компания Embarcadero не может повлиять правилами на мой ресурс. Именно по этому я создал отдельный русскоязычный форум, вместо http://forums.embarcadero.com/Я занимаюсь форумом в свое личное свободное время.Я плачу из своего кармана за хостинг и веду техническую поддержку.Я бесплатно его сделал своими усилиями.Я бесплатно помогаю людям решить их задачи.Я отвечаю только тогда, когда:У меня есть время (смотреть пункт 4)Когда у меня есть полноценный, полный, уверенный (не догадки) ответ, полностью раскрывающий задачу и подробно описывающий пути решения.Я не отвечаю на те вещи, которые требуют от меня больших исследований при наличии других вопросов.Если я не знаю быстрого ответа, я спрашиваю у своих коллег, которые занимались разработкой того или иного компонента.Я удаляю с форума:Весь флуд - ответы не несущие смысловой нагрузки по заданному вопросу. Ложные наводки на решениеПотерявшие актуальность со временем комментарии и темыПробы найти решения.Описание ошибок, если для них не существует workaround. (Иногда я делаю исключение из правил на публикацию ошибок и даю обходные решения багов)Темы, где человек сам допустил ошибку и сам нашел её ошибку и пользы от этого вопроса для других нету.На вопрос об уточнение деталей не было получено ответа в течении долгого времени от пользователя для того, чтобы можно было дать ответ.Вопросы, на который было дано обходное решение и оно уже не актуально в новой версии продукта.Я уважаю проявление правил приличия и уважения пользователями при ответах и задании вопросов и ценю это. Я не распространяю дистрибутивы лицензионных продуктов, ключи и их части (это к вопросу личных сообщений выслать утилиты и ключи).P.S. Вам следует внимательно обратить свое внимание на 11 пункт. Если вы хотите, чтобы мы с вами продолжили общаться.А теперь по деталям: Полагаю ответ уже дан. Я просто оставлю эти скриншоты тут, а каждый сам сделает свои выводы. 1.1 Об удаляемых комментариев. Это те сообщения, которые были удалены за последние 8 месяцев. Про ценность ваших удаленных ответов я промолчу. 1.2 Об удаляемых темах Ниже скриншот, удаленных за год тем с пояснением причины удаления и несколько скриншотов, удаленных тем: Я поясню, что я разработчик компании Embarcadero, а именно FireMonkey. Я отвечаю за разработку определенных компонентов, в основном это все работа с нативными вещами + разработку мобильных сервисов. Мне платят за эту работу. Я не продавец, хотя я в курсе годовой статистики по продажам. Мне совершенно все равно, кто и сколько покупает лицензий. Я делаю свою любимую работу. Форум - одно из моих хобби. Меня приглашают в Москву на Launch и я принимаю решение, поеду я или нет. Обычно я соглашаюсь, так как это мне интересно. Но вы почему-то уверенно считаете, что я "втюхиваю" вам что-то. Опять плохо понимаете. Воспроизводится, укажите детали. Иногда у меня складывается впечатление, что вы инсайдер в компании. И знаете больше, сидя дома, чем знают в компании во всем мире. Однако, продукт развивается, совершенствуется и продажи растут. Да и не понятно тогда, зачем вы при таком "очевидном" раскладе тут делаете. У каждого человека есть выбор, я вас не держу на форуме. Вы свободны в выборе и можете пользоваться другими ресурсами, если правила этого вас не устраивают.Если вы продолжите изливать свою желчь на форуме, я буду вынужден сделать вам предупреждение. Хотя я думаю, у всех бывает плохое настроение. У меня тоже.
  2. Инструкция есть тут: http://blogs.embarcadero.com/ao/2013/05/24/39472 и тут https://www.danielwolf.eu/blog/2015/1458-delphi-mobile-und-ios-8-1-3
  3. Первый способ Сохранить можно через библиотеку AssetsLibrary uses iOSapi.AssetsLibrary, FMX.Helpers.iOS; procedure SaveToAlbum(const ASourceBitmap: TBitmap); var AssetsLibrary: ALAssetsLibrary; Image: UIImage; begin Image := BitmapToUIImage(ASourceBitmap); AssetsLibrary := TALAssetsLibrary.Create; try AssetsLibrary.writeImageToSavedPhotosAlbum(Image.CGImage, Image.imageOrientation, PerformResultOfSavingPhoto); finally AssetsLibrary.release; end; end; Второй способ Через UIImageWriteToSavedPhotosAlbum: В декларации этой функции в делфи допущена ошибка, поэтому ниже привожу исправленную декларацию: uses iOSapi.UIKit, MacApi.ObjectiveC, Macapi.ObjCRuntime; // ===== External functions ===== const libUIKit = '/System/Library/Frameworks/UIKit.framework/UIKit'; procedure UIImageWriteToSavedPhotosAlbum(image: Pointer; completionTarget: Pointer; completionSelector: SEL; contextInfo: Pointer); cdecl; external libUIKit name _PU + 'UIImageWriteToSavedPhotosAlbum'; procedure SavePhotoToAlbum(const ABitmap: TBitmap); var AssetsLibrary: ALAssetsLibrary; Image: UIImage; begin Image := BitmapToUIImage(ABitmap); UIImageWriteToSavedPhotosAlbum((Image as ILocalObject).GetObjectID, nil, nil, nil); end;
  4. Поправочка, сайт не мой, а Андрея Ефимова. Но это так же не будет работать, так как это все FM контролы. Они будут позади браузера.
  5. К сожалению этот вопрос до сих пор не имеет однозначного ответа. А вопрос такой, какой индекс итема должен вернуться? Индекс в отфильтрованном списке или индекс в исходном? В текущей реализации возвращается индекс в отфильтрованном списке. Поэтому если добавляемый итем не попадает под условие фильтра, то функция возвращает -1. А если попадет, то она вернет индекс в отфильтрованном списке.
  6. Ну так, проблема решилась или нет?
  7. Прочитайте, пожалуйста, эти темы. И я думаю вы сами сможете ответить на свой вопрос: Как правильно удалять контролы в RunTime? Пользоваться Free или DisposeOf?
  8. Apple изменили формат файлов info.plist и entitlements с версии 8.1.3, что приводит к невозможности автоматически запустить приложение на iOS без внесения правок в эти файлы. Поэтому не обновляйте ваши устройства пока до последней версии iOS 8.1.3. Будет выпущен специальный фикс для XE7. Если вы уже обновили устройства до iOS 8.1.3, то для запуска требуется внести изменения в файлы info.plist и entitlements. Инструкция по запуску приложений на iOS 8.1.3. или другая на немецком
  9. Добрый день, Пустая вкладка удаляется через: TabControl1.Delete(TabIndex); Попробовал уничтожить пустую вкладку и вкладку с кнопкой. Все отработало на андроиде без ошибок. Проверьте, нету ли у вас ссылок на внутренние компоненты вкладки. На всякий случай стоит ознакомиться с ARC (Как правильно удалять контролы в RunTime?), так как он на 99% является причиной не возможности удалить вкладку на мобильных платформах.
  10. Посмотреть, есть ли в вашем пакете приложения ваше приложение, а именно файл с расширением ".so". Судя по коду, при старте активити не может найти по сути нативную реализацию вашего приложения и выбрасывает эту ошибку. Так же посмотреть в Project->Deployment и убедиться, что в списке стоит галка напротив файла lib<Имя вашего приложения>.so
  11. Добрый день, Пока ни как, так как нету поддержки микса нативных контролов и наших. Но стоит немного подождать... и такая поддержка может появиться. Как workaround, который предлагают, это использовать скриншот браузера, и в момент открытия TMultiView, заменять браузер на скриншот. Но такой подход по мне, не очень хороший. Но зато позволяет частично решить эту проблему в срочном порядке.
  12. Какая платформа? Если iOS или Android. Вы держите ссылки на FContainer и FViewport в форме, var Form15: TForm15; FViewport:TViewport3D; FContainer:TLayer3D; что не дает уничтожить FViewport, так как он в чилдах держит ссылку на FContainer. procedure TForm15.SwitchTo2D; var LImg: TImage; begin TRY // FViewport.DisposeOf; FViewport.Parent:= nil; FViewport.Free; // Не будет удален FViewport, так как RefCount = 1 FContainer.Parent:= nil; FContainer.Free; // Не будет удален FContainer, так как RefCount = 2 FINALLY END; ControlRoot.Visible := True; end;
  13. Добрый день, Нужно прикрепить пример вашего проекта.
  14. Добрый день, Нужен полный код описания хелпер класса TSearchVSPHelper. Можно только декларацию класса и метода GetItems
  15. Добрый день: Пропадающие линии Надо уменьшить область, куда отрисовывается ячейка: TextRect.Left := TextRect.Left + 1; TextRect.Bottom := TextRect.Bottom - 1; TextRect.Inflate(-HorzTextMargin, -VertTextMargin); Canvas.FillRect(TextRect, 0, 0, AllCorners, 1); Выделение Выделение нужно отрисовать самостоятельно, основываясь на значении аргумента State: const State: TGridDrawStates Который содержит указание выделена ли строка, выделена ячейка и в фокусе ячейка или нет. Используйте этот параметр для отрисовки выделения так, как вам нужно.
  16. Вот эту тему читали? [Отклонение] Фильтрация текста не корректно работает с регистром Решение должно помочь.
  17. Чтобы всегда работать со строками, как с 0-основными на всех платформах, достаточно использовать TStringHelper. Для этого нужно: Подключить юнит: System.SysUtils. Использовать хелпер: Chars function TForm1.HexToStr2(const Source: string): string; var i, idx: Cardinal; StrAsBytes: TBytes; begin SetLength(StrAsBytes, Length(source) div 2); i := 0; idx := 0; while i <= length(source) - 1 do begin StrAsBytes[idx] := StrToInt('$' + Source.Chars[i] + Source.Chars[i + 1]); i := i + 2; idx := idx + 1; end; result := TEncoding.ANSI.GetString(StrAsBytes); end;
  18. Вот здесь "Есть ли в fmx класс TImageList?" рассказывается, как эмулировать в FMX работу отсутствующего TImageList. До версии XE7 включительно, пока только так.
  19. У этого события TGrid.OnDrawColumnCell есть параметр const State: TGridDrawStates Который содержит указание выделена ли строка, выделена ячейка и в фокусе ячейка или нет. Используйте этот параметр для отрисовки выделения так, как вам нужно.
  20. Добрый день, Нужно прочитать: Как правильно удалять контролы в RunTime? Пользоваться Free или DisposeOf?
×
×
  • Создать...