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

bigjorj

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

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

  • Посещение

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

    13

Активность репутации

  1. Like
    bigjorj получил реакцию от Прикладной в Студия не видит zipalign.exe   
    C:\Program Files (x86)\Embarcadero\Studio\18.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1
  2. Like
    bigjorj отреагировална Brovin Yaroslav в Образовательная программа Embarcadero   
    Компания Embarcadero начинает новую образовательную программу. Целью  программы является предоставление бесплатного доступа к средствам разработки RAD Studio, Delphi, C++Builder  для государственных школ и университетов.
    В рамках программы школа или университет может получить:
    до 15 лицензий RAD Studio Pro для использования в учебном классе с подпиской на обновления.  Срок действия - один год. Тип лицензии - Concurrent. до 100 лицензий RAD Studio Pro для студентов/школьников для использования дома для выполнения домашних заданий. Тип лицензий - Workstation. Срок действия - 9 месяцев. Подписка на обновления также включена. Условия продления лицензий и подписки будут определены позднее.
    Лицензии в данной программе образовательные. Они позволяют использовать продукты только в целях обучения программированию. Любая разработка, в том числе коммерческая, некоммерческая, научная или выполнение внутренних разработок по автоматизации школы/университета с помощью этих лицензий запрещена.
    Для участия в программе образовательное учреждение должно заполнить форму, подготовить письмо об образовательном использовании   и оправить ее в Embarcadero. Для участия в программе требуется прохождение минимальной квалификации и одобрения заявки со стороны компании Embracdero. Также для участия в программе образовательное учреждение обязуется разместить на своем сайте лого Образовательного партнера Embarcadero. Образец лого будет предоставлен позднее.
    Образовательный прайс-лист сохраняет свое действие. Если учебному заведению нужны постоянные лицензии, большее число лицензий или лицензии другого типа или на другую редакцию продукта, а также если заказчик не попадает в категории "государственная школа" или "государственный  университет", то он может воспользоваться действующим прайс-листом.
    Вложения:
    EDU_Licence_EMBT_Programm 2016.doc
    Embarcadero Academic Program Release 8-24-16 RU.DOCX
    RU Academic License Order Form 070916 .xlsx
  3. Like
    bigjorj отреагировална Brovin Yaroslav в С днем рождения!   
    Большое всем спасибо за поздравление! Приятно слышать :-)
  4. Like
    bigjorj отреагировална Vitaldj в WEB установка RAD Studio   
    Надо! В абракадабре, кто занимается этой частью, да простит меня Ярослав, лентяи. + Еще это связано с особенностями самой студии.
  5. Like
    bigjorj отреагировална Brovin Yaroslav в WEB установка RAD Studio   
    Как владелец данного ресурса, и человек в отпуске (не на работе), с вами полностью согласен :-)
  6. Like
    bigjorj отреагировална Vitaldj в Как Вы используете RAD Studio   
    Я использовал ранее только для себя.  Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
  7. Like
    bigjorj отреагировална krapotkin в Потоки рушат приложение.   
    не было багов в Thread. я плавно переползал от версии к версии начиная с XE7
    что-то с кодом...
     
  8. Like
    bigjorj отреагировална krapotkin в Крякнутая версия XE8   
    наш главный сказал, что достаточно начать работу рассматривать как призвание и в душе у вас опять будет гармония.
    70 на четверых и в регионе в этом году перестало хватать (((
  9. Like
    bigjorj отреагировална Gingercat в Вызов функции из DLL. Зависает при Release режиме компиляции   
    Доброго дня. Было нечто подобное, подробностей уже и не помню, но - как собирается Dll в релизе и в дебаге? Имеется ввиду статическая или динамическая линковка. Если они разные, то при работе с динамическим рантаймом все нормально, а вот когда собираете статически - вылазит ошибка - может чего переоптимизирует, или версии рантайма отличаются.
    Или попробуйте, чем черт не шутит, сменить соглашения о вызове, на cdecl к примеру
  10. Like
    bigjorj отреагировална Равиль Зарипов (ZuBy) в Window in Panel   
    ну сделать также как в VCL
    procedure TForm4.Button1Click(Sender: TObject); var aHandle: THandle; begin // uses Winapi.Windows, FMX.Platform.Win aHandle := FindWindow(nil, PChar('VIKI ADMINISTRATOR')); Winapi.Windows.SetParent(aHandle, WindowHandleToPlatform(Self.Handle).Wnd); end;
    нужно помнить что Handle имеет только форма, в отдельные компоненты нельзя поместить
  11. Like
    bigjorj отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    В начале пару новостей: 
    Репозиторий клонируется также на ГитХаб. Можно устанавливать с помощью Delphinus'a Бот калькулятор для Telegram.
    А сейчас мы напишем своего бота, который сможет решать арифметические выражения(и не только).
    Что для этого нужно:
     Telega π - Библиотека для работы с Telegram Bot API в Delphi TeeBI После установки библиотек свыше - создаем новое консольное приложение. Далее создаем новый модуль(unit) и называем его, например, Telegram.Plugin.Calculator
    В этом модуле мы будем писать логику калькулятора, а точнее взаимодействие команд от пользователя и модуля выражений BI.Expression(TeeBI).
    Для наглядности, сразу код модуля:
    unit Telegram.Plugin.Calculator; interface uses TelegAPI.Bot, TelegAPI.Types, TelegAPI.Utils, TelegAPI.Module; Type TTgCalculatorBot = Class(TTgModule) private FIsCommandWait: Boolean; protected procedure OnUpdate(Sender: TObject; Const Update: TtgUpdate); override; End; implementation uses BI.Expression, System.SysUtils; { TTgWelcomeBot } procedure TTgCalculatorBot.OnUpdate(Sender: TObject; const Update: TtgUpdate); var Cmd: TCommandHelper; Procedure Calculation; var TextExpr: String; Begin FIsCommandWait := False; if Cmd.ParamCount = 0 then TextExpr := Update.Message.Text else TextExpr := Cmd.ParamsToString; try (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, TExpression.FromString(TextExpr).Value); except on E: Exception do (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'упс, ошибочка вышла: ' + E.ClassName + ' ' + E.Message); end; End; begin Cmd := TCommandHelper.Create(Update.Message.Text); try if Cmd.Command = '/calc' then Begin if Cmd.ParamCount = 0 then Begin FIsCommandWait := true; (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'ожидаю выражение:'); End else Begin Calculation; End; End else if FIsCommandWait then Begin Calculation; End; finally Cmd.Free; end; end; end. Первое на что обращаем внимание -  наш класс TTgCalculatorBot  будет наследоваться от TTgModule, в котором заложен базовый функционал для расширения функционала бота(на данный момент только получение обновлений от сервера).
    В метод OnUpdate будут поставляться обновления, которые приходят от сервера, в нем мы и будем работать. 
    Насчет поля FIsCommandWait. Уж так сложилось - что, как правило, пользователь сразу отправляет боту команду - а потом параметры. Поэтому, если придет поддерживаемая модулем команда - мы устанавливаем это поле в True. Если это поле - правда - значит нужно обработать текст.
    Теперь вернемся к нашему консольному приложению:
    program CalculatorBot; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils, Telegram.Plugin.Calculator in 'Telegram.Plugin.Calculator.pas'; Const C_PAUSE_UPDATE = 1000; { 1sec. } Var TelegramBot: TTelegramBot; TelegramCalc: TTgCalculatorBot; Procedure InitRecesive; var Offset: Integer; Updates: TArray<TtgUpdate>; Update: TtgUpdate; Begin Offset := 0; while True do begin Sleep(C_PAUSE_UPDATE); // Update pause Updates := TelegramBot.getUpdates(Offset); // Get updates if Length(Updates) = 0 then Continue; Offset := Updates[High(Updates)].ID + 1; end; End; begin WriteLn('Telegram Calculator Sample'); { Here you Api key } TelegramBot := TTelegramBot.Create({$I ..\telegaToken.inc} ); TelegramCalc := TTgCalculatorBot.Create(TelegramBot); try WriteLn('Bot token: ', TelegramBot.getMe.ID <> -1); InitRecesive; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; TelegramBot.Free; TelegramCalc.Free; end.   TelegramCalc := TTgCalculatorBot.Create(TelegramBot); - во время создания модуля - происходит подписка на сообщения от сервера. Никаких данных программисту передавать не нужно. 
    Далее, что бы консоль сразу же не закрылась - нужно зациклить прием данных от сервера. Пример - в процедуре InitRecesive.
    Что получаем в итоге:

     
    Так же можете сами протестировать бота(если он конечно будет запущен): @test_delphi_api_bot
    Готовый пример: https://bitbucket.org/uasoft/telegapi/src//examples/PluginCalculator/?at=master
  12. Like
    bigjorj отреагировална Евгений Корепов в Вызов функции из DLL. Зависает при Release режиме компиляции   
    Поиграйтесь с опциями компилятора, возможно в релизе оптимизация или еще что влияет. Я как то бился над подобной проблемой несколько дней, выяснилось что включение оптимизации выполняло один из циклов for задом наперед ;-)
  13. Like
    bigjorj получил реакцию от Brovin Yaroslav в Акция: Berlin 10.1 C++ Builder Starter БЕСПЛАТНО   
    Сегодня пришло письмо:
    При переходе по кнопке http://s608.t.en25.com/e/er?s=608&lid=10794&elqTrackId=f80d5b97a3cc48c28f90aaed1e2dc819&elq=54d9956eaf6b4a1fa88e9a3ffb3f2c8b&elqaid=18067&elqat=1
    Мы попадаем на наш магазин от Allsoft и ничего. НО
    Если зайти по ссылке через прокси (я заходил через американский), то можно добавить товар в корзину по цене 0, заполнить реквизиты платежа, и вуаля. Пришла лицензия на Starter на почту с подтверждением успешной покупки за 0 рублей. 
    Пробуйте. 
    p/s Я не знаю легально ли это, но письмо пришло на мой электронный адрес, значит я имею право на получение лицензии по 0 руб.
      One day only! 100% Discount on C++Builder Starter Edition The Starter Edition of C++Builder 10.1 is the best way to ramp up and build high-performance C++ apps for Windows. C++Builder Starter includes an intuitive and powerful IDE, code editor, and debugger. Friday, June 17 is the only one chance to get our starter version of C++Builder at a 100% DISCOUNT. Don’t miss out! GET C++BUILDER NOW You get hundreds of visual components with this edition. It is a full-service development environment, complete with a multi-device designer and native controls to customize a UI for each platform. Speed up your development tasks with FireUI App Preview. Easily switch from the form designer to views of your app on iOS, Android, OSX, and Windows targets.

    This is not a trial. C++Builder Starter is a fully-functional basic edition, and we are offering a 100% Discount for one day only. When you’re ready, you can upgrade to the Pro version to build on more platforms (such as Windows 64-bit, iOS, Android, and OS X 32-bit), and also get access to all of the database components and drivers.  
  14. Like
    bigjorj получил реакцию от master webs в Акция: Berlin 10.1 C++ Builder Starter БЕСПЛАТНО   
    Сегодня пришло письмо:
    При переходе по кнопке http://s608.t.en25.com/e/er?s=608&lid=10794&elqTrackId=f80d5b97a3cc48c28f90aaed1e2dc819&elq=54d9956eaf6b4a1fa88e9a3ffb3f2c8b&elqaid=18067&elqat=1
    Мы попадаем на наш магазин от Allsoft и ничего. НО
    Если зайти по ссылке через прокси (я заходил через американский), то можно добавить товар в корзину по цене 0, заполнить реквизиты платежа, и вуаля. Пришла лицензия на Starter на почту с подтверждением успешной покупки за 0 рублей. 
    Пробуйте. 
    p/s Я не знаю легально ли это, но письмо пришло на мой электронный адрес, значит я имею право на получение лицензии по 0 руб.
      One day only! 100% Discount on C++Builder Starter Edition The Starter Edition of C++Builder 10.1 is the best way to ramp up and build high-performance C++ apps for Windows. C++Builder Starter includes an intuitive and powerful IDE, code editor, and debugger. Friday, June 17 is the only one chance to get our starter version of C++Builder at a 100% DISCOUNT. Don’t miss out! GET C++BUILDER NOW You get hundreds of visual components with this edition. It is a full-service development environment, complete with a multi-device designer and native controls to customize a UI for each platform. Speed up your development tasks with FireUI App Preview. Easily switch from the form designer to views of your app on iOS, Android, OSX, and Windows targets.

    This is not a trial. C++Builder Starter is a fully-functional basic edition, and we are offering a 100% Discount for one day only. When you’re ready, you can upgrade to the Pro version to build on more platforms (such as Windows 64-bit, iOS, Android, and OS X 32-bit), and also get access to all of the database components and drivers.  
  15. Like
    bigjorj получил реакцию от Rusland в Акция: Berlin 10.1 C++ Builder Starter БЕСПЛАТНО   
    Сегодня пришло письмо:
    При переходе по кнопке http://s608.t.en25.com/e/er?s=608&lid=10794&elqTrackId=f80d5b97a3cc48c28f90aaed1e2dc819&elq=54d9956eaf6b4a1fa88e9a3ffb3f2c8b&elqaid=18067&elqat=1
    Мы попадаем на наш магазин от Allsoft и ничего. НО
    Если зайти по ссылке через прокси (я заходил через американский), то можно добавить товар в корзину по цене 0, заполнить реквизиты платежа, и вуаля. Пришла лицензия на Starter на почту с подтверждением успешной покупки за 0 рублей. 
    Пробуйте. 
    p/s Я не знаю легально ли это, но письмо пришло на мой электронный адрес, значит я имею право на получение лицензии по 0 руб.
      One day only! 100% Discount on C++Builder Starter Edition The Starter Edition of C++Builder 10.1 is the best way to ramp up and build high-performance C++ apps for Windows. C++Builder Starter includes an intuitive and powerful IDE, code editor, and debugger. Friday, June 17 is the only one chance to get our starter version of C++Builder at a 100% DISCOUNT. Don’t miss out! GET C++BUILDER NOW You get hundreds of visual components with this edition. It is a full-service development environment, complete with a multi-device designer and native controls to customize a UI for each platform. Speed up your development tasks with FireUI App Preview. Easily switch from the form designer to views of your app on iOS, Android, OSX, and Windows targets.

    This is not a trial. C++Builder Starter is a fully-functional basic edition, and we are offering a 100% Discount for one day only. When you’re ready, you can upgrade to the Pro version to build on more platforms (such as Windows 64-bit, iOS, Android, and OS X 32-bit), and also get access to all of the database components and drivers.  
  16. Like
    bigjorj получил реакцию от zairkz в Акция: Berlin 10.1 C++ Builder Starter БЕСПЛАТНО   
    Сегодня пришло письмо:
    При переходе по кнопке http://s608.t.en25.com/e/er?s=608&lid=10794&elqTrackId=f80d5b97a3cc48c28f90aaed1e2dc819&elq=54d9956eaf6b4a1fa88e9a3ffb3f2c8b&elqaid=18067&elqat=1
    Мы попадаем на наш магазин от Allsoft и ничего. НО
    Если зайти по ссылке через прокси (я заходил через американский), то можно добавить товар в корзину по цене 0, заполнить реквизиты платежа, и вуаля. Пришла лицензия на Starter на почту с подтверждением успешной покупки за 0 рублей. 
    Пробуйте. 
    p/s Я не знаю легально ли это, но письмо пришло на мой электронный адрес, значит я имею право на получение лицензии по 0 руб.
      One day only! 100% Discount on C++Builder Starter Edition The Starter Edition of C++Builder 10.1 is the best way to ramp up and build high-performance C++ apps for Windows. C++Builder Starter includes an intuitive and powerful IDE, code editor, and debugger. Friday, June 17 is the only one chance to get our starter version of C++Builder at a 100% DISCOUNT. Don’t miss out! GET C++BUILDER NOW You get hundreds of visual components with this edition. It is a full-service development environment, complete with a multi-device designer and native controls to customize a UI for each platform. Speed up your development tasks with FireUI App Preview. Easily switch from the form designer to views of your app on iOS, Android, OSX, and Windows targets.

    This is not a trial. C++Builder Starter is a fully-functional basic edition, and we are offering a 100% Discount for one day only. When you’re ready, you can upgrade to the Pro version to build on more platforms (such as Windows 64-bit, iOS, Android, and OS X 32-bit), and also get access to all of the database components and drivers.  
  17. Like
    bigjorj получил реакцию от Kitty в Акция: Berlin 10.1 C++ Builder Starter БЕСПЛАТНО   
    Сегодня пришло письмо:
    При переходе по кнопке http://s608.t.en25.com/e/er?s=608&lid=10794&elqTrackId=f80d5b97a3cc48c28f90aaed1e2dc819&elq=54d9956eaf6b4a1fa88e9a3ffb3f2c8b&elqaid=18067&elqat=1
    Мы попадаем на наш магазин от Allsoft и ничего. НО
    Если зайти по ссылке через прокси (я заходил через американский), то можно добавить товар в корзину по цене 0, заполнить реквизиты платежа, и вуаля. Пришла лицензия на Starter на почту с подтверждением успешной покупки за 0 рублей. 
    Пробуйте. 
    p/s Я не знаю легально ли это, но письмо пришло на мой электронный адрес, значит я имею право на получение лицензии по 0 руб.
      One day only! 100% Discount on C++Builder Starter Edition The Starter Edition of C++Builder 10.1 is the best way to ramp up and build high-performance C++ apps for Windows. C++Builder Starter includes an intuitive and powerful IDE, code editor, and debugger. Friday, June 17 is the only one chance to get our starter version of C++Builder at a 100% DISCOUNT. Don’t miss out! GET C++BUILDER NOW You get hundreds of visual components with this edition. It is a full-service development environment, complete with a multi-device designer and native controls to customize a UI for each platform. Speed up your development tasks with FireUI App Preview. Easily switch from the form designer to views of your app on iOS, Android, OSX, and Windows targets.

    This is not a trial. C++Builder Starter is a fully-functional basic edition, and we are offering a 100% Discount for one day only. When you’re ready, you can upgrade to the Pro version to build on more platforms (such as Windows 64-bit, iOS, Android, and OS X 32-bit), and also get access to all of the database components and drivers.  
  18. Like
    bigjorj получил реакцию от Martifan в Запретить появления клавиатуры   
    Я не проверял, но попробуйте следующее 
     
        FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;
     
  19. Like
    bigjorj отреагировална Kitty в [Корпоративное] контроль персонала   
    Мой опыт создания приложения для андроида в С++ Builder Берлин.
    Приложение предназначено для контроля прихода-ухода персонала на работу. Знакомый руководитель стоматологического центра попросил.
    Использовался этот маячок beacon:
    Bytereal-iBeacon
    Обязанности сотрудника при приходе и уходе с работы:
    - сотрудник запускаем мобильное приложение
    - далее подносит телефон к маячку
    Мобильное приложение фиксирует отметку в базу данных SQL lite. Уведомляет пользователя в интерфейсе программы и дополнительным push уведомлением.
    Отметки можно посмотреть на самом телефоне или выслать руководителю по почте. Телефон превращается во что-то вроде магнитной карты учета прихода-ухода с хранением данных. Интерфейс на прилагаемом рисунке.
    Что положительного:
    - Задача решена быстро на с++ и не надо тратить время на изучение чего-то другого. Для корпоративного решения то, что нужно.
    - Студия упала во время разработки только два раза. В С++ Builder XE6-7 при наличии достаточного кол-ва кода в проекте для андроида студия падала каждые две минуты.
    - Учитывая стоимость маячков это перспективная линия для всякого рода приложений  связанных с биконами. Положительный опыт.
    Что отрицательного:
    - При попытке активировать TFDQuery в инспекторе объектов, возникает ошибка LiveBindings и уже нельзя сохранить проект. Только закрытие без сохранения и повторное открытие студии.
    - Не удалось показать картинку на вкладке История. В дизайнере она есть, на устройстве странным образом исчезает. Не победила.
    - Попытка удалить StyleBook и затем настроить новый, привела к тому, что в дизайнере все отлично, а на устройстве стилизация полностью исчезает. Не победила.  Спасла резервная копия приложения.
    - Были мысли расширить приложение, но в текущей версии C++ Builder невозможно создавать сервисы для андроида. Наличие сервиса позволило бы дополнительный не гласный контроль. Например, если человек отлучился уже в течение рабочего дня.
    Судя по дорожной карте и в следующей версии С++ Builder 10.2 в пролете создания сервисов для андроида. 
    Выводы:
    Больше всего времени я тратила не на программирование, а на пункты из отрицательного. Пытаясь понять, что происходит, но безуспешно.
    Поскольку задача все же решена то, в общем, все хорошо, но без полного ощущения счастья.
    Просьба:
    Может что-то посоветуете еще по функционалу или интерфейсу для приложения такого типа? Может, есть что-то полезное, что можно добавить в такой тип мобильного приложения?
    Спасибо.
     

  20. Like
    bigjorj получил реакцию от Равиль Зарипов (ZuBy) в Запретить появления клавиатуры   
    Я не проверял, но попробуйте следующее 
     
        FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;
     
  21. Like
    bigjorj получил реакцию от Kitty в Запретить появления клавиатуры   
    Я не проверял, но попробуйте следующее 
     
        FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;
     
  22. Like
    bigjorj получил реакцию от Brovin Yaroslav в Запретить появления клавиатуры   
    Я не проверял, но попробуйте следующее 
     
        FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;
     
  23. Like
    bigjorj отреагировална kami в Что выбрать VCL или FMX?   
    Основываясь на фразе "создании приложения только для Windows"
    Сама Embarcadero продолжает говорить, что под Windows ничего лучше VCL нет. Используя VCL вы можете задействовать все возможности, предоставляемые операционной системой. Если чего-то будет нехватать для работы (в чем я сомневаюсь, арсенал компонентов и контролов, созданных в рамках VCL, весьма обширен) - к вашим услугам полный набор WinAPI. Все VCL контролы основываются на вызовах WinAPI функций, что гарантирует (ну да, громко сказано, конечно) их быструю работу, поскольку она контролируется оптимальным кодом самой ОС. Помимо этого, некоторые задачи практически невозможно решить без задействования функций ОС. Например, хуки, сервисы, нестандартное поведение при движении мыши (WM_NCHITTEST)... Поведение контролов также будет 100% таким, как пользователь привык видеть во всех приложениях родной ОС.
    Да, на FMX тоже можно использовать функции ОС и нативные контролы. Но микс нативных и "собственных" контролов приводит к извращениям по расположению и компоновке контролов, т.к. нативный контрол всегда отрисуется поверх собственных. Также, т.к. Windows основана на механизме передачи оконных сообщений - есть определенные сложности в применении WinAPI. Ну и - если вы задействуете WinAPI функции, т.е. привяжетесь к конкретной ОС - смысл тогда использовать FMX?
     
    Резюмируя - если работа действительно планируется только под Windows - используйте VCL.
    Если хоть в отдаленном будущем мелькает возможность работы приложения на других платформах - то сразу нужно работать на FMX, этим вы избавите себя от проблем портирования приложения.
     
  24. Like
    bigjorj отреагировална #WAMACO в Правильная ли практика применения!   
    я вообще отказался от grid и перешел на ListView даже для десктопа (особенно приятен в berlin), все быстро, память не кушает
  25. Like
    bigjorj отреагировална willi в Google Analytics   
    FMX.Android.wGoogleAnalytics.zip
×
×
  • Создать...