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

Barbanel

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

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

  • Посещение

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

    36

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

  1. Да начинание хорошее, никто не спорит.
    Спор в том, что доход 400$ в месяц для целевой аудитории - это реально ни о чем, поэтому для чего такое ограничение сделано - ХЗ.
    Под целевой аудиторией понимается корп сегмент, европа и штаты.

    Это как если мелкомягкие скажут: "спецпредложение для России - устанавливайте нашу винду себе бесплатно, если ваш доход менее 1000 рублей в месяц".

  2. 59 минут назад, POV сказал:

    Не об том моя печаль. Нет возможности легально для поделок использовать дельфу. Кто-то скажет "ты ж заработать хочешь, вот и плати". Но не столько же! Они неплохо поднимают именно (и только) на корпоративных клиентах. Ограничение для работы по мелочи в $5к несерьезно, я не разработке электроники получаю кратно больше - что же, мне за тулзу  с тремя кнопками, что дается для настройки оборудования, платить по полной?  Ну так и будущего у них самих не будет при сознательном сужении круга пользователей... впрочем, из-за всё большем числе задач под линух, все только софтовые проекты пишу только на qt - дельфи в силе приятности и большого опыта, по мелочи пока остается.

    Чтож, ждем еще лет пять-десять, пока сия сакральная мысль не придет в головы эффективным манагерам)

  3. Только что, krapotkin сказал:

    идея в том, что если сложная (+-) формочка, то она не очень предсказуемо скроллится. тогда мы можем сделать скриншот любого компонента, или всей формы в mouseDown

    далее например так

    выводим TImage поверх всего

    на заднем плане меняем фрейм или что там еще на новый

    тем временем по mouseMove сдвигаем TImage. Получается эффект листания страницы как в читалке, но без применения TabControl

    Да это же гениально!!!

    StateOfArt.jpg

  4. В 21.07.2018 в 12:58, Ingalime сказал:

    Еще такой вопрос - можно ли установить на мас вторую версию XCode. Если да, то как?

    Порвался сначала сказать: да легко, у меня стоят разные версии)
    Ан нет. Стоят только разные версии Command Line Tools, а сем xCode - актуальной версии.

    Полагаю что если нужны разные версии - то через виртуалку.
    PS Не эксперт, все имхо.

  5. В 21.07.2018 в 06:31, krapotkin сказал:

    так PageControl же )) грубый вариант - это просто отлавливать жест и по окончанию жеста делать ActionNextTab

    если повозиться - с помощью мгновенно изготовленного скриншота можно добиться эффекта свайпа для любого фрейма.

    Я не совсем понял идею со скриншотами.
    Можно подробнее?

  6. Не стыдитесь)

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

    Каково же было мое разочарование, когда я узнал что это обертка над TList, не передать словами!!!

  7. 4 минуты назад, Ivan B. сказал:

    Стыдно, не не знаю, что такое дженерики - с удовольствием посмотрю пример

    По сути это TList, который возвращает вам не TObject, а сразу объект нужного типа.

    type
        TMobBaseObject = class(TBaseObject);
    
    ...
    
    var
        FItems : TObjectList<TMobBaseObject>;
        
    ...
    var
        myObj : TMobBaseObject;
        i : integer;
    begin
        FItems := TObjectList<TMobBaseObject>.Create;
        
        for i:=0 to 99 do
        begin
            myObj := TMobBaseObject.Create();
            myObj.SetProperties();
            FItems.add(myObj);
        end;
    end;
    
    ...
    
    var
        myObj : TMobBaseObject;
        i : integer;
    begin
        for i:=0 to 99 do
          myObj := FItems[i];
    end;

     

  8. Я бы сам присоединился к такому вопросу.
    Советовать не стану, расскажу лишь как мы сделали.

    35 минут назад, Ivan B. сказал:

    1. Как правильно хранить изображения, которые используются в приложении: динамически размещаются в TImage, на кнопки, панели т .д.;

    Иконки для кнопок, их цвета и прочее что относится к внешнему виду/интерфейсу мы вставили в стили, конкретнее - прямо на битмап темы приложения.
    Изображения же, типа там фоток, примеров из "что нового" вставили в imageList, причем все используемые imageList вынесены в отдельный DataModule.

    38 минут назад, Ivan B. сказал:

    2. Приложение будет получать от сервиса текстовые и графические данные (base64) - куда временно записывать загруженные картинки, прежде, чем, к примеру, разместить их на панельки;

    Мы получаем только текст и сразу парсим, соотв. храним в оперативке, нам нет смысла писать на диск. 

    39 минут назад, Ivan B. сказал:

    3. Как лучше всего (в плане производительности и вообще по "фен шую") организовать приложение, в котором должно быть много разных "окон" - создавать много форм? Может использовать фреймы? Или создавать все на одной форме?

    Тут можно разводить холивары.

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

    44 минуты назад, Ivan B. сказал:

    (как правильно уничтожать и освобождать память?)

    Ембаркадеро советует использовать object.DisposeOf() вместо object.Free() так и делаем. Минусов не обнаружили (или не заметили).

    46 минут назад, Ivan B. сказал:

    4. Как правильно организовать прорисовку создаваемых компонентов?

    К примеру мне нужно создать на VertScrollBox много TPanel с TImage и TLabel, делаю это так:

    Но прорисовка !первый раз происходит медленно. Это можно как-то ускорить?

    Попробуйте поэкспериментировать с другими контролами, ListView или ListBox. Они все позволяют использовать стили для элементов списка (имхо, могу ошибаться).
    Мы используем TListBox (что не рекомендуется данным форумом) и кидаем стили на элементы списка (лид сказал оставляем так, потом будем решать).

    50 минут назад, Ivan B. сказал:

    И вообще правильно ли делаю, что использую массивы объектов?

    Ну, это не запрещено)))
    Попробуйте дженерики, удобная фича. Пример нужен?

     

    PS. это все имхо, я с удовольствием послушаю коллег.

  9. Процедура Invalidate не перерисовывает форму немедленно, она лишь добавляет сообщение на перерисовку в очередь сообщений.
    Соотв. форма перерисуется когда не будет других событий в очереди, в данном случае - после всех длительных операций или после вызова .ProcessMessages

  10. Посмотрите пример, о таком поведении я говорил в самом начале.

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

    процедура SetMouse_Unsenitive - отключает реакцию на мышь,
    процедура SetMouse_Senitive- включает обратно реакцию на мышь.

    TransparentWindow.zip

  11. 2 минуты назад, des80 сказал:

    потому что у меня с видеорегистратора воспроизводится поток видео на форме. Мне нужно чтобы объект имел handle окна, а фрейм handle не имеет

    Это под виндовс или мобильные?
    Код воспроизведения в студию!

  12. 14 часов назад, Daniel Dorneles Peres сказал:

    Ola.

    Estava fazendo uma implementação usando Tethering e encontrei sua questão, mas tive de utilizar o google para traduzir, acho que terá de fazer o mesmo.

    Também não gosto de usar socket (Indy) devido ao problema de não conseguir capturar a perda de conexão em algumas situações, o que acaba causando muitos problemas, então resolvi testar o Tether e até o momento estou gostando bastante. Estou utilizando recursos compartilhados, e tem se mostrado bem eficiente.

    Peguei o seu caso pois estava tentando criar um log do que estava recebendo, e me deparei com o mesmo problema de parar o funcionamento dos recursos quando adiciono o evento AfterReceiveData. Fiz alguns testes e por tentativa e erro consegui fazer o código funcionar, embora não tenha entendido exatamente o porque do Result funcionar da forma como fiz, era uma tentativa para analisar os dados mas que acabou por funcionar.

    Esse evento (AfterReceiveData) na verdade não reflete os dados que são modificados em tempo real, mas os recursos e ações que estão disponíveis em ambos os lados, pelo menos no que se refere aos recursos e ações "persistentes", acredito que para os recursos "transitórios" esse evento possa funcionar, mas não testei ainda.

    Se colocar o código abaixo em um memo, conseguira entender um pouco do que quero dizer.

    blah blah blah  

    Espero ter ajudado de alguma forma.

     

     

    Ola!

    Guy, you are on Russian forum and almost nobody here understand your language. So please, i repeat: please, write on russian or on english.
    And yeach, have a nice day! ?

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

    Я не знаю, можно ли переопределить конкретно процедуру Activate, на вскидку есть еще два решения:

    -не труъ: при OnClick на дочернюю форму, программно возвращать фокус нужной форме.
    -чуть более труъ: прописать стили формы, при которых она не реагирует на щелчки мыши, т.е. становится "прозрачной" для мыши. Это работает только на VCL приложениях (насколько я знаю)

  14. О, это я удачно зашел! ?
    В данный момент как раз ковыряю этот кросс-платформенный пример, CubeMan3D.
    Сходу его удалось скомпилировать только в XE8. Стоит задача собрать его в XE10.2 Токио.
    Проблема в том, что в Токио низкоуровневая работа с приложением реализована немного по-другому.
    Если в XE8 обработка сообщений была реализована в цикле, то в Токио такого цикла больше нет, но есть коллбеки на все события.

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

    Не могу понять как в Токио организовать такой цикл? Сталкивался кто-нибудь?
    Заранее спасибо!

    PS могу собрать демо-пример с проблемой если необходимо.

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