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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. пишу "от руки", так что...

    допустим в вашем ListBoxItem есть дополнительный компонент TText (для отображения какого-то "иного" текста, а не основного), StyleName которого вы называете "messagecaption" (или как вашей душе угодно).

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

    item{ваш_конкретный_итем}.BeginUpdate;
    try
      item.StylesData['messagecaption.Text'] := 'тра-ля-ля'; // ваш текст
    finally
      item.EndUpdate;
    end;
    

    ну вот все в таком духе...

     

    З.Ы. и при чем тут Binding ?

  2. может как-то так:

    procedure TForm1.edSumKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
    begin
      case KeyChar of
        #8, '0'..'9' :  ; // цифры и <Back Space>
        '.', ',' :        // разделитель целой и дробной частей числа
          begin
            if KeyChar <> FormatSettings.DecimalSeparator then
              KeyChar := FormatSettings.DecimalSeparator; // заменим разделитель на допустимый
            if Pos(FormatSettings.DecimalSeparator, edDepositing_Sum.Text) <> 0 then
            begin
              Key := 0; // запрет ввода второго разделителя
              KeyChar := Chr(0);
            end;
          end;
        else   // остальные символы запрещены
        begin
          Key := 0;
          KeyChar := Chr(0);
        end;
      end;
    end;
  3. procedure EnableScrollSmooth(Sender: TObject; AHorhValue, ABounds, AShowing: Boolean);
    begin
      if Assigned(TScrollBox(Sender)) then
        with TScrollBox(Sender).AniCalculations do
        begin
          Animation := True;
          AutoShowing := AShowing;
          BoundsAnimation := ABounds;
          if not AHorhValue then
            TouchTracking := TouchTracking - [ttHorizontal];
        end;
    end;
    

    ну и переключайте например так:

    EnableScrollSmooth({ваш TScrollBox}, False, False, True);

  4. Действительно, как заметил [Alex7wrt], 50 раз в миллисекунду - не получится, как ни крути.

    Что касается раз в 50 миллисекунд - реально. Это всего 20 кадров/сек. FMX может и больше. И здесь на форуме есть ссылка на пример работы с графикой где кадры рендерятся со скорость 150-200 кадров/сек. (к сожалению не помню где, но поиск то есть...) Правда там не отрисовка на канве, но все же, Вам стоило бы посмотреть.

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

    И это все "свистоперделки"...

    Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.

    На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...

    Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...

  6. По-моему это именно из-за видео-карты.

    Попробуйте в файле проекта перед

    Application.Initialize;

    написать

      GlobalDisableFocusEffect := True;
      GlobalUseDX10                 := False;
      GlobalUseDX10Software   := True;
    //  GlobalUseDXInDX9Mode   := True;
    

    в общем - "поиграйтесь" с этими параметрами

  7. Ссылку, которую я Вам дал, решает именно этот вопрос и именно реализацией стилей. Создается стиль. Форма делается прозрачной, размещается на нее панель и задается ей соответственно стиль. И все - нужная форма готова.

  8.  

    Не используйте BindSource ))))

     

    Ну а по существу - используйте в ItemAppearance другие типы итемов.. Типа RatingListItem

    проинстолил компонент ваш, все равно не подходит...опять не хватает полей )

    - Item.Text = text,

    - Item.Detail = text2,

    - Item.ImageIndex = imageindex

    - Item.ButtonText text3

    больше нету полей (...

    Алекс, допустим вручную загружу Listview, просто у меня настроек полно по всем полям PositionOffset, ну и как отлаживать все это хозяйство вручную...не визуально?

    И еще, вы по датасету тоже по локате перемещаетесь?

     

    Что касается БД - большая часть "ручками".

    а LiveBindings вообще не пользую...

     

    Если Вам не хватает в установленном компоненте чего-то - добавьте в него нужное. Это не "пара минут", но реализуемо.

  9. Если попроще, то я бы сделал так:

    - один TListBox (с выравниванием либо Bottom, либо Client)

    - с нужным количеством TListBixItem, соответственно кол-ву "фигур"

    - у TListBox Columns = кол-ву TListBixItem, либо ListStyle = Horizontal

    - ну и соответственно все настройки по высоте и т.п.

    - TListBox.StyleLookup = 'transparentlistboxstyle'

    - поместил бы в каждый TListBixItem по картинке (TImage) с выравниванием Bottom

    и менял бы высоту этих картинок.......

     

    З.Ы. Если Вам не нужно что-то более "красивое"

     

    З.З.Ы. А можно сделать свой дополнительный стиль для TListBixItem, взяв за основу стандартный стиль и изменив в нем объект 'icon'. Тогда не нужен будет TImage для каждого TListBixItem, и можно будет управлять им через StylesData['icon.....']...

  10. var
      BmpNew     : TBitmap;
    begin
        BmpNew := TBitmap.Create;
        BmpNew.SetSize({нужный размер}, {нужный размер});
        BmpNew.Canvas.BeginScene;
        try
          BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;
          BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;
          BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};
          BmpNew.Canvas.Clear(0);
          BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);
        finally
          BmpNew.Canvas.EndScene;
        end;
    
        TImage{ваш объект}.Bitmap.Assign(BmpNew);
    end;
    

    думаю так

  11. Вот уже в который раз обсуждается подобный вопрос...

    Я бы даже сказал - тот же самый!

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

    Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку:

    newItem.OnApplyStyleLookup := MissMessageApplyStyle;

    Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками".

    Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п.

     

    З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint...

     

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

  12. К сожалению VScrollBar не видно, и добраться до него мне не удается.

     

    создайте хелпер и тогда "увидите" VScrollBar

    например так:

    type
      TSB_Helper = class helper for TCustomScrollBox
        function VBar: TScrollBar;
      end;
    
    { TSB_Helper }
    
    function TSB_Helper.VBar: TScrollBar;
    begin
      Result:= Self.VScrollBar;
    end;
    
    { --------- }
    
  13. "- создайте форму (например fmSplash) и на ее событие OnFormCreate делаете все что вам нужно

    - и когда, на ваш взгляд, уже пора создать главную форму приложения - обновите информацию в TfgProgressDialog и в блоке

      TThread.Synchronize(TThread.CurrentThread, procedure
     
    begin
        {....}

        Application.CreateForm(TfmMain, fmMain);
      end);

    создайте все формы вашего приложения..."

     

    чего там только нет... даже боюсь начать перечислять...

  14. Splash - да. Он и является первой формой. Все остальные создаются в рантайме уже потом. И все компоненты невизуальные - тоже на главной форме, которая создается тоже позже.

    Смысл-то такой:

    - вы можете в DesignTime создать все формы, навалять на них компоненты и т.д. и т.п.

    - но в опциях проекта уберите все формы из автосоздания, оставив только splash

    - а в коде самого проекта у вас будет что-то типа

      Application.Initialize;
      Application.CreateForm(TfmSplash, fmSplash);
      Application.Run;
    

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

    Application.CreateForm(TfmMain, fmMain);
×
×
  • Создать...