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

kvantum

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

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

  • Посещение

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

  1. Здравcтвуйте !

    После записи в таблицу иероглифов, например "日本人", в ней отображаются вопросы "???".

    Какие настройки необходимо произвести с компонентами FireDAC для корректной записи/отображения иероглифов? 

    Пример: Ieroglifs.zip

  2. Нужно ждать фикс

    Ну ... фикс ! Когда он будет ? Нужно ведь сейчас писать... Что если заменить TFrame формой TForm, что думаешь ? Вопрос задан здесь: http://fire-monkey.ru/topic/914-android-tform-ili-tframe/

  3. Здравствуйте ! 

    Опираясь на вопрос http://fire-monkey.ru/topic/432-sovety-po-sozdaniiu-mobilnogo-prilozheniia-master-detail/?p=1638 и на осознанную на практике невозможность корректного уничтожения динамически созданного фрейма, вопрос http://fire-monkey.ru/topic/905-android-tframe-oshibka-pri-dinamicheskom-udaleniisozdanii/ хочу спросить, какие преимущества и недостатки в замене фреймов формами, если вместо фрейма динамически создавать форму и затем закрывать ее методом Close, указав в OnClose: Action:=TCloseAction.caFree; Пугает простота данного решения . В ЧЕМ ПОДВОХ ? :-)))

    Projects.zip

  4. Здравствуйте ! 

     

    Опираясь на тему "Архитектура приложения под Андроид на основе TFrame" был создан тестовый пример приложения на Андроид, в котором переключаемые фреймы создаются (удаляются) динамически. Суть ошибки: если в Frame1 ввести текст в строку и нажать кнопку перехода к Frame2 (правый верхний угол) - возникает ошибка. При уничтожении текущего фрейма клавиатура скрывается автоматически методом HideKeyboard : 

      if Assigned(fCurrentFrame) then begin
        HideKeyboard;
        fCurrentFrame.DisposeOf;
        fCurrentFrame:=nil;
    
        HideButtonsLayouts;
      end;

    Прошу помочь в исправлении ошибки. Пример и скриншоты во вложении.

     

    post-266-0-36114400-1421669229_thumb.png

    post-266-0-20265200-1421669230_thumb.png

    AndroidFramesTest.zip

  5. Спасибо, Ярослав, Вы как всегда на высоте!

     

    Завершающий вопрос : в каком методе уничтожать созданную переменную Bitmap ?

    Stream := CreateBlobStream(FieldByName('Data'), bmRead);
    try
      Bitmap:=TBitmap.Create;
      Bitmap.LoadFromStream(Stream);
      Item.StylesData['userimage.bitmap'] := TValue.From<TBitmap>(Bitmap);
      //   Bitmap.Free;
    except
    end;
    Stream.Free;
  6. Здравствуйте ! 

     

    Задача состоит в загрузке в элемент списка картинки из потока и установке значения текстовому свойству

     

    StyleBook имеет вид, представленный на скриншоте. 

     

    Присвоение значения свойству userlogin реализуется как :    

     

    Item.StylesData['UserLogin.Text']:=FieldByName('Login').AsString;

     

    Как по аналогии загрузить изображение в свойство userimage (по типу Image.Bitmap.LoadFromStream(Stream)) ?

     

     

    post-266-0-87236300-1421225828.png

  7. Вы у всех выделенных мною контролов (myStyle1, layout1, description, headtext) на картинке установили HitTest = False?

    Да именно так ! Полагаю, что раз подсветка элементов списка - свойство, общее для всех элементов списка - может быть есть смысл поработать со стилем всего списка, а не его итемов ? 

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

     

    На http://oilsoft-service.blogspot.ru/2013/11/android-delphi-xe5.html был приведен очень интересный пример создания пользовательского стиля для TListBoxItem. Во вложении содержится продублированный проект.

     

    При запуске проекта под Анроидом цвет фона для выделенного элемента списка не меняется. Прошу помочь разобраться.

     

    Вторая строка на обоих скриншотах выделена.

    post-266-0-00895300-1421140077.png

    post-266-0-10640500-1421140078_thumb.png

    Demo_2.zip

  9. во-первых: отделяйте гуи от кода !

    во вторых : раз у вас для каждой платформы обсолютно разная реализация интерфейса - сделайте базовую форму и рисуйте фрейм для каждой платформы в отдельных вьюхах

    Спасибо ! Поясните пожалуйста насчет "рисуйте фрейм для каждой платформы в отдельных вьюхах"

  10.  

    Клик по итему

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

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

    Открытие нового вида

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

     

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

     

    Легко представить типичную ситуацию, когда ваше приложение довольно большое и содержит большое число форм ввода и редактирования данных. Теперь представьте, что все эти контролы создаются при запуске приложения и живут все время существования приложения. Это совсем не маленькие размеры памяти, особенно на Андроиде.

     

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

     

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

     

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

    1. Позволяет быстро и удобно создавать в нужное время на мобильной платформе требуемый вид. Забирая от системы ресурсы только в тот момент, когда они действительно необходимы.
    2. Повторное использование в других местах приложения.

     

     

    Здравствуйте !

     

    Идея использования фреймов в мобильных приложениях конечно интересная. Но как быть для случая multi - device designer интерфейса, который реализован в XE7 ? Создавать отдельный фрейм для каждой платформы ? Но в этом случае будет затруднена синхронизация связей (кода) между элементами таких платфорно-ориентированных фреймов.

     

    Как быть ? 

  11. Здравствуйте ! 

     

    Возникла необходимость в осуществлении отладки андроид-приложений на смартфоне.

     

    Для отладки приложений на планшете Lenovo IdeaPad были реализованы рекомендации , приведенные по ссылке http://stackoverflow.com/questions/17931897/how-do-i-connect-a-lenovo-ideapad-s6000-to-windows-7-64-bit.

     

    К сожалению, повторение описанных действий для смартфона Fly Evo Tech 4 не привело к ожидаемому результату

     

    Драйверы для данного смартфона в Win7 x64 Prof установлены нормально, в диспетчере устройств неопознанных устройств нет.

     

    На обоих устройствах активирован режим разработчика, включена отладка по USB

     

    Прошу помочь в реализации отладки андроид-приложений на смартфоне

     

    Скриншоты и android_winusb во вложении

    post-266-0-99829800-1419535534_thumb.jpg

    post-266-0-83595300-1419535535_thumb.jpg

    android_winusb.zip

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

     

    В SQLite не работает lower() для не-ASCII символов. Например, Lower('Строка') вернет значение "Строка", а не "строка". Вычитал, что надо ставить SQLite IСU extention, но не понятно, как его ставить для Windows и Android для дальнейшего использования в FireMonkey.

     

    Прошу помочь.

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

     

    Необходимо реализовать сортировку пользовательских итемов TListBox в зависимости от значений их свойств.

    Во вложении тестовый пример сортировки по Item.Tag = Random(1000)

     

    Пользовательская функция сортировки: 

    function TForm1.SortFunc(Item1, Item2: TFmxObject): Integer;
    begin
      if (Item1 as TListBoxItem).Tag > (Item2 as TListBoxItem).Tag then Result:=1;
      if (Item1 as TListBoxItem).Tag < (Item2 as TListBoxItem).Tag then Result:=-1;
      if (Item1 as TListBoxItem).Tag = (Item2 as TListBoxItem).Tag then Result:=0;
    end;
    

    Вызов сортировки: 

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ListBox1.BeginUpdate;
      ListBox1.Sort(SortFunc);
      ListBox1.EndUpdate;
    end;

    К сожалению, сортировка не работает - порядок следования итемов в списке не меняется.

     

    Прошу помочь ! 

     

    ListSort.zip

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

     

    Используется БД MySQL и компоненты FireDAC. В базе данных есть таблица с блоб-полями (изображения большого объёма). Заметил, что при удалении записей данной таблицы размер файла БД не уменьшается, что нерационально.

     

    Как организовать изменение объема файла БД при удалении записей из ее таблиц ?

     

     

  15. Здравствуйте ! 

     

    Во вложении - тестовое приложение, иллюстрирующее суть проблемы.

     

    Есть пользовательский элемент списка 

    TCustomListBoxItem = class(TListBoxItem)

    , содержащий:

    1. Изображение,
    2. Наименование даты
    3. Текстовое описание непостоянной длинны.

    В зависимости от длинны описания меняется высота TCustomListBoxItem.

     

    Метод TCustomListBoxItem.SyncChildSizes вычисляет высоту элемента списка в зависимости от содержимого и вызывается из обработчиков TCustomListBoxItem.OnResize и TCustomListBoxItem.OnApplyStyleLookup.

     

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

     

    Суть проблемы

    • Если нажать кнопку "Добавить" на первой вкладке и активировать список на второй вкладке - его элементы (TCustomListBoxItem) будут "навалены" один на другой.
    • Если нажать кнопку "Добавить" на второй вкладке, которая содержит сам список - элементы в нем отображаются корректно.

    Скриншоты во вложении.

    post-1-0-33177000-1407267498_thumb.jpgpost-1-0-88452300-1407267498_thumb.jpgpost-1-0-38772700-1407267499_thumb.jpg

     

    Прошу помочь разобраться.

    List Test.zip

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