Перейти к содержанию
  • Регистрация
  • 0
Alesk

Смена цвета label в runtime

Вопрос

Фрагмент кода:

    nad[g]:= tlabel.Create(tabbedwithnavigationform.label1);
    nad[g].BeginUpdate;
    nad[g].Size.height:=24;
    nad[g].Size.Width:=350;
    nad[g].Text:=we;
    nad[g].position.y:=-99;
    nad[g].Align:=talignlayout.Top;
    nad[g].FontColor:=$FFFEFEFE;
    nad[g].EndUpdate;
    nad[g].Parent:= pod[g];

где nad[g] - массив из tlabel, а pod[g] - массив из tlistview

Нужно чтобы при создании цвет текста становился белым, но почему-то не работает, цвет остается черным

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Попробуйте убрать из множества StyledSettings элемент FontColor перед изменением цвета

nad[g].StyledSettings := [TStyledSetting.Family, TStyledSetting.Size, TStyledSetting.Style];
nad[g].FontColor := $FFFEFEFE;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да и парент надо бы раньше 

EndUpdate

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

в VCL обязательным элементом EndUpdate была перерисовка

в FMX это вообще не соблюдается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 3

Ключевым здесь является TStyledSetting.FontColor
NadG.StyledSettings := NadG.StyledSettings - [TStyledSetting.FontColor];

Работает и с BeginUpdate и без оного и c любым положением "Paren :="
См. также Почему не изменяется Font.Style и Font.Size.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От лёля
      Создание ссылки из TLabel.
      Приклике на label нечего не проиходит.
      label1.Font.Style:= fsUnderline - не работает.  Есть еще варианты?
    • От SIARHEI RAHOUSKI
      Как задать свои цвета круговой диаграмме и тень под ней ? 
    • От SIARHEI RAHOUSKI
      Как изменить цвет Label?  не работает
      Label1.Color := clBlue;  
    • От SIARHEI RAHOUSKI
      При нажатии на Label действия не происходят
      procedure TForm2.Label11Click(Sender: TObject);
      begin
      Button1.visible:= true;
      {label7.Font.Style:= [];
      label8.Font.Style := [];
      label9.Font.Style := [];
      //label11.Font.Style := [fsbold];
      label10.Font.Style := [];  }

        GroupBox12.Visible := false;
        GroupBox13.Visible := false;
        GroupBox14.Visible := false;
        GroupBox15.Visible := true;
        GroupBox16.Visible := false;
      end;
    • От Barbanel
      Всем привет!
      Столкнулись с новой задачей: при копировании файла во внутреннюю память все идет хорошо, при копировании на SD-карту получаем отказ в доступе, что сегодня вполне ожидаемо.
      Умные люди говорят (и даже дают ссылку), что начиная с апи примерно 22, для того чтобы писать на карту памяти нужно просить у пользователя разрешение.
      https://stackoverflow.com/questions/33139754/android-6-0-marshmallow-cannot-write-to-sd-card
      Есть пример на Java, но я понятия не имею как это сделать на Delphi. Насколько я понимаю, выполнть Java-код из Delphi невозможно, так?
      Есть ли какой обходной путь, или встроенная возможность как запросить права у пользователя?
      Всем заранее спасибо!
    • От Alexander Samosyuk
      Создаю свой компонент с визуализацией Label в Edit, см. рис.
      При компиляции появляется еще одни Label. А при отрисовке формы нельзя скопировать готовый компнонент - выдает ошибку.
      Подскажите, как избавиться от дубликата.
      t
      type    TShowLabel = (Show, Hide);   TEditVisualLabel = class(TEdit)   private   TextLabel : TLabel;   FloatVErt : TFloatAnimation;   FloatSize : TFloatAnimation;   FloatColor : TColorAnimation;     FLabCAp : string;     function GetSHow: TShowLabel;     Procedure SetShow(Value : TShowLabel);     function GetLabelCaption: string;     Procedure SetLabelCaption(Value : string);     function GetLabelFontColor: TAlphaColor;     Procedure SetLabelFontColor(Value : TAlphaColor);     function GetStopValue : Single;     procedure SetStopValue(Value : Single);     function GetStartValue: Single;     procedure SetStartValue(Value : Single);     function GetStopFont: Single;     procedure SetStopFont(Value : Single);     function GetStartFont: Single;     procedure SetStartFont(Value : Single);     { Private declarations }   protected     procedure Enter(Sender : TObject);     procedure Exi(Sender : TObject);     { Protected declarations }   public   { Public declarations }   published   property LabelFontColor : TAlphaColor read GetLabelFontColor write SetLabelFontColor;  property LabelCaption: string read GetLabelCaption write SetLabelCaption;   property LabelPositionStop : Single read GetStopValue write SetStopValue;   property LabelPositionStart : Single read GetStartValue write SetStartValue;   property LabelSizeStopFont : Single read GetStopFont write SetStopFont;   property LabelSizeStartFont: Single read GetStartFont write SetStartFont;   property LabelVisible : TShowLabel read GetSHow write SetSHow default TShowLabel(1);   constructor Create(aowner: TComponent);override;     { Published declarations }   end; procedure Register; implementation procedure Register; begin   RegisterComponents('Samples', [TEditVisualLabel]); end; constructor TEditVisualLabel.Create(aowner: TComponent); var Del: TLabel; Family,Style,FontColor : TStyledSetting; begin  inherited Create(AOwner);   TextLabel := TLabel.create(Self);   TextLabel.Parent := self;                       // Скорее всего, что именно здесь весь затык, почему оно выполняется дважды   TextLabel.StyledSettings := [Family];   TextLabel.Align := TAlignLayout(2);   TextLabel.TextSettings.FontColor := TAlphaColorRec.Silver;   TextLabel.TextSettings.Font.Size := 14;   TextLabel.SetSubComponent(true);   FloatVErt := TFloatAnimation.Create(TextLabel);   FloatVErt.Parent :=  TextLabel;   FloatVErt.PropertyName := 'Position.Y';   FloatVErt.StopValue := -20;   FloatVErt.StartValue := 0;   FloatSize := TFloatAnimation.Create(TextLabel);   FloatSize.Parent :=   TextLabel;   FloatSize.PropertyName := 'TextSettings.Font.Size';   FloatSize.StopValue := 11;   FloatSize.StartValue := 14;   FloatColor := TColorAnimation.Create(TextLabel);   FloatColor.Parent :=   TextLabel;   FloatColor.PropertyName := 'TextSettings.FontColor';   FloatColor.StartValue := TAlphaColorRec.Silver;   LabelFontColor := TAlphaColorRec.Black;   LabelVisible := TShowLabel(0);   TextLabel.Align := TAlignLayout(2);   //TextLabel.Width := 5000;   //FloatColor.StopValue := LabelFontColor;   OnExit := Exi;   OnEnter := Enter;   end; procedure TEditVisualLabel.Enter(Sender : TObject); begin    inherited;   if TextLabel.Position.Y<>FloatVErt.StopValue then begin FloatVErt.Inverse := false; FloatVErt.Start; FloatSize.Inverse := false; FloatSize.Start; FloatColor.Inverse := false; FloatColor.Start end; end; procedure TEditVisualLabel.Exi(Sender: TObject); begin   inherited;  if (Self.Text='') and (TextLabel.Position.Y<>0) then begin FloatVErt.Inverse := true; FloatVErt.Start; FloatSize.Inverse := true; FloatSize.Start; FloatColor.Inverse := true; FloatColor.Start end; end; function TEditVisualLabel.GetLabelCaption: string; begin result := TextLabel.Text; end; function TEditVisualLabel.GetLabelFontColor: TAlphaColor; begin Result := FloatColor.StopValue; end; function TEditVisualLabel.GetSHow: TShowLabel; begin if TextLabel.Visible then Result := TShowLabel(0) else  Result := TShowLabel(1); end; function TEditVisualLabel.GetStartFont: Single; begin Result := FloatSize.StartValue; end; function TEditVisualLabel.GetStartValue: Single; begin Result := FloatVErt.StartValue; end; function TEditVisualLabel.GetStopFont: Single; begin Result := FloatSize.StopValue; end; function TEditVisualLabel.GetStopValue: Single; begin Result := FloatVErt.StopValue; end; procedure TEditVisualLabel.SetLabelCaption(Value: string); begin TextLabel.Text := Value; end; procedure TEditVisualLabel.SetLabelFontColor(Value: TAlphaColor); begin FloatColor.StopValue :=value; end; procedure TEditVisualLabel.SetShow(Value: TShowLabel); begin if Value = TShowLabel(0) then     TextLabel.Visible := true   else    TextLabel.Visible := False; end; procedure TEditVisualLabel.SetStartFont(Value: Single); begin FloatSize.StartValue := Value; TextLabel.TextSettings.Font.Size := Value; end; procedure TEditVisualLabel.SetStartValue(Value: Single); begin FloatVert.StartValue := Value; end; procedure TEditVisualLabel.SetStopFont(Value: Single); begin FloatSize.StopValue := Value; end; procedure TEditVisualLabel.SetStopValue(Value: Single); begin FloatVert.StopValue := Value; end; end.


    • От Митя Гринюк
      Когда мы на Андроид устройстве клавишей переходим в TaskManager (Менеджер запущенных приложений), мы видим наши Недавние или Запущенные приложения в виде прямоугольников/квадратов.
      А именно: квадратный "скриншот" вместимости приложения и над "скриншотом приложения" размещается TopBar, на котором отображается некоторая информация (ярлык, название приложения и цвет, читаемый с приложения, а именно colorPrimary приложения).   {Android L}
      В моём приложении, независимо от colorPrimary/colorPrimaryDark, TopBar имеет черный цвет.
      Можно ли это как-то изменить?
      Embarcadero RAD 10.2 Tokyo, Delphi.
      (использую модуль, который окрашивает даже StatusBar)
      Ниже прикреплены изображения для ознакомления с терминами.
       
       
    • От Вячеслав Холод
      Проблема такая, создаю динамически Label и нужно выровнять текст внутри по центру самой метки. 
      Пробовал: 
          with LabelG do
          begin
            StyledSettings := [];
            LabelG.TextSettings.Font.Family:='Century Gothic';
            LabelG.TextSettings.Font.Size:=14;
            LabelG.TextSettings.FontColor:=TAlphaColorRec.Aliceblue;
       -->  LabelG.TextSettings.HorzAlign.taCenter; (И :=taCenter и что только не пробовал)
          end;
       
      Помогите пожалуйста.
    • От denprox
      Доброго времени суток! Поиск по форуму не дал результатов, по этому решил спросить сам. Каким образом возможно реализовать возможность изменения размеров у некоторых объектов таким же образом, как и в дизайнере. Т.е. при выделении (клике) по объекту, активировать рамку объекта с кружочками, потянув за которые можно изменить размер ? 
  • Последние посетители   0 пользователей онлайн

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

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