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

brunnengi

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

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

  • Посещение

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

    21

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

  1. Здравствуйте.

    Подскажите пожалуйста, как можно запретить (а затем восстановить) обработку ввода данных в FMX приложение под Windows?

     

    На форме имеется поле ввода (edit). Я ввожу туда номер, нажимаю Enter. Если по указанному номеру отсутствует информация, то вывожу Layout (с размещенным на нем текстом и кнопкой по которой этот layout скрывается) информацию о том что по данному номеру ничего не найдено. Но поле ввода все может принимать данные.

    И такие поля встречаются часто. Хочу как то временно запретить работу с клавиатурой, (а мышь должна работать) пока не нажмут кнопку "OK".

     

    Подскажите пожалуйста как это сделать.

  2. Текст будет меняться, в течении всего времени использования программы.

    Вариант с общим Layout и выравниванием по какому либо краю, это то что я тоже пытался сделать, как только понял что символам нельзя задать цвет по отдельности.

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

     

    Вариант номер два звучит отлично. Я бы хотел использовать его.

    Но работа демо по TTextLayout оказалась крайне не стабильна.

    Я запускаю из под Windows 8. 

    Что бы само приложение не "покрывалось" артефактами (из-за optimus'а), я ставлю FMX.Types.GlobalUseDirect2D := false;

    Но при добавление атрибутов ничего не меняется (да и в чистом виде в демо ничего не происходит).

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

     

    Как добиться чтобы Демо работала, на Windows 8?

    Может надо еще какие нибудь глобальные переменные изменить?

  3. Здравствуйте

     

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

    19997_colored_text.png

    Но так и не нашел решения. Делать слова по одной букве тоже не вариант. 

    • Как поступить, какой есть выход?
    • Может кто то уже делал и есть наработки?
  4. Sergionn прав.
    У меня тоже стоит эта "волшебная" гибридка - технология optimus.

    Приходится в каждом проекте ставить FMX.Types.GlobalUseDirect2D := false;

    Это что бы можно было сами проекты запускать.

    И среду приходиться тоже запускать с Интегрировной Карты.

    И эта проблема также актуальна и для AppMethod.

    В одном из вебинаров я задал вопрос Всеволоду, на что он ответил, что первый раз слышит про optimus и проблемы с ним.

    И можно было бы терпеть если бы не тот факт что в магазинах теперь каждый встречный поперечный ноутбук с этой технологией Optimus.

    Так что проблема реально есть увы((

  5. Да, так и есть. Это моя первая практика. В принципе FMX и так позволял делать то что мне нужно не создавая компонентов, а просто накидывая элементы друг в друга, как я это сделал на принтскрине.

    Но просто захотелось поднять свой уровень и все таки освоить технологию создания компонентов.

    Постараюсь заполнить свои пробелы. И спасибо что уделили мне время. Вы очень помогли.

  6. А есть ли возможность рисовать в run-time? Какой нибудь быстрый метод?

    Допустим когда значение sType поменяется, и картинка в Image перерисовывалась сама.

    Ниже ПринтСкрин из самой программы.

    post-1-0-71340800-1395662669.png

    • Вот если sType = 'sun' то картинка должна быть как на первом item'е
    • а если sType = 'water' то как на втором.

    Что бы это можно было в run-time менять.

    Я могу цвет каждого пикселя получить.

    Как потом их картинке присвоить в Image?

    И такая идея вообще имеет смысл? Или это я уже бредом занимаюсь?

  7. Здравствуйте.

     

    Решил не спамить в одну ветку, хоть и смежные, но все же разные вопросы.

    • В своей компоненте хочу использовать Image.
    • И что бы картинка у image менялась в зависимости от значения переменной.

    Вроде такого (vcl):

    if sType = 'sun' then image1.Picture.LoadFromFile('../sun.png');
    if sType = 'moon' then image1.Picture.LoadFromFile('../moon.png'); 

    Т.е. я так раньше делал. А как это сделать в своем компоненте, на FMX?

     

    Подскажите пожалуйста.

  8. Переделал. Вроде работает. 

    Спасибо большое за помощь и за разъяснение!  

    Не скажу что я понял все на 100%, но на 80-87% усвоил.

    Большее понимание придет наверное с практикой/опытом.)))

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

  9. Ярослав здравствуйте.

    Я только начал осваивать создание своих компонентов.

    До этого не заморачивался и делал нужные элементы интерфейса в run-time прям во врем программы.

    Но в этот раз решил сделать "по-христиански" и создать как компонент.

    Я вроде делал. И в какой то момент времени все заработало. Потом я добавил в published свойство для указания цвета для Rectangle.

    Сделал build, install. Компонет проверил и вроде заработало.

    Потом начал добавлять еще один rectangle и с тех пор все вот так вот, не пашет и все.

    Это я просто делюсь с вами своими эмоциями.))

     

    Мне надо что бы событие было в Run-Time.

    На форме FireMonkey мне посоветовали добавить

    FRectangle.Stored := False; 

     

    Я если так сделать, то работает.

    Но я не до конца понимаю что это за "уловка" такая. Что несет с собой Stored?

  10. Здравствуйте.

     

    Пытаюсь создать свой компонент. Оригинал того что хочу сделать громоздкий, поэтому упростил до минимума (ибо даже минимум не работает).
    За базу нового компонента взял TLayout. В него добавил Rectangle. Хотел что бы при клике по Rectangle выходило сообщение через ShowMessage; Но реакции нету.

     

    Вот код:

    unit PayCardItemVer1Unit;
    
    interface
    
    uses
      System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Layouts,
      FMX.Objects, System.UITypes, FMX.Graphics, FMX.Dialogs;
    
    type
      TPayCardItemVer1 = class(TLayout)
      private
        FRectangle1 : TRectangle;
        procedure rcClick(Sender: TObject);
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      end;
    
    procedure Register;
    
    implementation
    
    procedure Register;
    begin
      RegisterComponents('Samples', [TPayCardItemVer1]);
    end;
    
    { TPayCardItemVer1 }
    
    constructor TPayCardItemVer1.Create(AOwner: TComponent);
    begin
      inherited;
      FRectangle1 := TRectangle.Create(self);
      FRectangle1.Fill.Kind := TBrushKind.bkSolid;
      FRectangle1.Fill.Color := $FFFF78C9;
      FRectangle1.Align := TAlignLayout.alContents;
      FRectangle1.Parent := self; 
      FRectangle1.HitTest := true;
      FRectangle1.OnClick := rcClick;
    end;
    
    destructor TPayCardItemVer1.Destroy;
    begin
      inherited;
    end;
    
    procedure TPayCardItemVer1.rcClick(Sender: TObject);
    begin
      ShowMessage('rc Click OK!');
    end;
    
    end. 

    Подскажите пожалуйста, что я не так делаю.

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