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

ruslan

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

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

  • Посещение

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

    15

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

  1. осмелюсь подытожить: очень актуальны 

    тема сервисов(!), фоновой работы, потокового аудио\видео, контроль за коммуникациями(wifi, 3g, телефония)

     

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

     

    когда приложение сможет нормально работать, когда его можно будет "распараллелить", когда не будет падать(в фоне)\виснуть\"неразворачиваться", когда будет нормально работать компонент  плеера\камеры(который безбожно тормозит), когда приложение не будет столько жрать оперативки. потом можно и баннеры\слайдеры всякие делать. а пока это никому не нужный бред.

  2. RubberLayout (резиновый layout) - это я сам придумал )).

    В общем это Layout который будет самостоятельно расширяться или сужаться если находящиеся в нем элементы увеличиваются или уменьшаются (добавляются, удаляются).

    Например накидываем в этот лэй несколько компонентов с разным выравниванием, а он подсчитывает общие габариты находящихся в нем компонентов по изменяется соответственно. В том числе и добавляемых в него динамически!

    Мне вот очень не хватает такого лея. Может я конечно еще не много понимаю в FM, но мне бы такая штука очень помогла бы в размещении компонентов под разные экраны (андроид). Изменяется размер  шрифта, высота TText и т.д. А если бы еще и RubberListItem по аналогии сделать то, вообще бы цены не было.

     

    TScaledLayout

  3. а можно узнать что за приложение и какой у него функционал ?) ну если не сложно конечно...

    я например сразу же удаляю приложение с баннерами, за исключением того, что у него ну ОЧЕНЬ нужный мне функционал..

    может конечно только лишь меня одного раздражает моргание с надписями типа:

    - "вчера я работал таксистом - сегодня я зарабатываю 600$ в день"

    - "девочки из твоего города ждут тебя. тебе скучно ? позвони !"

    - "ваш телефон очень сильно тормозит ! скачай супер крутой оптимизатор и сэкономь 100500 % батареи"

    и.т.д.

  4. видно придется делать отдельный редактор для выбора значения из списка( в отдельном окне ), что-то наподобие этого

    http://docwiki.embarcadero.com/RADStudio/XE7/en/Creating_a_Component_Editor_and_a_Property_Editor_for_FireMonkey_Components

     

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

  5. нда.... решение нашел... но, как я понимаю, под AppMethod оно работать не будет, т.к. для кастомной отрисовки выпадающего списка используются VCL-юниты, которые есть в XE7, но в AppMethod'е естестно отсутствуют..

     

    вот до чего я дошол:

     

    если в свой тип мы хотим всунуть такой проперти, объявляем его и прописываем в свой тип:

    TMyText = type string;
    
    TMyObject = class( TComponent )
      private
        fMyText: TMyText;
      published 
        MyText: TMyText read fMyText  write fMyText;
    end;

    потом объявляем редактор для нашего св-ва:

    uses
      DesignEditors, DesignIntf, System.Classes, System.SysUtils, FMX.Dialogs;
    
    type
    
    TSuperProperty = class(TStringProperty)
        public
          function GetAttributes: TPropertyAttributes; override;
          function GetValue: string; override;
          procedure GetValues(Proc: TGetStrProc); override;
          procedure SetValue(const Value: string); override;
      end;
    
    procedure Register;
    
    implementation
    
    
    procedure Register;
    begin
      RegisterPropertyEditor(TypeInfo(TMyText), TMyObject , 'MyText', TSuperProperty);
    end;
    
    
    { TSuperProperty }
    
    
    function TSuperProperty.GetAttributes: TPropertyAttributes;
    begin
      Result := [paMultiSelect, paValueList, paRevertable];
    end;
    
    
    function TSuperProperty.GetValue: string;
    begin
      try
        Result := GetStrValue;
      except
        on E: Exception do ShowMessage(E.Message);
      end;
    end;
    
    
    procedure TSuperProperty.GetValues(Proc: TGetStrProc);
    begin
      Proc( 'строка 1');
      Proc( 'строка 2');
    
    
    end;
    
    
    procedure TSuperProperty.SetValue(const Value: string);
    begin
      try
        SetStrValue(Value);
        Modified;
      except
        on E: Exception do ShowMessage(E.Message);
      end;
    end;
     

    после этого в ObjectInspector для нашего класса появится комбобокс со списком элементов из GetValues.

     

    но для того что бы работала кастомная прорисовка итемов этого комбобокса, нужно объявить TSuperProperty

    как

    TSuperProperty = class(TStringProperty, ICustomPropertyListDrawing)

     

    ICustomPropertyListDrawing описан в VCLEditors ( source\ToolsAPI\ )

     

    для того что б по-своему отрисовать итемы, нужно реализовать все методы интерфеса в своем TSuperProperty, например как это сделано в TStyleLookupProperty (юнит FmxReg)

     

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

  6. Добрый день. Подскажите, может кто-нибудь в курсе...

    Как сделать свой выпадающий редактор свойства в инспекторе объектов, наподобие выбора стиля в StyleLookup. 

    Там отображается иконка стиля слева. Или например как выбор цвета. Там отображается иконка с цветом.

    Допустим у меня будет свой перечисляемый тип:

    TMyType = (v1, v2, v3);

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

  7. запросы всегда шлите в другом потоке: либо через ExecuteAsynch, либо в своем потоке наследнике, либо через ITask.

    не обязательно везде писать if ..GetValue() then

    напишите классы под структуру json-ответа и используйте TJson.JsonToObject из Rest.JSON

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