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

brunnengi

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

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

  • Посещение

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

    21

Сообщения, опубликованные brunnengi

  1.  

    Я абсолютно согласен с Ярославом на счет "основы работы с вещественными числами", просто хочу добавить, что тоже сталкивался с такими ситуациями, но не считаю их за проблему и решал простыми условиями типа

    if Trunc(Height) = 80 then AnimationFloat('Height', 150);
    if Trunc(Height) = 150 then AnimationFloat('Height', 80);

    Только вот писать их друг за другом не рекомендую. Условие нужно изменить на типа:

    if Trunc(Height) = 80 then
      AnimationFloat('Height', 150)
      else
      if Trunc(Height) = 150 then
        AnimationFloat('Height', 80);

    так как в Вашем случае может возникнуть ситуация, когда высота элемента может измениться уже до проверки второго условия (хотя на практике это случается очень редко).

    Либо тогда "дождаться" изменения высоты и написать так:

    if Trunc(Height) = 80 then AnimationFloatWait('Height', 150);
    if Trunc(Height) = 150 then AnimationFloat('Height', 80);

     

    Спасибо, но как я уже писал, что код я уже сделал путем его усложнения. И конечно же почти таким же методом.

    Вообще на Andoid (именно для него я делал эту анимацию и на Win не проверял), возникала проблема другого рода, иногда (редко), анимация приводила не к точным значениям (150 и 80), будь то просто  AnimationFloat или AnimationFloatWait.

    И по итогу значение не было 150, и даже не было 150.000000147 или типа того, бывало и вот так - 149,999989.....

    Для решения пришлось использовать только AnimationFloatWait, и сразу следом за ним делать Height := 150.00;

     

    Итогом всего этого стало самовольное решение уйти от такого подхода в программе в целом, ибо если уже все не так изящно, как хотелось бы, то значит надо пересилить себя и искать иной поход. Ну и кстати по другому оказалось куда удобнее и быстрее. :)

  2. Вообще я тоже с этим столкнулся, правда во время анимации. И из-за "длинного хвоста" анимация срабатывала не всегда. Не сразу понял почему.

    Анимация делалась для Андроид приложения. Нажимая на Recntangle он увеличивался в высоту с плавной анимацией, а при повторном нажатии возвращался в исходное состояние.

    Так вот в коде на нажатие шло сравнение в духе

    if Heigh = 80 then AnimationFloat('Heigh', 150);
    if Heigh = 150 then AnimationFloat('Heigh', 80);

    Ну и как следствие оказалось что не всегда 80, это именно 80, бывает и 80,000139 и т.к. разные вариации были.

    Пришлось код усложнить малость.

    Так что о таких вещах надо помнить.

  3. А как вывести картинку сразу в TImage? А то ошибки сыпет.

    Т.е. чтобы приведенный код заработал я добавил в Uses пару модулей Winapi.Windows, Vcl.Graphics.

    И как следствие при попытке присвоить результат функции MakeWindowScreenShot к TImage я получаю:

    E2010 Incompatible types: 'FMX.Graphics.TBitmap' and 'Vcl.Graphics.TBitmap'

     

    Ну или если пытаюсь сделать так: Form1.Image1.Bitmap.Assign(VCLBitmap);

    То получаю: Cannot assign a TBitmap to a TBitmapOfItem.

  4. Опираясь на тот факт что встроенный splashscreen всё таки даёт правильный результат, я делаю вывод что косяки сажаем мы. 

    Я конечно не отрицаю что вряд ли должна быть связь между splashscreen'ом и итоговым отображением формы, и что это требует лечения, но всё же мысль о том что дефолтный вариант пашет, говорит о нашем не правильном подходе.

    Замечу также, в тот день когда я полез на радостях изучать сплэш скрины в XE7 вот этой ссылки http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_9-patch_Images_in_Android (поправьте плз ссылку) там не было.

     

    Ну а теперь по делу. Ниже ссылка на проект где всё пашет как надо и сплэш и отображение формы:

    http://ovrload.ru/f/31207_xe7splashscreentest1.zip - это полная вместе с папкой Android, на всякий случай, если нижняя ссылка не попрет

    http://ovrload.ru/f/31208_xe7splashscreentest1_cut.zip - без папки Android

     

    Проект создан заново. Из твоего скопировал только raw картинки белые и tabcontrol. 

    Не могу сказать что четко осознаю что именно помогло, однако что я сделал:

    1. Создал с помощью утилиты 9.png файлы
    2. Не стал создавать в папке файл splash_image_def.xml
    3. Открыл в IDE раздел Deployment и снял галочку с splash_image_def.xml
    4. Переименовал все Remote Name у splash картинок в splash_image_def.9.png

    Ну вроде всё.

  5. Скинь плз чистый проект. Я имею ввиду что у меня проблем таких не возникало.

    Но хочу именно твой пример, потому что ты сам знаешь что баги иногда тока под определенным "углом" вылезают.

    А про Layout сказал, так как я замечаю что иногда без него, то VertScrollBox моргает, то элементы "просвечивают" где не надо.

    Поэтому  предложил ради теста.

  6. Не знаю то или не то что ты хочешь, но вот:

    Пример:

    Строка JSON: {"type1":199, "type2":"val2","ar":["arval1","arval2"]}

    первый это число, второе строка, третье массив

     

    Код на кнопку:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s  : string;
      js : TJSONObject;
    begin
      s := '{"type1":199, "type2":"val2","ar":["arval1","arval2"]}';
      JS := TJSONObject.ParseJSONValue(s) as TJSONObject;
      memo1.Lines.Add(JS.Pairs[0].JsonValue.ClassName);
      memo1.Lines.Add(JS.Pairs[1].JsonValue.ClassName);
      memo1.Lines.Add(JS.Pairs[2].JsonValue.ClassName);
    end;
    

    Запускаем и в memo1 попадают вот такие ответы:

    TJSONNumber
    TJSONString
    TJSONArray
     
     
    Думаю дальше ты знаешь что делать, если конечно я правильно тебя понял и правильно тебе насоветовал тут.
  7. Здравствуйте.

    Ищу того кто сможет создать рабочий пример на Firemonkey по созданию PrintScreen (скриншотов):

    1. Всего рабочего стола
    2. Части (регион) рабочего стола
    3. Чужого окна (включая и игры в оконном режиме)
    4. Части (регион) чужого окна.

    Платформа Windows.

    Важна также скорость получения скринов - т.е. вариант с перебором попиксельно, к примеру, всех цветов экрана с занесением их в TImage не требуется.

  8. Вопрос из раздела Консультации, хотя лично мне не особо то и важно.

    Твой вопрос сродни философскому и однозначно ответить нельзя, особенно если звучит он как "что лучше", ибо доподлинно известно что борьба "хорошего с лучшим" это лишь дело личностных предпочтений.

     

    По существу - на размер и скорость итоговой базы вряд ли повлияет выбранный из двух методик что либо. И если с размером базы и скоростью  мы разобрались, то остается решить вопрос, а что удобнее? Удобней в таблицах. Но при условии что поля в разноязычных таблицах одинаковы.

    В этом случае тебе придется лишь указывать таблицы согласно выбранному языку, что можно в принципе повесить на отдельную функцию и спокойно разрабатывать себе приложение. 

    Ибо если ты будет хранить в столбцах то и обращаться придется каждый раз по разному выискивая то или иное слово, т.е. муторно это, а смысла нет.

     

    Так что организовывай на уровне таблиц.

  9. Хм. Походу не в тот раздел ты отписался, надо было в консультации.

    В целом тут скорее всего надо решить доступности файлов по локальной сети для начала. 

    Порывшись в сети вижу что без стороннего приложения это не решаемо, хотя могу и ошибаться.

     

    Мне кажется что ваш путь лежит через AppTethering. И написании промежуточного ПО для синхронизации которые будет стоять на ПК.

    А пересылка осуществляться обычным методом, т.е. приложение на ПК спрашивает сколько вообще записей в базе у андроид приложения, а потом начинает выгребает по частям, точнее андроид приложение берет часть строк из базы и передает их текстом в приложение на десктоп.

     

    В теории, конечно, может быть AppTethering позволит вам и сразу базу перекинуть с андроид на комп и там  уже синхронизировать всё и быстро. 

    Но наверняка не знаю.

     

    Если найдешь то решение которые хочешь ты в чистом виде, то выложи пожалуйста потом сюда. Я думаю многим рано или поздно в их бизнес моделях пригодится эта информация.

  10. Нет, такой вариант не прокатывает :(

    Допустим в TVertScrollBox лежат десять TButton'ов. Все они занимают место и выравнены под Top.

    Прокручиваем список в самый низ. И если нажать на саму нижнюю кнопку (mouseDown) и не отпуская её поводить вверх<--->вниз, то скроллинг будет двигаться. А надо что бы пока mouseDown скроллинг не действовал.

    Ну это пример все могут повторить. Но у меня проблема такая возникла из-за использования компонента подписи. Подпись находиться в самом низу. И при попытки накалякать что нибудь скроллинг дергается то вверх, то вниз, и роспись становиться рваной.

  11.  

    1. ...
    2. ...
    3. Чтобы хранить большее изображение нужно использовать TBitmapSurface.
    4. Самый лучший вариант это хранение карты по частям и до загрузка требуемых частей по мере прокручивания карты и изменении масштаба. При таком подходе можно будет части хранить в  TBitmap и использовать отрисовку штатным способом TCanvas.DrawBitmap. Если части больше не отображаются, то их можно будет выгружать, чтобы не занимать лишнюю память.

     

     

    Извиняюсь за отсутствие, просто начал собирать карту в один кусок, оказалось то это весьма трудоемкий процесс, пришлось искать средства автоматизации процесса. Так что только сегодня получил примерное представление об объеме карты.

    Одна карта слитая в один jpg файл, с 20 кратным увеличением вести 70МБ, причем там не все ее части ещё в нормальном качестве, большая часть еще смазана.

    Значит итоговая будет весит куда больше.

     

    Теперь по алгоритму вопросы.

    Эту карту одним файлом надо загнать в TBitmapSurface? Потом подгружать из него в TBitmap?

    И как организовать прокрутку с одновременном подгрузкой?

    И что делать если мне надо что бы масштаб стал другим, .т.е увидеть зону не с 20 кратным приближением а с 14 кратным допустим?

    Мне надо еще и такую карту залить? Или если уже храниться карта в хорошем разрешении этого можно избежать?

     

    P.S. 

    У меня на телефоне показало 4096. Это 4096 его именно? Высота картинки в pixels?

  12. Здравствуйте.

    Хочу загнать карту в приложение. Т.е. сделать ПринтСрин нескольких участков, слить их в одно изображение в фотошопе, а потом иметь возможность просматривать на смартфоне под android. Что бы можно было пальцами приблизить, подвигать карту.

    Какой компонет посоветуете?

  13. Здравствуйте.

    Требуется создание компонента который выступал бы в роли поля для подписи.

    На этом видео http://youtu.be/TnlgvN0RBiM?t=30s 

    видно что подпись идет "рваная". Основное требование плавность и естественность "рисунка/подписи".

    Т.е. должно выглядеть полностью презентабельно.

    У компонента должна быть  возможность смены цвета линии и её толщины.

    Компонента должен поддерживать возможность применения к нему эффектов, например таких как отбрасывание тени, свечение (имеется ввиду не среди его свойств, а таким же способом как и все компоненты в делфи, что бы можно было перенеси в него с палитры эффекты).

    Встроенная процедура очистки поля.

    Встроенная функция определения заполненности данных. (например если общий объем зарисованной площади меньше 10% то считать это как False)

    Возможность сохранять подпись в файл, с указанным разрешением (например 1280*720 или 1920*1080 и т.д.)

    Возможность отобразить подпись в TImage;

    Совместимость с Android и Windows;

  14. Снять видео очень тяжело. Приходится снимать на другой телефон, а у него камера хуже. В итоге, пока без видео.

    Но в попытках отловить суть проблемы, вроде могу сказать как воспроизвести.

    Во первых это у меня на Samsung Note3 4.4. KitKat происходит. На Gsmart Roma2 4.2.2 все нормально вроде.

    Кидаем на форму ActionList, Button, LocationSensor. У ActionLit создаем TakePhotoFromCameraAction. И TakePhotoFromCameraAction замыкаем на кнопке. LocationSensor ставим в Active=True.

    Запускаем приложение. Нажимаем на кнопку что бы сделать фото. И появляется стандартный системный фотик. И пробуем сделать фото в портретном режиме и альбомном. Пи повороте телефона камера залипнет в какой либо ориентации, у меня чаще всего в альбомной залипает.

    Фото делается, но оно переворачивается и режется по краям. 

    А вот если у LocationSensor сделать Active=false, т.е. что бы не было активации с самого начала работы программы, то все нормально.

    Смарт не рутованный.

    Если с первого раза фотик не залип, то перезагрузите смарт и попробуйте запустить программу. 

     

    Что я подразумеваю под "залип" - вот когда мы собираемся сделать фото, то мы видим на экране значки (камера, натсройки и т.д. у кого как), а когда мы переворачиваем смартфон например из портретного в альбомный, то значки это тоже переворачиваются. Так вот когда оно залипает то значки не изменяются. Фотик пребывает в состоянии как будто он все время в альбомном режиме. Даже если после этого выйти из нашего приложения и запустить стандартный фотик, то ситуация не измениться, пока не сделаешь ребут.

×
×
  • Создать...