Доска почета


Popular Content

Showing most liked content since 20.07.2017 Во всех областях

  1. 18 likes
    Добрый день! В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь В составе архива сам компонент и пример его использования. FMXUI.zip
  2. 7 likes
    Очень не хватает примеров на C++. Решил поделится опытом. Рассмотрим создание собственного "ListBoxItem"а на C++. И так начнем. Для начало создадим стиль для нашего "ListItem"а. В моем случае оно выглядит так: Структура выглядеть следующим образом: А вы сразу можете создать собственный стиль. Создадим класс для нашего "Item"а. Я назвал его TMyListBoxItem. Нужно знать следующие вещи: ApplyStyle() вызывается когда стиль загружен. FreeStyle() когда стиль выгружен. GetDefaultStyleLookupName() когда стиль не задано берется названые стиля по умолчанию. FindStyleResource("стиль") ищет в стиле ресурс с заданным названием. ListBox автоматически очищает из невидимых "Item"ов стиль что бы избежать от расходы на память. И заново загружает когда оно видимо. При этом вызывается соответствующие функции приведенные выше я приведу только некоторые кусочки кода. Остальное всё можете посмотреть в прикреплённых файлах. class TMyListBoxItem : public TListBoxItem { private: // Переменные для хранения данных System::UnicodeString FTimeTo; System::UnicodeString FTimeFrom; //.... // Визуальные компоненты TText* FTextTimeTo; TText* FTextTimeFrom; //... // Функции для присваивания данных, это нужно при написании "properties" void __fastcall SetTimeTo(const System::UnicodeString Value); void __fastcall SetTimeFrom(const System::UnicodeString Value); protected: void __fastcall ApplyStyle(); void __fastcall FreeStyle(); System::UnicodeString __fastcall GetDefaultStyleLookupName(); virtual void UpdateStyleData(); __published: __property System::UnicodeString TimeTo = {read=FTimeTo, write=SetTimeTo}; __property System::UnicodeString TimeFrom = {read=FTimeFrom, write=SetTimeFrom}; public: __fastcall TMyListBoxItem(System::Classes::TComponent* AOwner); }; Теперь напишем сами функции. void __fastcall TMyListBoxItem::ApplyStyle() { // Вызов метода предка TListBoxItem::ApplyStyle(); TFmxObject *StyleObject; // Поиск ресурса из стиля. Посмотрите в скрине, там есть ресурс с названием "timeto" типа TText StyleObject = FindStyleResource("timeto"); // dynamic_cast нужен для корректного преобразования типов. Если тип найденного ресурса не является TText то указателю будет присвоен NULL FTextTimeTo = dynamic_cast<TText*>(StyleObject); StyleObject = FindStyleResource("timefrom"); FTextTimeFrom = dynamic_cast<TText*>(StyleObject); UpdateStyleData(); } void __fastcall TMyListBoxItem::FreeStyle() { // Стиль выгружен из памяти. Нужно очистить указатели что бы избежать ошибок FTextTimeTo = NULL; FTextTimeFrom = NULL; TListBoxItem::FreeStyle(); } System::UnicodeString __fastcall TMyListBoxItem::GetDefaultStyleLookupName() { // название стиля для нашего "Item"а по умолчанию return "mylistboxitemstyle"; } void TMyListBoxItem::UpdateStyleData() { if(FTextTimeTo) FTextTimeTo->Text = FTimeTo; if(FTextTimeFrom) FTextTimeFrom->Text = FTimeFrom; } void __fastcall TMyListBoxItem::SetTimeTo(const System::UnicodeString Value) { FTimeTo = Value; if(FTextTimeTo) FTextTimeTo->Text = FTimeTo; } Вот и всё. Остается только добавит в наш проект ListBox и button для проверки. Вот функция создания нашего "Item"а: void __fastcall TForm1::Button1Click(TObject *Sender) { TMyListBoxItem *Item = new TMyListBoxItem(this); Item->Parent = ListBox1; Item->StyleLookup = "customstyle1"; Item->TimeFrom = "11:20"; Item->TimeTo = "12:50"; } Скриншот программы: В архиве мой класс и стиль. Для корректного отображения некоторых символов нужен fontcustom Какие вопросы задавайте. Отдельное спасибо Ярославу за мануал на дельфи: http://blogs.embarcadero.com/yaroslavbrovin/2012/10/15/listboxitem_styling_part2/ Администраторы и модераторы, прошу подкорректировать если что то неправильно. ListBoxItem.zip
  3. 5 likes
    Вероятно, вам требуется добавить ссылку на политику конфиденциальности в Консоли разработчика. Делается это так: 1) Заходим в консоль разработчика 2) Выбираем приложение 3) В меню открываем вкладку "Настройка страницы приложения" и жмём по "Описание приложения" 4) Спускаемся в самый низ, там будет раздел "Политика конфиденциальности", вставляем ссылку на страничку/документ 5) Сохраняем и публикуем новые настройки Про GET_ACCOUNTS. Как убрать разрешение: Собираем приложение (Build) Открываем "Проект\AndroidManifest.template.xml", выставляем минимальную и целевую версию СДК. Делаем Clear проекта и снова Собираем приложение (Build) Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем и удаляем строку с разрешением, сохраняем. Делаем деплой и заливаем в консоль. Если нужно оставить разрешение для старых версий АПИ, то можно сделать так: Собираем приложение (Build) Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем, и в строку с разрешением добавляем " android:maxSdkVersion="Версия АПИ" ", версию выбираем исходя из ответа на вопрос "на какой версии АПИ данное разрешение перестало требоваться?", сохраняем. Делаем деплой и заливаем в консоль. Разрешение будет запрашиваться на всех версиях до той (включительно), которую вы указали. Если вам необходимо запрашивать разрешение на версиях АПИ 23 и выше, то необходимо добавить специальный метод в ваше приложение, я максимально упростил эту задачу. Статья с описанием: Добавляем метод onRequestPermissionsResult в приложение. Либа для скачивания:CustomActivityAndListener p.s. Надеюсь, правильно понял ваши вопросы...
  4. 4 likes
    Замечена тендеция (учитывая моих зарубежных друзей), которой, очень странно, даже гуру этого форума подвержены... Все ушли в чат телеграмм - там полный, не ненужный флуд. Ценность форума идет к нулю уже не первый месяц после телеграмма. Вернитесь на форум, а телеграмм, как и любая соц. сеть для флуда - здесь не нужна. Модераторы верните силу этому форуму - убейте телеграмм...
  5. 3 likes
    procedure TForm1.FormCreate(Sender: TObject); var i: integer; aRectangle: TRectangle; aLabel: TLabel; aButton: TButton; begin VertScrollBox1.BeginUpdate; try for i := 1 to 30 do begin aRectangle := TRectangle.Create(VertScrollBox1); aRectangle.Parent := VertScrollBox1; aRectangle.Align := TAlignLayout.Top; aRectangle.Height := 60; aRectangle.Margins.Left := 10; aRectangle.Margins.Top := 15; aRectangle.Margins.Right := 15; aRectangle.TagString := 'Rectangle' + i.ToString; aLabel := TLabel.Create(VertScrollBox1); aLabel.Parent := aRectangle; aLabel.Align := TAlignLayout.Client; aLabel.Text := 'Label' + i.ToString; aLabel.Margins.Left := 10; aLabel.TagString := 'Label' + i.ToString; aButton := TButton.Create(VertScrollBox1); aButton.Parent := aRectangle; aButton.Align := TAlignLayout.Right; aButton.Text := 'Button' + i.ToString; aButton.TagString := 'Button' + i.ToString; aButton.Margins.Top := 5; aButton.Margins.Bottom := 5; aButton.Margins.Right := 10; end; finally VertScrollBox1.EndUpdate; end; end;
  6. 3 likes
    Основные отличия: TImageControl - при клике на нем во время выполнения десктоп-приложения открывается диалоговое окно открытия файла, где можно выбрать картинку для отображения в ImageControl. Отображаемая картинка автоматически масштабируется под размеры контрола. TImageViewer - наследник от TCustomScrollBox и имеет встроенные скроллбары. На десктопах изображение может смещаться с помощью мыши и масштабироваться (колесиком мыши). Также в демках, идущих с RAD, есть пример как масштабировать изображение с помощью жестов на устройствах с тачскрином.
  7. 3 likes
    Тогда стандартные стили Вам не подойдут. Создавайте свой стиль для ListBoxItem на базе стандартного или "с нуля". Тут описано как это можно сделать. Вот подправил пример. Создал mylistboxitemstyle в котором только 2 элемента - text и image. Этот стиль загружен в StyleBook1 и указан в Listbox1.DefaultItemStyles.ItemStyle. Можете редактировать этот стиль прямо в StyleBook, добавляя новые элементы и располагая их как Вам нужно. tstListbox1.rar
  8. 3 likes
    Из стандартных иконку отображают: listboxitembottomdetail, listboxitemleftdetail, listboxitemnodetail, listboxitemrightdetail. tstListbox1.zip
  9. 3 likes
    Библиотека для работы с изображениями находится здесь. Готовится описание.
  10. 3 likes
    Ух... БОЛЬШОЕ ВСЕМ СПАСИБО. Залил в консоль приложение для получения пушей без GET_ACCOUNTS, заодно убрал READ_PHONE_STATE. Без READ_PHONE_STATE пуши приходят нормально... Приложение готово к публикации. Сейчас опубликую - получу отказ от гугла, и буду высылать им разрешающий документ... Со стороны выглядит полным маразмом... Неужели в консоли не могли предусмотреть раздел где можно было бы сразу перед публикацией прикрепить разрешающий документ? Очень странно это все выглядит у гугла, представляю что твориться в магазине apple - две мега корпорации для разработчиков - все для людей... P.S. Автору форума - памятник при жизни! Спасибо.
  11. 3 likes
    Установите - Stylelookup у каждого Item'a - listboxitemnodetail или listboxitembottomdetail Detail - обозначает что появляется еще одна дополнителная текстовая строка, bottom detail переводится как "детали внизу". Добавить текст в нее можно через инспектор - кликните на нужный listitem > ItemData > Detail listboxitemleftdetail - содержит еще одну текстовую панельку справа, которая перекрывает основной текст. Вы можете сделать эти пункты в своем стиле - добавить туда визуальные компоненты, такие как Tswitch, кнопки итд. Для этого, - Нажмите правой кнопкой мыши (ПКМ) по листбоксу - Add ListBoxitem, выберите для этого Item'a нужный стиль, в Stylelookup, на основе которого хотите сделать свой. Далее, ПКМ по Item - Edit Custom Style. Выделите в инспекторе ListBoxItem1Style1 - это ваш новый стиль, можете переименовать его в StyleName на нужное вам имя. Это имя потом указывайте в StyleLookup каждого item'a. Теперь можно переносить мышкой компоненты на этот шаблон. Имена меняйте в StyleName. По этим именам потом можно обращаться к ним таким образом: vItem.StylesData['descript'] := 'text'; vItem.StylesData['details'] := 'Text'; vItem.ImageIndex := 5; Чтобы отображался картинка при помощи ImageIndex в таком собственном Item е - нужно кинуть TGlyph и назвать Stylename как 'glyphstyle'. TListBox довольно медленный компонент, и нужен в основном для небольших списков (напр. настройки) или там, где используются Items с контролами. Для динамических списков используйте TListView.
  12. 3 likes
    ListView1.Items[0].Text := 'Сменим текст для Itema под индексом 0'; В ListView нельзя скрывать отдельные Item'ы
  13. 2 likes
    Не надо ничего удалять, мало ли кому нибудь пригодится...
  14. 2 likes
    Ошибка найдена. Из манифеста пропала строка: <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" /> куда делась ума не приложу... делалось строго все по пунктам из статьи и эта строка была в начале разработки добавлена. Может С++ билдер ее как-то убил... Снова добавили собрали проект с новой версией - есть пуши и когда приложение выгружено. Сейчас все нормально.
  15. 2 likes
    Проблему определили в чате телеграма, заключается она в том, что разработчики MIUI 8.2.10 опять изменили обработку разрешений.
  16. 2 likes
    у картинок нужно убрать HitTest, но тогда картинки не будут получать сообщения тапа/мыши варианты: использовать TListView выключить HitTest у картинок и в событии TListBox определять позицию картинки по координатам тапа/мыши и выполнять действие
  17. 2 likes
    нельзя удалять себя из обработчика себя нужно запустить TTask.Run(procedure begin TThread.Synchronize(procedure begin ваше действие с компонентом end) end);
  18. 2 likes
    Понимаю, что опоздал почти на два года, но все же, для истории и новичков )))
  19. 2 likes
    Не знаю есть ли такое решение в намерениях но как альтернатива - копии в переменную количество созданных уведомлений , при появлении дубликата гаси ранее созданное и в заголовке нового уведомления выводи общее количество. В примерах где то видел подобное. Если закрыто апк поднимай сервер
  20. 2 likes
    В Berlin и Tokyo AddFontResource и RemoveFontResource прекрасно отрабатывают, только вызывать их надо до Application.Run. Кстати, лучше использовать AddFontResourceEx и RemoveFontResourceEx с флагом FR_NOT_ENUM - тогда надобность в SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) отпадает.
  21. 1 like
    Да. Если не хотите менять стандартные стили, то лучше использовать ListView c плиточным отображением, о котором писал Равиль в первом посте. Тем более, что в Ваших объявлениях (айтемах) должно отображаться много других полей. Возможно, Вы сами сможете сделать такой вывод, ознакомившись с ранее обсуждавшимися темами:
  22. 1 like
    вместе со студией идёт демка ScrollableForm, делайте по аналогии
  23. 1 like
    это может зависеть от производителя девайса
  24. 1 like
    проект который я опубликовал без этого разрешения. специально сделал, чтобы найти причину
  25. 1 like
    Евгений Корепов где-то давал ссылку как писать эту политику и даже сайт свой предлагал для ее размещения
  26. 1 like
    ну, несложно написать несколько строк стандартной политики тем более READ PHONE STATE нужно почти всем. я даже думаю, что оно там по умолчанию всегда есть.
  27. 1 like
    оно то работает) тут же вся соль в том что "не работает" когда опубликуется приложение. сегодня вечером снова залью приложение. модеры ругаются на значок (типа собственность firemonkey, бла-бла-бла) я хотел у тебя спросить, видать твой лаунчер так делает я ждал ответа, переживал покушал ты или нет
  28. 1 like
    В Firebase я делал для Debug и Release версий разные проекты, название пакета одно и то же. Сервис генерит разные 4 ключа (по 2) для них и эти ключи вставляю в Version Info (Release и Debug опции) и второй ключ (номер) - нужно использовать в коде для регистрации. Md хэш программы на сайте Firebase (там где указывается имя пакета) я не указывал, хотя там есть эта опция.
  29. 1 like
  30. 1 like
    В плеймаркете проект файрбейс подключён?
  31. 1 like
    для навигации по форуму существуют разделы, если все будет копиться в одной теме или разделе (ака флуд или общее или разное, не важно), то число возмущенных (которые не смогут найти ответ в !правильном! разделе) будет в разы больше. я уверен что потом будет та же история что была в чате. будем или нас будут просить переносить вопросы и ответы в правильный раздел. так что не превращайте форум в мусорку
  32. 1 like
    Вам потому никто и не отвечает, что C++ никто не копал и не поддерживал. И ошибок в нем больше чем в делфи, и поддержка еще хуже. На делфи, да, с модифицированным сервером из статьи, у меня тоже опубликованное и рабочее приложение на андроид и иос. Собственно, это вам и написали все и ранее и сейчас. Firebase тоже странно ругать. Это средство "от производителя". И я не верю, что там есть до сих пор насколько-либо крупные проблемы. Ну и студия к ним вообще никакого отношения не имеет. Это все так. офф
  33. 1 like
    А зачем с мобильного это делать? Сел за PC, перед или после работы и написал. Тем более что с мобильного отвечать можно только на простые разговоры. На сложные вопросы - нужен PC чтобы найти нужный материал, порыться в хелпе, написать код итп. Писать код с мобильного то еще извращение. Но конечно нужно чтобы админ сделал шаг навстречу и сделал соответсвующий раздел или одну единую тему (Флудильня). @Anatoliy Delphi конечно более развит чем С++, и по Firemonkey там больше материала. Я когда делал пуши, у меня не было проблем, я кстати вам давал ссылку на мой готовый код php. Есть детальная статья Равиля, делал пуши на основе серсива Google Firebase.
  34. 1 like
    Лена помогла мне с провизион профайл, причем сообщила, что ZuBy ей помог... Из переписки понял, что ей уже не интересно дальнейшая работа с RAD. Сплошной глюк, с ее слов. Но я борясь и надеюсь на лучшее!!!
  35. 1 like
    Переписал приложение с нуля, первое сообщение обновлено. Буду благодарен за тесты и сообщения о найденных неполадках
  36. 1 like
    форум не умер, а замер. ибо все что есть обсудили, Токио отстой, а новую версию эмро выкатит неизвестно когда
  37. 1 like
    Подскажите еще одну вещь на C++: Для Delphi все понятно, ListView c DynamicAppearance выглядит так: with ListView.Items.Add do begin ImageIndex := 0; Data['ProductNameText']:='Имя продукта'; Data['ProductDescriptionText']:='Описание продукта't; Data['ProductPriceText']:=FloatToStr(PriceProduct)+' цена продукта.'; Data['ProductImage']:= I; //Изображение Картинки с ImageList взял пример из другого вопроса. А вот как на С++ добавлять данные в ListView когда он в DynamicAppearance ума не приложу .... Делаю так, но не правильно: TListViewItem* item = MainForm->ListOb->Items->Add(); item->Data["Text4"] = "Text"; Ошибка. Ткните в пример плиз. В примерах для С++ не разобран для dynamicapperance как добавлять данные. Заранее спасибо!!!
This leaderboard is set to Москва/GMT+03:00