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

Alisson R Oliveira

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

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

  • Посещение

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

    2

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

  1. В 09.11.2016 в 09:09, walexw сказал:

    Eu estive procurando uma maneira de resolver este problema por quase um ano, e embora o tópico tenha sido mencionado várias vezes em tópicos similares, eu decidi criar outro, porque não há solução (todos escaneados).
    No formulário 2 ou mais TEdit, vá do primeiro para o segundo por Enter (Next).
    Tudo digitado no primeiro TEdit, transferido para um segundo mais que letra (veja. Tela) quando você pressiona uma letra do segundo TEdit
    Tudo isso acontece quando o telefone com as palavras "prompter", mas é conveniente e um grande número de pessoas usá-lo.
    Eu tive várias aplicações. Ambos C ++ e Delphi. Eu usei RAD XE 10
    Quatro tablets e três smartphones com Android 4, 5, 6 para testes. Teclados e nativos e Google.
    Todos eles como gêmeos repetir este truque e como se livrar dele, eu simplesmente não consigo encontrar uma solução.
    A única coisa que ajuda é desabilitar dicas no próprio telefone, mas é por conta própria.
    E quem baixar o programa da internet, eles gostam de ser?
    Obrigado por qualquer dica (dicas).
    Eu mesmo estou procurando a opção de redefinir o buffer do teclado ao sair de uma Edita e entrar na próxima.

    keyb.jpg

     

    Did you find the solution? I've been having the same problem for over 1 year ...

  2. 6 часов назад, FREEFAR сказал:

    Have you tollbar align "Top" and listview align "Client"?

    How you hide tollbar - Visible := False?

    Try toolbar.margin.Top := - toolbar.height

    No solutions. It seems to me that with every change in the size of the listview firemonkey re-renders the items ... like formatting and manual (via code) it belongs to everything ... do you have any options so that this does not happen ??

    thankful.

  3. Good afternoon,
    I have a problem with ListView, I have an application that works with dynamic appearance items, where I add items manually, it takes the image height and ListView width to calculate the item size and the position of the elements within the ListView. item. The error occurs when I change some control in the form, it loses all its formatting, for example, hides a rectangle or animates the control.


    Has anyone ever experienced this? Do you know how I can solve this?
    Thank you!

  4. procedure TfrmPrincipal.AdicionarSomenteOfertasLista;
    var
      Tarefa: ITask;
    begin

      dmDadosLocais.qryListaSomenteOfertas.Active := False;
      dmDadosLocais.qryListaSomenteOfertas.ParamByName('IDOFFSET').AsInteger := TotalSomenteOfertasOFFSET;
      dmDadosLocais.qryListaSomenteOfertas.Active := True;
      dmDadosLocais.qryListaSomenteOfertas.First;

      Tarefa := TTask.Create(
        procedure()
        var
          strOferta, strEmpresa, strSloganEmpresa, strIDOferta: string;
          //
          LItem: TListViewItem;
          //Lista de Imagens
          ItemFolder: TListItemImage;
          Background: TListItemImage;
          LogoMarca: TListItemImage;
          IconeCupom: TListItemImage;
          IconeCurtidas: TListItemImage;
          // Tratablhar com imagens
          ImgStream, ImgStreamLogoEmpresa: TStream;
          ImagemAlterada: TBitmap;
          ImagemBackGround: TBitmap;
          ImagemLogoMarca: TBitmap;
          ImagemCupom: TBitmap;
          UsarCupom: Boolean;
          //Posicionamento
          ItemTituloOferta, ItemEmpresa, ItemSlogan, ItemNumeroCurtidas: TListItemText;
          vKoef: Single;
          AlturaImagem: Single;
          AvailableWidth: Single;
          AlturaLvOfertas: Single;
          Linha: Single;
          //Texto curtidas
          strCurtidas: string;
        begin

          if dmDadosLocais.qryListaSomenteOfertas.RecordCount > 0 then
          begin

            LoadCarregandoSomenteOfertas.Visible := True;

            lvSomenteOfertas.BeginUpdate;

            try

              while not dmDadosLocais.qryListaSomenteOfertas.Eof do
              begin

                strOferta := dmDadosLocais.qryListaSomenteOfertas.FieldByName('oferta').AsString;
                strEmpresa := dmDadosLocais.qryListaSomenteOfertas.FieldByName('empresa').AsString;
                strIDOferta := dmDadosLocais.qryListaSomenteOfertas.FieldByName('id').AsString;
                strSloganEmpresa := dmDadosLocais.qryListaSomenteOfertas.FieldByName('slogan').AsString;
                ImgStream := dmDadosLocais.qryListaSomenteOfertas.CreateBlobStream(dmDadosLocais.qryListaSomenteOfertas.FieldByName('img_media'), TBlobStreamMode.bmRead);
                ImgStreamLogoEmpresa := dmDadosLocais.qryListaSomenteOfertas.CreateBlobStream(dmDadosLocais.qryListaSomenteOfertas.FieldByName('logomarca'), TBlobStreamMode.bmRead);
                //Controle de Cupom
                if dmDadosLocais.qryListaSomenteOfertas.FieldByName('usar_cupom').AsBoolean = True then
                  UsarCupom := True
                else if dmDadosLocais.qryListaSomenteOfertas.FieldByName('usar_cupom').AsBoolean = False then
                  UsarCupom := False;

                TThread.Synchronize(TThread.CurrentThread,
                  procedure()
                  begin

                    AvailableWidth := lvSomenteOfertas.Width - lvSomenteOfertas.ItemSpaces.Left - lvSomenteOfertas.ItemSpaces.Right;

                    ImagemAlterada := TBitmap.Create;
                    ImagemAlterada.LoadFromStream(ImgStream);
                    {Tamanho e Posicionamento}
                    if Handle = nil then
                      exit; // on Android without this user will get Access Violation
                    vKoef := AvailableWidth / ImagemAlterada.Width;
                    AlturaImagem := ImagemAlterada.Height * vKoef;

                    LItem := lvSomenteOfertas.Items.Add;

                    LItem.Height := (Round(AlturaImagem) + 5 + 22 + 5 + 40 + 3 + 20 + 30);

                    //Atribui valores
                    LItem.Data['Oferta'] := strOferta;
                    LItem.Data['Empresa'] := strEmpresa;
                    LItem.Data['IDOferta'] := strIDOferta;
                    LItem.Data['SloganEmpresa'] := strSloganEmpresa;
                    strCurtidas := dmDadosLocais.NumeroDeCurtidasFEED(StrToInt(strIDOferta));
                    LItem.Data['NumeroCurtidas'] := strCurtidas;
                    if strCurtidas.IsEmpty = True then
                      LItem.Data['IconeCurtida'] := 0
                    else if strCurtidas.IsEmpty = False then
                      LItem.Data['IconeCurtida'] := 1;

                    //Folder
                        ItemFolder := TListItemImage(LItem.View.FindDrawable('Folder'));
                    ItemFolder.OwnsBitmap := True;
                    ItemFolder.Bitmap := ImagemAlterada;
                    ImagemAlterada.Free;
                    ItemFolder.Height := AlturaImagem;

                    Background := TListItemImage(LItem.View.FindDrawable('Background'));
                    Background.Visible := False;


                    //LogoEmpresa
                    LogoMarca := TListItemImage(LItem.View.FindDrawable('LogoEmpresa'));
                    ImagemLogoMarca := TBitmap.Create;
                    LogoMarca.OwnsBitmap := True;
                    ImagemLogoMarca.LoadFromStream(ImgStreamLogoEmpresa);
                    LogoMarca.Bitmap := ImagemLogoMarca;
                    ImagemLogoMarca.Free;


                  //Icone do Cupom
                    IconeCupom := TListItemImage(LItem.View.FindDrawable('iconeCUPOM'));
                    ImagemCupom := TBitmap.Create;
                    IconeCupom.OwnsBitmap := True;
                    if UsarCupom = True then
                      ImagemCupom := imgIconeCupom.Bitmap
                    else if UsarCupom = False then
                      ImagemCupom := imgIconeSemCupom.Bitmap;
                    IconeCupom.Bitmap := ImagemCupom;
                    ImagemCupom.Free;


                    //Localiza Objetos
                    IconeCurtidas := TListItemImage(LItem.View.FindDrawable('IconeCurtida'));
                    ItemTituloOferta := TListItemText(LItem.View.FindDrawable('Oferta'));
                    ItemEmpresa := TListItemText(LItem.View.FindDrawable('Empresa'));
                    ItemSlogan := TListItemText(LItem.View.FindDrawable('SloganEmpresa'));
                    ItemNumeroCurtidas := TListItemText(LItem.View.FindDrawable('NumeroCurtidas'));

                    // Posiciona Objetos nos controles
                    Linha := 5;

                    //Linha 1 - Dados da empresa
                    LogoMarca.PlaceOffset.Y := Linha;
                    ItemEmpresa.PlaceOffset.Y := Linha;
                    ItemEmpresa.PlaceOffset.X := 60;

                    ItemSlogan.PlaceOffset.Y := Linha + 21;
                    ItemSlogan.PlaceOffset.X := 60;

                    //Linha 2 - Folder da Oferta
                    Linha := Linha + LogoMarca.Height + 7;
                    ItemFolder.PlaceOffset.Y := Linha;

                    //Linha 3 - Titulo da oferta
                    Linha := Linha + AlturaImagem + 5;
                    ItemTituloOferta.PlaceOffset.Y := Linha;

                    //Linha 4 - Número de Curtidas
                    Linha := Linha + ItemTituloOferta.Height + 3;
                    ItemNumeroCurtidas.PlaceOffset.Y := Linha;
                    IconeCurtidas.PlaceOffset.Y := Linha;

                  end);

                dmDadosLocais.qryListaSomenteOfertas.Next;
              end;

            finally

              lvSomenteOfertas.EndUpdate;
    //          if TotalSomenteOfertasOFFSET = 0 then
    //            TThread.Synchronize(nil, RepintarOfertasDesalinhadas);

              TotalSomenteOfertasOFFSET := TotalSomenteOfertasOFFSET + 10;

              TThread.Synchronize(TThread.CurrentThread,
                procedure()
                begin
                  if TotalSomenteOfertasOFFSET = 10 then
                    RepintarOfertasDesalinhadas(lvSomenteOfertas);

                  LoadCarregandoSomenteOfertas.Visible := False;
                end);
            end;

          end;

        end);

      Tarefa.Start;

    end;

  5. Boa tarde,
    eu tenho um problema com o ListView, eu tenho um aplicativo que funciona com elementos de aparência, onde eu adicionar itens manualmente, leva-se a altura da imagem e largura para calcular o tamanho do elemento e a posição dos elementos de comando no elemento. O erro ocorre quando eu altero o controle sobre ele, ele perde toda a sua formatação, por exemplo, oculta um retângulo ou anima o controle.


    Alguém já passou por isso? Você sabe como eu posso resolver isso?
    Obrigado!

  6. В 13/11/2017 в 12:15, Равиль Зарипов (ZuBy) сказал:

    Текущая реализация не позволяет нам менять цвет статус бара, потому что в FMX используется старая тема Holo.

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

    Так достигается эффект покраски статус бара

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

    благодарный

  7. привет всем
    У меня проблема в разработке алгоритма, который знает, что кто-то здесь может мне помочь. В сценарии и следующем, у меня есть изображение, которое отображает изображения, размещенные пользователями, так как фотографии могут быть нескольких разных размеров. Мне бы хотелось, чтобы высота проспекта (Image.Height) рассчитывалась в соответствии с размером экрана мобильного телефона (Android) или его ширина и изображение занимают высоту correda без размытия изображения, детали с использованием свойства Wrapmode: = fit; а не Wrapmode: = Растянуть

     

     

    благодарный

  8. Добрый вечер, кто-нибудь знает, как я могу создать функцию для создания ярлыка в доме Android?

    Эта функция не работает, по крайней мере, не на android 6 и 7.0

     

    Uses
    Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android,
    Androidapi.JNI.JavaTypes, FMX.Platform.Android, AndroidApi.JniBridge, AndroidApi.Jni.App,
    AndroidAPI.jni.OS;
    
    {$IFDEF ANDROID}
    var
    ShortcutIntent: JIntent;
    addIntent: JIntent;
    wIconIdentifier : integer;
    wIconResource : JIntent_ShortcutIconResource;
    {$ENDIF}
    begin
    {$IFDEF ANDROID}
    
    ShortcutIntent := TJIntent.JavaClass.init(SharedActivityContext, SharedActivityContext.getClass);
    ShortcutIntent.setAction(TJIntent.JavaClass.ACTION_MAIN);
    
    addIntent := TJIntent.Create;
    addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_INTENT, TJParcelable.Wrap((shortcutIntent as ILocalObject).GetObjectID));// here we need to cast the intent as it's not done in delphi by default, not like java
    addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_NAME, StringToJString(Application.Title));
    addIntent.setAction(StringToJString('com.android.launcher.action.INSTALL_SHORTCUT'));
    // get icon resource identifier
    wIconIdentifier := SharedActivity.getResources.getIdentifier(StringToJString('ic_launcher'), StringToJString('drawable'), StringToJString('com.embarcadero.HeaderFooterApplication')); // if the app name change, you must change the package name
    wIconResource := TJIntent_ShortcutIconResource.JavaClass.fromContext(SharedActivityContext, wIconIdentifier);
    // set icon for shortcut
    addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_ICON_RESOURCE, TJParcelable.Wrap((wIconResource as ILocalObject).GetObjectID));
    
    SharedActivityContext.sendBroadcast(addIntent);
    
    {$ENDIF}

     

    благодарный

  9. Я понимаю, что я рассмотрю дорожную карту грузоотправителя, чтобы посмотреть, будет ли эта деталь изменена. С вашим объяснением и вашим устройством я помещаю TRectangle с желаемым цветом, чтобы быть backgroud, поэтому у меня был «желаемый результат».

    Большое спасибо

  10. Очень хорошая проблема позиционирования управления по отношению к разрешенной строке состояния, я искал функцию, которая возвращает мне целое число, плюс и процедуру.

    кажется, что все работает отлично, за исключением одной детали, цвет, который я передаю как параметр, не используется для рисования строки состояния. и фиксированный цвет. анализируя процедуру, которая делает это «StatusBarSetColor» увидела, что он получает «const aColor: TAlphaColor» и только использует на устройствах iOS в Android фиксированное значение

    procedure StatusBarSetColor(const aColor: TAlphaColor);
    {$IFDEF ANDROID}
    var
      Window: JWindowExt;
    {$ENDIF}
    begin
    {$IFDEF ANDROID}
      CallInUIThread(
        procedure
        begin
          if TOSVersion.Check(5, 0) then
          begin
            Window := GetWindowExt;
            Window.setFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS,
              TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS);
            Window.setFlags(TJWindowManager_LayoutParamsExt.JavaClass.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
              TJWindowManager_LayoutParamsExt.JavaClass.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            Window.setStatusBarColor(-16777216);
          end;
        end);
    {$ENDIF}
    {$IFDEF IOS}
      SetStatusBarBackgroundColor(aColor);
    {$ENDIF}
    end;

    Screenshot_20171113-104835.jpg

  11. извините за мое понимание вашего подразделения. Процедура «StatusBarGetBounds» не является функцией, которая не возвращает мне значение высоты строки состояния, поэтому я говорю, что у меня есть много знаний о предмете, высота бара состояния и босса для всех версий android (от 5 ) и независимо от марки устройства (asus, samsung, lg и др.)? Как вы можете привести пример правильного использования описанных вами процедур.

    еще раз спасибо

  12. Он работал, теперь он рисует строку состояния, но экран идет позади ... Я не видел, чтобы функция могла получить высоту строки состояния, чтобы сделать интервал, например, один из предыдущего примера
    "Layout.Margins.Top: = TmyWindow.StatusBarHeight;"
    Не могли бы вы помочь мне, как мне это сделать с этим новым подразделением, которое вы показали?

    благодарный

  13. Добрый день, сначала мне жаль, потому что я не знаю русского языка. Я использую переводчик Google.
    У меня есть следующая проблема: я использую вашу библиотеку для изменения цвета панели состояния (ZenFone3, android 7) отлично работает, пока я не отключу «Включить всплывающее изображение» там, где он больше не компилируется, и возвращает мне следующую ошибку.

    [Ошибка PAClient] E2312 D: \ OffersCap \ Mobile \ Android \ Release \ OfferCap \ res \ values-v21 \ styles.xml: 5: Ошибка: Ошибка: ресурс не найден, который соответствует указанному имени (на 'android: windowBackground 'со значением' @ drawable / splash_image_def ').

    если вы можете мне помочь, спасибо

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