Таблица лидеров


Популярный контент

Показан контент с высокой репутацией за 16.07.2018 в Сообщения

  1. 4 балла
    есть более интересный и по-мне, более правильный способ по нажатию в меню не сразу выполняете что-то, а ЗАПИСЫВАЕТЕ действие, которое ВЫПОЛНИТСЯ по событию закрытия мультивью тогда реакция наступает визуально правильная и дальше крутите колеса, запускайте потоки и все такое
  2. 3 балла
    x11

    Ориентация SDK на Android 8 и выше

    Надеюсь, что кому-нибудь пригодятся статьи о том, как сделать приложение с поддержкой новых версий Андроида: Ориентация на Android 8 и выше http://delphiworlds.com/2018/05/targeting-android-8-and-higher/ http://delphiworlds.com/2018/06/targeting-android-8-and-higher-continued/
  3. 3 балла
    Gingercat

    Embarcadero.... Community Edition!

    Доброго времени суток, уважаемые. Случилось то, чего не должно было случиться в принципе (нет, инопланетяне не прилетели, хотя вероятность произошедшего несравненно ниже) - Embarcadero выпустили БЕСПЛАТНУЮ версию Community Edition, как я понимаю, с поддержкой мобильных платформ 😮😮😮😮😮😮. Видать грядет всемирный потоп) может есть ссылка на форуме, я не нашел, посему оставлю тут https://community.embarcadero.com/blogs/entry/introducing-delphi-cplusplusbuilder-community-edition P.S - ушел искать волка в лесу, ну который помер, согласно пословице)
  4. 3 балла
    r@di0

    Специальные разрешения

    Вы вообще пробовали приведенный код? Он не имеет отношения к WakeLock, а как раз добавляет приложение в WhiteList. Если Вы хотите сделать "неубиваемое" приложение, то Вам не получится обойтись каким-то легким решением. Особенно если приложению необходимо использовать сеть. Почитайте про doze mode. Можете ещё посмотреть эту статью: http://delphiworlds.com/2018/01/monitoring-location-updates-on-android/ Там предпринята попытка сделать подобное "неубиваемое" приложение.
  5. 2 балла
    Первые пробы портирования существующего приложения с FMX на FGX. За основу был выбран классный проект Станислава Ихнатовича из Беларуссии с мобильным расписанием, отличающийся от других продуманным интерфейсом и детальной шлифовкой UI. Станислав любезно предоставил исходные коды своего проекта. Предлагаю вам ознакомиться с первым наброском его приложения на базе FGX. Обратите внимание, на сколько удобно идет создание стиля расписания пары, сделанного на базе компонента TfgCollectionView. В дизайн тайме созданы три варианта стилей без единой строчки кода для отображения расписания одной пары в разных исполнениях. Используя всю мощь FlexBox, удается достигнуть разнообразных вариантов "резинового" выравнивания контролов. А связь с данными не размазывается по коду, а сосредоточена вся в одном месте. Меню навигации сделано на базе нового компонента TfgListMenu без единой строчки кода, за исключением обработчиков нажатия на пункты меню и открытия отдельных форм, которым отведена роль отображения экранных страниц. Отдельно стоит указать, что специально для данного мобильного приложения была расширена возможность задавать задний фон контролов на базе картинки. А также были расширены возможности отображения и выравнивания форм относительно других. Так например форму можно встроить в любой контрол контейнерного типа, как фрейм. Или же просто отобразить форму, как всплывающее окно. P.S. Портирование приложения на FGX Native находится на стадии разработки. Screenrecorder-2018-05-28-00-54-39-998.mp4
  6. 2 балла
    wamaco

    Embarcadero.... Community Edition!

    Расскажу про себя. Я купил Delphi Professional за 86 тыщ. Окупилась с первого заказа. Срок выполнения заказа 2 недели. Плюсы покупки - поддержка, обновления, спокойствие. Если бы для себя развлекаться то Community! Поэтому о чем собственно разговор, мне непонятно. P.S. Иногда покупать ПО очень не страшно!
  7. 2 балла
    Gingercat

    Embarcadero.... Community Edition!

    Со всем уважением, но фраза "разработке электроники получаю кратно больше" как бы спрашивает - вы их принципиальных убеждений не покупаете полную версию? Хотя "софтовые проекты пишу только на qt " - мсье знает толк в извращениях, и к слову, у них, после последнего апдейта лицензирования (там и так был полный караул с лицензированием) далеко не все так гладко - ограничений не меряно. И подписка (новшество) далеко не самая дешевая, или вы оплачиваете подписку? Для меня отсутствие возможности покупки, а только оставленная странная подписка в Qt, была последним гвоздем в их крышку гроба. Я согласен с тем, что багов и тд в абракадабре с головой - тут готов в голос орать про их криворукость и лень. Но вам, если вы действительно сталкиваетесь с продажами (я сужу не только по своему опыту) должно быть известно - человек, возмущающийся по поводу цены и за бакс не купит - это уже психологиия, такие прямиком в черный список едут.
  8. 2 балла
    Gingercat

    Embarcadero.... Community Edition!

    Неее братцы, с таким настроением слона не продашь. Судя по заметке с их же блога, это вполне не обрезанная версия. Я давно скрестил vs c++ и абракадабру, но новость, хоть и запоздавшая лет так на надцать, не может не радовать.
  9. 2 балла
    Не используйте эффекты на мобилах, нигде и никогда, если планируете запускать приложение в массы. эффекты дают артефакты
  10. 2 балла
    Я бы сам присоединился к такому вопросу. Советовать не стану, расскажу лишь как мы сделали. Иконки для кнопок, их цвета и прочее что относится к внешнему виду/интерфейсу мы вставили в стили, конкретнее - прямо на битмап темы приложения. Изображения же, типа там фоток, примеров из "что нового" вставили в imageList, причем все используемые imageList вынесены в отдельный DataModule. Мы получаем только текст и сразу парсим, соотв. храним в оперативке, нам нет смысла писать на диск. Тут можно разводить холивары. Мы перенесли опыт настольной разработки - создаем формы по мере необходимости. Плюс очевиден, но он же автоматически имеет и минус - когда вам эта форма понадобится, ее создание занимает время, и иногда это заметно. В целом у нас одна главная форма с табконтролом и отключенными вкладками, по мере необходимости мы переключаем табы и их порядок, это позволяет анимировать переходы с одной "формы" т.е. вкладки на другую. Ембаркадеро советует использовать object.DisposeOf() вместо object.Free() так и делаем. Минусов не обнаружили (или не заметили). Попробуйте поэкспериментировать с другими контролами, ListView или ListBox. Они все позволяют использовать стили для элементов списка (имхо, могу ошибаться). Мы используем TListBox (что не рекомендуется данным форумом) и кидаем стили на элементы списка (лид сказал оставляем так, потом будем решать). Ну, это не запрещено))) Попробуйте дженерики, удобная фича. Пример нужен? PS. это все имхо, я с удовольствием послушаю коллег.
  11. 2 балла
    Это для совсем простеньких случаев, когда классу потока не нужны поля, методы и все такое. TTask.Run ничем не отличается от этого А для более продуманных вещей потомки TThread по-прежнему рулят
  12. 2 балла
    Лучше не наследоваться в отдельный класс от TThread, как это делалось раньше в Delphi. Это громоздкий и запутанный код. Лучше используйте анонимные потоки. Вот вам шаблон: http://blog.marcocantu.com/blog/2014_may_background_delphi_android_threads.html TThread.CreateAnonymousThread( procedure begin // выполняется в потоке TThread.Queue(nil, procedure begin /// выполняется в главном потоке, когда завершиться анонимный поток. end); end ).Start; procedure TForm5.Button3Click(Sender: TObject); begin TThread.CreateAnonymousThread(procedure () begin // выполняется в потоке TThread.Synchronize (TThread.CurrentThread, procedure () begin // выполняется в главном потоке, но при этом анонимный поток еще продолжит работать, но сейчас приостановлен end); end).Start; end; И помните что с элементами GUI нельзя работать из другого потока, только из главного ( TThread.Queue, TThread.Synchronize). Иначе будет Access Violation, который будет выскакивать случайным образом.
  13. 2 балла
    gateofdenied

    Данные из ClipBoard с форматированием

    В общем разобрался. Вдруг кому пригодится procedure TForm1.Button1Click(Sender: TObject); var buf: array[0..60] of Char; n: Integer; fmt: Word; H: THandle; P: PAnsiChar; S:UnicodeString; begin for n := 0 to Clipboard.FormatCount - 1 do begin fmt := Clipboard.Formats[n]; Clipboard.Open; if GetclipboardFormatName(fmt, buf, Pred(Sizeof(buf))) <> 0 then begin begin H := Clipboard.GetAsHandle(fmt); P := GlobalLock(H); S:=UnicodeString(P); Memo1.Lines.Add(P); GlobalUnlock(H); end; end; Clipboard.Close; end; end;
  14. 2 балла
    Спасибо большое! Это именно то что нужно, а я уже тут начал менять стандартный модуль FMX.Platform.Win, но ваш способ проще и красивей
  15. 2 балла
    r@di0

    Специальные разрешения

    Такое поведение на Андроиде с 5 версии. function GetPowerManager: JPowerManager; var PowerServiceNative: JObject; begin PowerServiceNative := TAndroidHelper.Context.getSystemService (TJContext.JavaClass.POWER_SERVICE); if not Assigned(PowerServiceNative) then raise Exception.Create('Could not locate Power Service'); Result := TJPowerManager.Wrap((PowerServiceNative as ILocalObject) .GetObjectID); if not Assigned(Result) then raise Exception.Create('Could not access Power Manager'); end; //Intent: JIntent; if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin pw := GetPowerManager; if Assigned(pw) then if not pw.isIgnoringBatteryOptimizations (StringToJString('ВАШ ПАКЕТ')) then begin Intent := TJIntent.Create; try Intent.setAction (TJSettings.JavaClass. ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); Intent.setData(TJnet_Uri.JavaClass.parse (StringToJString('package:ВАШ ПАКЕТ'))); TAndroidHelper.Context.startActivity(Intent); except on e: Exception do fgToast(e.Message, 3); end; end; end;
  16. 2 балла
    Fedor K

    JAVA и Delphi

    @Pavel M, Судя по вашей обертке класса и самой JAR: Нужно удалить все не статические методы из описания интерфейса наследуемого от JObjectClass: JUserClass = interface(JObjectClass) ['{A4B29440-8C8B-4C1F-A8E7-B7612D4FEEB4}'] function init(uuid : JString; secondName : JString; firstName : JString; inn : JString; phone : JString; pin : JString; roleUuid : JString; roleTitle : JString) : JUser; cdecl; overload; function init(uuid : JString; secondName : JString; firstName : JString; phone : JString; pin : JString; roleUuid : JString; roleTitle : JString) : JUser; cdecl; overload; end; У класса User нету конструктора по умолчанию, поэтому вызов такого кода вызовет ошибку: //неправильный вариант с ошибкой TestClass := TJUser.Create; //правильный вариант TestClass := TJUser.JavaClass.init( StringToJString('uuid'), StringToJString('secondName'), StringToJString('firstName'), StringToJString('phone'), StringToJString('pin'), StringToJString('roleUuid'), StringToJString('roleTitle') ); Если к проекту подключаете любые JAR файлы, то следите, чтобы вместе с ними были подключены и все остальные .jar библиотеки с классами, на которые ссылаются исходники. Например, в Вашем примере при вызове вышеприведенного конструктора первым делом выскочит ошибка: Вам нужно найти все такие подключения и найти сборки, в которых они валяются: Если в проекте в Android Studio включено копирование всех сторонних библиотек в папку libs, то после компиляции всего преокта практически все либы можно найти: папка libs; output папке проекта; папка Android SDK. п.с. Тему лучше перенести в раздел Android, так больше шансов получить помощь.
  17. 2 балла
    Первый вариант нового компонента TfgCollectionView имеющий потрясающие возможности по гибкому созданию любого списка. Гибкий, как FMX TListBox и гораздо быстрее TListView. Создавайте любое количество стилей отображения элементов списка из любых компонентов FGX. А затем просто связывайте, какой стиль должен использовать тот или иной элемент списка. На приведенном ниже скриншоте и видео, вы можете наблюдать прокрутку списка из 100 элементов, написанного без единой строчки кода. Но это еще не все, полностью каркасная архитектура компонента позволяет создавать различные варианты размещения элементов. Начиная от отображения в строку, в столбец, по сетке и заканчивая своим кастомным размещением элементов. Поразительная скорость работы достигается за счет отображения только видимых элементов. Screenrecorder-2018-03-26-01-52-41-383.mp4
  18. 1 балл
    Приветствую, Отвечая на вопрос насколько хороша подача материала в курсе "FireMonkey cтили" и подойдёт ли она именно Вам, предлагаю ознакомиться с парой уроков непосредственно из курса. Уроки достаточно большие, около 25 минут каждый. Но тем не менее имеет смысл их внимательно просмотреть, даже если вы не собираетесь вписываться в коучинг группу на льготных условиях, запись в которую приоткрыто сейчас всего на 2 дня, в честь дня знаний, на 1 и 2 сентября. Урок 1. Введение в концепцию стилей. В этом уроке мы начинаем изучение стилей в FireMonkey с аспектов создания кроссплатформенной библиотеки с точки зрения внешнего вида. Разбираемся, какими способами можно реализовать отображение внешнего вида компонентов. Выявляем отличия концепций скинов и стилей. Учимся применять стили к компонентам. Урок 11-1. Обзор структуры стилей компонентов FireMonkey. Первая часть дополнительного урока, записанного по просьбе обучающихся. В данном уроке рассматриваем структуру стилей половины компонентов FireMonkey. Изучаем из каких объектов и каких классов может состоять стили компонентов. С уважением, Ярослав Бровин.
  19. 1 балл
    Barbanel

    Регулярное выражение для сайта...

    Отрендерьте текст в битмап ))))
  20. 1 балл
    Barbanel

    IOS: Exception class 6

    А в симуляторе работает?
  21. 1 балл
    Может стоит забить на парсинг html, а использовать специально созданный для таких целей rss интерфейс https://zadolba.li/rss ? Там вам все отдается в xml и чудесно раскладывается по полочкам штатными средствами
  22. 1 балл
    Mars M

    Настройки SDK для Токио

    В SDK Manager оставляешь всё как есть, идешь в c:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\ Там запускаешь SDK Manager.exe, обновляешь/устанавливаешь всё что он предложит. После устанавливаешь Android SDK build-tools 22.0.1 И в принципе всё. Если будет ошибка при компиляции то в Environment Variables > BDSPLATFORMSDKSDIR указываем правильный путь до SDK - C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs Если всё равно ошибка то в Environment Variables > Path вместо C:\ProgramData\Oracle\Java\javapath указываем прямой путь до Java(к примеру C:\Program Files\Java\jdk1.8.0_60\bin)
  23. 1 балл
    mazayhin

    Окно на переднем плане во время звонка

    Как создавать это вью или как им созданным пользоваться? Если создавать - то создаете разметку в xml, деплоете ее в layouts. Примеров в интернете можно кучу найти. Остальное - в другие папки. В общем, получится во так. Здесь задеплоено 3 файла - картинка res/drawable/myicon.png, res/drawable/border.xml - прямоугольник подложки и res/layouts/toast.xml - сам lauoyt. toast.xml ("-- " - комментарии, удалить надо будет). Текст, картинки и прочее можем сразу указать в разметке, и грузить автоматически. Но всегда сможем поменять в коде border.xml Думаю, тут все понятно. Примитив может быть любой. И формируем тост: //uses FMX.Helpers.Android, AndroidApi.Helpers, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Widget var Toast: JToast; InfObj: JObject; Inflater: JLayoutInflater; View: JView; Text: JTextView; begin InfObj := TAndroidHelper.Context.getSystemService (TJContext.JavaClass.LAYOUT_INFLATER_SERVICE); Inflater := TJLayoutInflater.Wrap((InfObj as ILocalObject).GetObjectID); View := TJView.JavaClass.init(TAndroidHelper.Context); View := Inflater.inflate(TAndroidHelper.Context.getResources() .getIdentifier(StringToJString('layout/toast'), StringToJString('layout'), TAndroidHelper.Context.getPackageName), nil); //Грузим из ресурсов. Второе значение всегда nil Text := TJTextView.Wrap ((View.findViewById(TAndroidHelper.Context.getResources() .getIdentifier(StringToJString('id/toastText'), StringToJString('id'), TAndroidHelper.Context.getPackageName)) as ILocalObject).GetObjectID); // Так ищем элементы разметки, если надо свои значения поставить. Так же могли и поменять картинку(id/toastImage), подложку и т.д. Text.setText(StrToJCharSequence('Привет, х11! Я нативный Toast!' + #13 + 'Сегодня пишем на Pascal')); //Устанавливаем свое значение. CallInUIThreadAndWaitFinishing( //В сервисе запускаем без этого, отключаем FMX.Helpers.Android - только его, GraphicsContentViewText к графике, которая ломает сервис, отношения не имеет. procedure begin Toast := TJToast.JavaClass.init(TAndroidHelper.Context); Toast.setView(View); // Своя вьюшка Toast.setDuration(TJToast.JavaClass.LENGTH_LONG); //Константа. Свое значение не пройдет Toast.Show; //Показываем end); end; Ну и все в принципе. Сложного, считаю, 0. А что не понятно, яндекс показывает, глаза разбегаются.
  24. 1 балл
    Это сообщение 2014 года
  25. 1 балл
    Есть небольшой проект с горизонтальным режимом в статье, если не получится реализовать, то помогу http://blog.rzaripov.kz/2016/11/1-modernlistview.html
Эта таблица лидеров рассчитана в Москва/GMT+03:00