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

rustam_d

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

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

  • Посещение

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

    2

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

  1. Всё делал и как написано, и по всякому.

    В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что Kinvey, что Parse, не работает ни то, ни другое в режиме Релиза на андройде.

    вы говорите все ок...но походу не так ))

    выложите манифест файл андроида...он важен для пушей, точнее туда дописывать надо права отдельно

  2.  

    вы удалили xcode, а потом поставили заново или обновили просто?

    надо снести и установить заново!

    Чистая установка. Установил Windows 7 x64, на неё поставил Delphi 10. Затем взял образ OS X Yosemite, установил туда xCode7 с SDK9. В результате всё, как и в прежних вариантах, та же ошибка.

     

    Вы проверяли данную конфигурацию. Работает она вообще?

     

     

    что то похожее

     
    Win8.1x64pro
    Yosemite 10.10(vmware)
    xcode6.4
    PAserver16
    XE8upd1
    Login мака и конечно логин в xcode - девелопера(99$)
    сертификаты загружены за счет xcode
    Запускаю пасервер на маке без пароля(для чего инсталлятор под виндовс пока загадка)
    IOS Device32
     
    работает норм
  3. Установил новую студию ради исправления одной ошибки, и наткнулся на другую, ещё более критичную.

     

    В общем и в новых и в старых проектах одинаковая ситуация. Если на форме имеются компоненты KinveyProvider (ParseProvider) и PushEvent, то в режиме Release - Application Store приложение запускается, но после сплэш скрина просто чёрный экран и ничего не происходит, приложение зависает. В режиме Debug всё отлично запускается и работает, Push приложения приходят. Все разрешения есть, даже больше, специально выставлял абсолютно все разрешение.

     

    В режиме отладки не запускается, приложение просто подвисает, отладчик ругается, что оно не отвечает. 

     

    Мучаюсь уже второй день, может кто сталкивался или знает куда копать, буду рад любому совету.

    второй день это еще не плохо ))

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

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

    После переключения вручную, проверьте в опциях проекта права (permissions) все ли стоят для Релиза.

    В манифесте права обязательно должны быть, ну раз в дебаге пашет, то наверно добавили корректно?

    Потом ключик подписи надеюсь корректен.

    Св-во формы Активате проверьте все ли у вас там красиво...покомменте и снова на тест...

  4.  

     

    Может просто в CreateBitmap еще один параметр добавить? 

     

    ...
      b.Bitmap.Assign(b.CreateBitmap('C:\Delphi\Images\GlyFX\glyFX\Icons\Aero\BMP\32x32\arrow_left_32_h.bmp'));
    ...
    
     
          vStream.WriteComponent(imgMain);
     

    3. В вашем примере сохраняется и загружается вся коллекция + разная служебная информация, что не добавляет скорости. Лучше бы сохранять и загружать сами битмапы из Source.MultiResBitmap с использованием LoadFromFile, SaveToFile (как в первом примере). Это будут файлы родные png и они будут грузится системными API функциями с максимальной скоростью. А CreateBitmap использовать только при первой загрузке чтобы cмасштабировать и сконвертировать в png. Хотя и так тоже можно, но я бы не стал.  B)

     

    что то не догнал...вот так просто взял и SaveToFile??? а для чего я тогна танцы с бубнами делаю с Destination ? Он что как то стороной проходит?

    Т.е. я беру и без всяких танцев с дестинанэйшн сразу Source.MultiResBitmap.LoadFromFile ?

    вы уверены? хм...

    А если вы про загрузку каждой картинки отдельно, то не вариант, мне же индексировать где то надо...

    да и если собьется индекс то уже и не те картинки на кнопках...причем на многих...неее, мне 300% уверенность нужна.

  5. XE8 без апдейтов.

    На какой строке AV?

     

    Provisioning profile должен включать APN.

    uses: System.PushNotification, FMX.PushNotification.iOS

    xenon54 заработало, спс!

     

    отсутствовал FMX.PushNotification.iOS в разделе uses

    Why do I love you FMX!!!??? сколько крови он выпьет еще...я п'лачу...потерять неделю из-за такой ошибки...жесть

    ведь компилиться без него...ком-пи-ли-ться!!!...

  6.  var
       APS : TPushService;
       ASC : TPushServiceConnection;
     begin
    
      APS := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);
      ASC := TPushServiceConnection.Create(APS);
      ASC.OnChange := DidAPNSChanged;
      ASC.OnReceiveNotification := form1.OnReciveAPN;
    
      ASC.Active := True;
    
    
    
    procedure TXAPNS.DidAPNSChanged(Sender: TObject;
      AChange: TPushService.TChanges);
    begin
      if TPushService.TChange.DeviceToken in AChange then
      begin
        FDevToken := APS.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken] ;
    
    
    
    

    Так у меня работает все на ура

     

    не работает, тот же access violation, сообщите пож. вашу конфигурацию, у вас XE8 ?

  7.  

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

        APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);
        AServiceConnection := TPushServiceConnection.Create(APushService);
        AServiceConnection.Active := True;
        AServiceConnection.OnChange := OnChange;
        AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
        ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
        ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];
    

    ADeviceID - это ид устройства (не пустое), ADeviceToken - после того как кликнули на устрйостве разрешать уведомления, стало не пустым, т.е. тоже заполняется без проблемм.

     

    FeLDMARShaL прошу помощи, у меня этот код не работает в XE8, вылетает по access violation... начиная со строки ADeviceID := ...

    вот мой пост по ошибке

    http://fire-monkey.ru/topic/1697-push-soobscheniia-ios-kak-poluchit-token/?hl=push

  8. Всем доброго дня!

     

    Задавал этот вопрос на Stackowerflow, но ответа не получил даже с учетом выделенного bounty http://stackoverflow.com/q/32258525/5043424. Сущность вопроса в следующем. Создается колонка для FMX TGrid: 

    type
      TDatecell = class(TCalendarEdit)
      end;
    
      TDateColumn = class(TColumn)
      private
        function CreateCellControl: TStyledControl; override;
      public
        constructor Create(AOwner: TComponent); override;
      end;
    ...
    constructor TDateColumn.Create(AOwner: TComponent);
    begin
      inherited;
    end;
    
    function TDateColumn.CreateCellControl: TStyledControl;
    begin
      Result := TDatecell.Create(Self);
    end;
    

    Все работает. Такую колонку можно добавить в TGrid. Не получается ее связать с полем FDQuery, получающим данные из поля MySQL типа date. 

    Пробовал в runtime вызывать нечто такое:

    LinkGridToDataSourceBindSourceDB1.Columns.Add;
    LinkGridToDataSourceBindSourceDB1.Columns.Items
    [LinkGridToDataSourceBindSourceDB1.Columns.Count-1].
    MemberName:='date_set_by_user';
    

    но этот код удаляет все колонки (если они определялись автоматически по списку полей) и добавляет единственную колонку - экземпляр класса TColumn. Подскажите, как связать колонку своего типа с TDataSet или как указать свой тип колонки в LinkGridToDataSourceBindSourceDB1.Columns? Я представляю, как заполнить TGrid вручную, но, мне кажется, это замедлит код и вынудит писать обработчики изменения DataState и вручную прописывать все изменения во всех ячейках в DataSet, а также реакцию DS на изменение выделения строки в TGrid. OnGetValue не срабатывает, если есть LiveBindings Link... Подскажите, пожалуйста, как это сделать. Застрял...

     

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

    альясы запроса у меня с шириной сразу, это очень удобно - к примеру пишите select name as ФИО_150 from...вот и вам и имя и ширина сразу )

    важно подчеркивание ставить просто в конце...

    var
      vSp: МойДатасет;
      c: TLinkGridToDataSourceColumn;
      i,k: integer;
    begin
        LinkGrd.Columns.Clear;
        for i := 0 to vSp.FieldCount - 1 do
        begin
          c := LinkGrd.Columns.Add;
          c.MemberName := vSp.Fields[i].FullName;
          k := Pos('_',c.MemberName);
          if k > 0 then
          begin
            c.Width := copy(c.MemberName,k+1,length(c.MemberName)-k).ToInteger;
            c.Header := copy(c.MemberName,1,k-1);
          end
          else
          begin
            c.Width := 100;
            c.Header := c.MemberName;
          end;
        end;
    end;
    
  9. Вот такой код судя по форумам у многих работает норм...но не у меня.
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ADeviceID, ADeviceToken: string;
    begin
      APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);
      AServiceConnection := TPushServiceConnection.Create(APushService);
      AServiceConnection.Active := true;
      AServiceConnection.OnChange := OnChange;
      AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
      ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
      ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];
    

    Писал гонсалес еще для XE7, толи все работают на ХЕ7 то ли у меня руки кривые,

    но на строке ADeviceID ...вылетает access violation ...

    Мои настройки: XE8upd1, IPAD Estay, OX Osemite 10.10(VMWare).

    Сертификат APN выпускал, но чую не в нем дело...

    Что только не делал...программа то работает, просто этот код погоняет...

     

  10. Пуш сообщения приходят много и переполняют панель уведомлений.

    Вопрос, кто-нить делал прием пуш сообщений группой?

    Например как gmail двойная иконка и пачка сообщений? Агент также умеет.

    Может надо поковырять манифесты или еще что?

    Буду премного благодарен, актуальная тема...

  11. и еще может кому сгодиться, если в БД картинки не меняли, то логично, что их не зачем загружать.

    Для этого я просто сохраняю компонент ImageList в файл. Если есть лучше решения, то критика приветствуется!

    
        //сохраняем компонент ImageList в файл
        vStream := TFileStream.Create(TPath.GetDocumentsPath + '/imagelist',fmCreate);
        try
          vStream.WriteComponent(imgMain);
        finally
          vStream.Free;
        end;
    
    
        //загружаем файл в компонент ImageList
        vStream := TFileStream.Create(TPath.GetDocumentsPath + '/imagelist',fmOpenRead);
        try
          vStream.ReadComponent(imgMain);
        finally
          vStream.Free;
        end;
  12. Может просто в CreateBitmap еще один параметр добавить? 

    Фил я кстати тоже так подумал ))))

     

    Исправил в своем коде ТОЛЬКО ОДНУ строку и тогда транспарент заработал (чудеса FMX):

     

      b.Bitmap.Assign(b.CreateBitmap('C:\Delphi\Images\GlyFX\glyFX\Icons\Aero\BMP\32x32\eject_blue_32_h.bmp'));
     
    и даже удалил b.Bitmap.SetSize(32,32);
     
    Сергей, в любом случае вы помогли спасибо!
    Но мой код по мне куда проще и короче...
     
    Вообщем вот готовый простейший код
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Layer: TLayer;
      c: TCustomSourceItem;
      b: TCustomBitmapItem;
      d: TCustomDestinationItem;
    begin
      d := ImageList1.Destination.Add;
      Layer := ImageList1.Destination[d.Index].Layers.Add;
      Layer.SourceRect.Rect := TRectF.Create(TPoint.Zero, 32, 32);
      c := ImageList1.Source.Add;
      Layer.Name := c.Name;
      c.MultiResBitmap.TransparentColor := TAlphaColorRec.Fuchsia;
      b := c.MultiResBitmap.Add;
      b.Bitmap.Assign(b.CreateBitmap('C:\Delphi\Images\GlyFX\glyFX\Icons\Aero\BMP\32x32\arrow_left_32_h.bmp'));
      Button2.ImageIndex := 0;
    end;
     
  13.  

     

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

     

    Убрать все лишнее, дестинейшн может быть и т.п., и оставить только нужное и правильное?

     

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

     

    так это и есть тема сообщения...

  14.  

    Причем прозрачный цвет должен быть выбран до загрузки.

    Похоже на очередной косяк разработчиков.

     

    Не похоже нет. 

     

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

    Убрать все лишнее, дестинейшн может быть и т.п., и оставить только нужное и правильное?

  15. Эмулятор еще не устанавливал и не знаю насколько быстро он работает. Но ооочень уж долго происходит компиляция, деплой, установка приложения на телефон. Вот и возникла мысль: "А вдруг эмулятор пошустрее?". Что скажете?

    PS. Win8.1, 4Гб, Intel Pentium G2130 3.2Ггц

    Эмулятор да тормозит, жесть против ИОС эмулятора.

    Лучше Андроид устройство какое нить по юсб или вафле (последнее сложнее в реализации).

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

    Сделайте следующее:

    - установите делфи и проекты ваши на SSD диск скажем 250гб (у меня самс ево 500 и операционка на нем)

    - поставьте процессор core i7

     

    после всего этого у вас компиляция будет всего на 95% отставать от VCL, против текущих 550%.

  16. Короче, спасибо за ХЕ8, а в остальном видно что пацаны не плохо отдохнули на мальдивах на срезанное анрил бабло 2к...и...решили попросту повторить.

    VCL я так понял живет своим мирком и будет дальше жить, добавив .ToString и .ToInteger поняли, что для нас это нечто божественное, и ...на этом харэ.

    Остается уповать на стабильность фмх...но это не проверено еще.

    Я не разочарован, ведь есть ХЕ8...возможно на их месте я бы делал как они...оттягивался и ловил момент ),.. разводил кроликов дальше.

     

    P.S.: по уму надо было бы книжки нормальные создать по фмх с нормальными примерами, а то просто тупо на свои же продукты публикуют

    сторонние блоги делая из этого сенсацию, как типа если я бы изобрел авто и бросил на эксперименты индейцам и угорал..."он поехал!",

    "он смог завести!", "а это претендует на блог!!!"...стыдно и за них и за себя...

  17. uses
      AndroidAPI.Helpers,
      AndroidAPI.JNI.GraphicsContentViewText;
     
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        function BatteryPercent(const aContext: JContext): Integer;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
     
    function TForm1.BatteryPercent(const aContext: JContext): Integer;
    var
      filter: JIntentFilter;
      battery: JIntent;
    begin
      filter := TJIntentFilter.Create;
      filter.addAction(TJIntent.JavaClass.ACTION_BATTERY_CHANGED);
      battery := aContext.registerReceiver(NIL, filter);
      result := battery.getIntExtra(StringToJString('level'), -1)
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      myContext: JContext;
    begin
      myContext := SharedActivityContext;
      Showmessage(BatteryPercent(myContext).ToString);
    end;
     
    а еще по другим параметрам испанец круто обсосал тут
    а если надо модель, серийный то это у вас на компе Delphi\Samples\Object Pascal\Mobile Snippets\DeviceInfo  (но тут хоть ИОС есть).
  18. допустим я отдам эти значения в UserDataSet, и FR знакомится с ними, есть мысли как тогда сделать обработчик ? Или я неправильно понял мысль?

    думаю стоит идти в направлении frxUserDataSet.RecNo

  19. Как то с vcl еще привычка была наследоваться от базовых форм.

    Тут она и пригодилась, в базовой форме можно все перегрузки и кидать, а в наследованной 

    все автоматом цепляется...проверенно, работает!

     

    верхняя ссылка глючит, там про перегрузку контрола:

    type
    
      TSpeedButton = class(FMX.StdCtrls.TSpeedButton)
      protected
        procedure AdjustFixedSize(const Ref: TControl); override;
      end;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    
    implementation
    
    {$R *.fmx}
    
    { TSpeedButton }
    
    procedure TSpeedButton.AdjustFixedSize(const Ref: TControl);
    begin
      SetAdjustType(TAdjustType.None);
    end;

    ну а далее мое предложение про наследование, зато код без мусора...он в предках...:

    type
      TForm2 = class(TForm1)
  20. https://delphihaven.wordpress.com/2013/12/30/removing-a-fmx-controls-size-restrictions/

    Фил, вот вариант, через одно место, но без стилей.

    Если не много форм, то мусорить в типах в начале стоит, ради дальнейшего избавления от стилей.

    Это работает, причем не обязательно с спидбатонами.

    Но надо смириться, что в дизайне будет изврат.

  21.  

    Это можно обойти добавив свой стиль для SpeedButton.

    Поясню немного:

    1. Заходим в редактор стиля SpeedButton.

    2. Сохраняем стиль.

    3. В текстовом редакторе удаляем строку FixedHeight = ... и сохраняемся.

    4. В редакторе стилей загружаем стиль обратно.

    5. Готово)

    спасибо Фил,...как всегда на высоте ).

    эх кастри..ь бы того прогера кто это сво-во влепил...

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