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

brunnengi

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

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

  • Посещение

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

    21

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

  1. Если будет больше материала на русском, то и на наших форумах появится больше русско язычной информации и не придется равняться на иностранные источники. Материала все равно мало, даже и на английском. Docwiki от Embacadero вообще ни о чем (или я не правильно пользуюсь).

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

    А книга, это да. Но не думаю что Ярослав "затащит" ещё и этот квест - ибо тут даже статью мало мальскую опубликовать много времени надо, а на книгу уйдет не простительно много человек-часов.

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

    Попытался разобраться в примерах по работе с TParallel, но не затащил (

    Да и вообще хочу уточнить поможет ли в моем случаем использование TParallel.

     

    задача в виде кода такая:

    for i_01 := 1 to 7 do
        for i_02 := 1 to 7 do
          for i_03 := 1 to 7 do
            for i_04 := 1 to 7 do
              for i_05 := 1 to 7 do
    begin
      if (i_01 <> i_02) and 
         (i_01 <> i_03) and
         (i_01 <> i_04) and
         (i_01 <> i_05) and
    
         (i_02 <> i_03) and
         (i_02 <> i_04) and
         (i_02 <> i_05) and
    
         (i_03 <> i_04) and
         (i_03 <> i_05) and
        
         (i_04 <> i_05) then
    
         // сохраняю эти данные в файл.
    end;
    

    Т.е. я перебираю все комбинации и ищу среди них только те, где элементы не повторяются.

    К примеру перебирая все варианты, выпадает такой: 1,2,3,4,4

    Этот вариант я не сохраняю так как в нем две одинаковые четверки.
    А вот вариант 1,2,3,4,5 сохраню, так как все числа в этом наборе не повторяются.

     

    Сейчас задача выполняется на компе, но процессор грузиться только на 18% под эту программу.

    (Win 8.1 64 bit, iCore7, 8Гб ОЗУ, Ядер 4, Логический процессов 8)

     

    Сам перебор выполняется в отдельном потоке.

     

    *Подскажите пожалуйста, возможно ли применение TParallel под мою задачу и если да, то ускорит ли его применение работу программы?

     

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

     

    *Есть ли вариант заменить вон тот список условий (if (i_01 <> i_02.... и т.д.) на какой нибудь более грамотный вариант и не в ущерб в скорости? Или этот вариант единственный?

  3. У меня уже несколько проектов переведено на чистый fmx, без всяких vcl. Из последних - отчетные формы в приложении на android. В приложении из больше двух десятков. Вот видео http://www.youtube.com/watch?v=x3bOYzP7N6k, в нем две формы отчетности (данные и наименования изменены специально). Первая "упрощенная", вторая более значимая. Работники компании пользуются каждый день и в день по несколько десятков раз. От начальства до среднего персонала. Смарт у меня не рутованый поэтому проект перегнал в Вин и потом снял видео, но на телефоне всё выглядит очень сексуально. Так что не знаю, кому как. Я вот начал и закончил уже много проектов. Да, есть проблемы, но fmx дает гораздо больше возможностей, в плане интерфейса. И это важно. А с проблемами так или иначе со временем справляемся. На VCL некоторых вещей вообще нельзя было сделать, коли на то пошло.

  4. Во-первых выложи хотя бы скрины, пожалуйста.

    Во-вторых, я хоть и не пользуюсь Антивирусов от Каспера, зато доверяю встроенному в Винде Защитнику, и он на твой файл жалуется. Так что коли ты выкладываешь именно exe, то хотя бы проверки выложи от онлайн антивирусов.

    В-третьих, не смотря на жалобы антивирусника, я всё таки запустил программу, но она не пошла, ибо CC32160MT.dll не найдена. В инете её описания нет. Так что хоть поясни что это за либа такая.

     

    Ну и касательно вопроса - ты давно был на PlayMarket'е? Там всегда было, есть и будет куча хлама лежать и пользоваться спросом. Там 98% мусорных приложений, однако они кому то нужны же. Касательно шахмат на троих, я не знаю, не играл. Играю с другом раза два в неделю в обычные шахматы в баре/кафе. Мы же не пьющие, вот и надо чем то мозги занять. Так что часа 2-3 в неделю на шахматы убиваем. И даже в такой, казалось бы простом приложение есть свои недороботки, мелкие, но все же хочется что бы их не было.

    Так что. делай конечно. 

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

    Как можно изменить скорость анимация смены вкладок?

    А также очень волнует вопрос о том, можно ли изменить анимацию так, что бы она работала ни как AnimationFloat, а как AnimationFloatWait? Т.е. что бы код исполнялся только после того как завершена анимация перелистывания вкладки.

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

    Подскажите пожалуйста как правильно создать новые вкладки у TTabControl и как потом удалить все вкладки кроме первой включая содержимое, которое тоже создавалось в run-time.

    Новые вкладки создаю через

    TabControl.Add();

    А удалять пробовал и через Destroy и через Delete, но то не удаляет то сыпет ошибками, то виснет приложение.

    В частном случае, то бишь моем, у меня TabControl имеет одну вкладку созданную в DisignTime.

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

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

    Использую TPie что бы вывести круговую диаграмму. 

    И возник вопрос как разместить текст в видимой области.

     

    Сейчас вот так:

    41847_asis.png

     

     

    А хочу вот такой результат:

    41851_aswant.png

     

    Как такое сделать?

     

     

    p.s. в середине, поверх pie лежит tcircle, поэтому такой вид. если кто то знает как сразу у pie сократить "хвостик" то поделитесь пожалуйста.

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

    Если накидать в run-time несколько компонентов в TVertScrollBox, то при первом прокручивание идёт притормаживание. Зато когда прогонишь/проскролишь туда сюда, то всё становится более менее плавно, по крайней мере рывки в прокручивание уходят.

    Подскажите как от этого можно уйти, избавиться?

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

    Требуется удалить созданные в run-time'е Layout'ы с их содержимым. Все они имеют родителя TVetScrollBox;

    Для удаления использую следующий код:

    VertScrollBox4.Content.DeleteChildren;
    

    Однако опираясь на два топика этот и вот этот, возник вопрос о корректности использования данного когда как на windows платформе, так и на android'е. Подскажите можно ли использовать такой подход для удаления дочерних элементов у TVertScrollBox? Очищает ли он память на всех платформах корректно или требуется ещё что то?

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

    Дано:

     -TTabControl

          ∟TabItem1

                ∟Button1

          ∟TabItem2

     

    Нажатием на Button мы переключаемся на вкладку TabItem2 и вызываем поток.

    Внутри потока в процедуре Synchronize мы переключаемся обратно на вкладку TabItem1.

    procedure ThreadSending.Sync;
    begin
      f.TabControl1.GotoVisibleTab(0, TTabTransition.Slide,
                                                         TTabTransitionDirection.Reversed);
    end;
    
    procedure ThreadSending.Execute;
    begin
      try
        
      finally
        Synchronize(Sync);
      end;
    end;
    

    Проблема в том, что если тип анимации стоит "TTabTransition.Slide", то с очень высокой вероятностью вкладка не будет переключена, а останется на той же где и была. Более того, если на этой вкладки были компонеты с анимацией, то они залипают, т.е. анимация останавливается.

    А если изменить на "TTabTransition.None" то все отрабатывает как часы.

     

     

    Как побороть этот недуг?

  11. Ну про использование Start я в курсе. 

    Мне интересен именно новый подход и метода. В доках шепчут вот что:

    > TThread.Suspend and TThread.Resume are deprecated:
      -Proper thread synchronization techniques should be based on 
       System.SyncObjs.TEvent and System.SyncObjs.TMutex. 
       Also, see Freezing and Thawing Threads in the Debugger.
    > New classes for thread synchronization: atomic operations on data 
      shared between multiple threads -- TInterlocked, locking mechanisms -- TSpinWait, TSpinLock.
    

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

    Но примеров с описанием типичных вариантов найти не смог.

    Так что, ещё раз прошу, если кто то знает как, то поделитесь знаниями пожалуйста.

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

    Раньше работал с потоками примерно так:

    var
      th : SomeThread;
    begin
      th                 := SomeThread.Create;
      th.FreeOnTerminate := true;
      th.Resume;
    end;
    

    Но теперь многие методы стали deprecated.

    Приведите кто нибудь, пожалуйста, пример того, как теперь правильно под FMX работать с потоками?

  13. Что то я ума все равно не смог дать. Пишет:

    [FireDAC][Phys][ODBC][Microsoft][Диспетчер драйверов ODBC] Источник даных не найдне и не указан драйвер, используемый по умолчанию 

    При том что на XE6 с dbf файлы открывались.

    Если не тяжело, выложите исходники. Может я что то упускаю.

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

     

    Есть видео файл. При использование на форме mediaPlayerControl'а он воспроизводит видео поверх всего.

    Т.е. если взять TabContol и создать в нём две вкладки - TabItem1 и TabItem2 и в TabItem2 поместить MediPlayerControl с играющим видео, то даже если мы в процессе переключимся на на вкладку TabItem1, видео все равно будет видно.

    Сам видеоряд состоит из 150 кадров. Размер 600ш на 840в.

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

    Но что мне потом использовать для адекватного отображения на форме?

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

    Так что мне тогда использовать?

  15. Извиняюсь за долгое отсутствие (были проблемы с выходом в сеть интернет).

    Написание своего компонента аниматора - я не затащу такой квест, скорее всего. :)

    Может есть гайд по созданию подобного компонента, аниматора всмысле?

     

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

    Да и в целом совет требуется.

     

    1. Заголовок (на меняющийся задний фон внимание не обращайте, это выдрано с видео-презентации HUD)
    Вот хочется создать компонент, который при enabled:=true отрисовывался, как в самом начале и плавно название (caption) вверху появилось бы.
    При изменение text надпись появлялась бы так же, как и строчки снизу.
    Ну и конечно "уход со сцены", как в самом конце.

    40779_header_01.gif

     

    2. Предупреждения

    Вот у них тоже три стадии - появление, работа и уход.

    Вот на примерах ниже ухода нет, так как в самой видео-презентации не представлен, но он по сути как и появление только наоборот.
    40780_caution_01.gif

     

    40781_caution_02.gif

     

    40782_caution_03.gif

     

    40783_danger_01.gif

     

    40784_danger_02.gif

     

    3. Текстовые поля.

    С функциями как у memo например, но с эффектами появления

    40785_frame_01.gif

     

     

     

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

     

    И куда копать и что делать, что бы получить желаемый результат? Я бы и в разделе "создание компонентов" отписался бы, но сейчас даже не знаю как ТЗ сформировать.

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

    Получаю путь с помощью TPath.GetHomePath, который возвращает следующую строку:

    /data/data/com.embacadero.XE7XreateDir/files

     

    Попытался создать в этой директории папку "myDir" с помощью ForceDirectories(TPath.GetHomePath+'/myDir');

    Однако папка не создалась.

     

    Подскажите плз, как сделать правильно. 

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

    Кинул на форму TLocationSensor, сделал его Active.

    И кинул Timer которые каждые 10 секунд делает вот так:

    Memo1.Lines.Add('Latitude: '+f.LocationSensor1.Sensor.Latitude.ToString);
    Memo1.Lines.Add('Longitude: '+f.LocationSensor1.Sensor.Longitude.ToString);
    

    Вот если выхода в сеть интернет нет, то координаты он не показывает, хотя GPS включен.

    Стоит включить WiFi (с выходом в инет), сразу показывает координаты. А выключаю, и всё, ничего кроме NAN, не выводит.

     

    Подскажите пожалуйста как получать координаты без выхода в инет?

     

     

  18. Обход проблемы описан здесь. Похоже это действительно баг XE7, и если это на самом деле так, хочется в очередной раз сказать разработчикам: "Ребята, не торопитесь. Лучше выпускать 1 версию RAD Studio в год, при этом больше времени уделяя тестированию. Не нужно гнать брак...".

     

    С одной стороны, да, гнать бажное ПО это не комильфо. То тут, то там выплывают баги/фичи. Т.е. количество выпущенных версий и апдейтов растёт, а количество багов не меняется. Хотя может это сообщение на эмоциях писано.

    С другой стороны Embacadero стоит признаться самим себе в том, что они не могут писать ПО без багов и надо понять что это нормально - все пишут бажное ПО. Выпускается действительно много девайсов, у всех свои версии, свое железо, а еще есть надстройки от самих компаний, которые также дают свои "поправки". И в целом даже полугодичный выпуск становиться слишком долгим периодом для тех кто ждет исправлений или новшеств.

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

    В очередной раз прошу Embacadero обратить внимание на политику продаж  лицензий у UDK4.

    Вы регистрируетесь на сайте. Оплачиваете 19$/мес, и скачиваете launcher. Через launcher можно скачать примеры (платные и бесплатные), а также саму среду UDK4. Самое главное что сразу в лаунчере доступны обновления с новыми фишками и исправленными ошибками, т.е. там так и  идет - версия 4.0.1, 4.0.3, 4.0.4. И можно скачать новую если хотите и если ваша подписка не истекла.

    У Embacadero уже есть зачатки подобного - это AppMethod. Но он обновляется исключительно по выходу новых версий или апдейтов.

    Хотя было бы куда лучше если у тех кто имел подписку была возможность получать обновления сразу.

    Насколько я помню в ХЕ7 было исправленно почти 2000 багов. Но всем пришлось ждать выхода новой версии. Разработчики не в один миг же, в день перед релизом, их исправили, они шли к этому день ото дня. Так почему же по такой схеме не выкладывать версии и патчи по мере исправления багов - 10 багов исправили и выложили. Исправили в 1 баг в неделю, тоже выложили. 

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

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

    Да и может убрать это безумное количество типов Pro, Enterprise и разделение по платформам и т.д.? Не уверен, но мне кажется что изжило себя - это раз, а во вторых для компании поддерживать их после выпуска новых версий наверное геморно. 

     

    Могу привести пример себя - даже если я не пользуюсь UDK4 каждый день, я всё равно оплачиваю каждый месяц 19$, так как я не могу знать когда он мне понадобиться или когда у меня появиться время, но он должен быть доступен в любой момент.

     

    Учитывая что ломанные версии все равно есть, то может Embacadero стоит хотя бы попробовать такой подход, отказаться всегда успеют. А если выстрелит и получиться?

     

    Извините за адский оффтопик.

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