x11 Posted November 8, 2021 Share Posted November 8, 2021 On 10/3/2021 at 9:43 PM, Sherzod said: Try this. Нужна какая-то настройка, чтобы скрывать прозрачность. Просто часто прозрачность не нужна. И не хватает кнопки "Очистить", чтобы можно было выбрать значение "без цвета" (no color), типа NULL или NIL . И не хватает мобильной версии. Link to comment Share on other sites More sharing options...
x11 Posted November 8, 2021 Share Posted November 8, 2021 А как мне программно указать пустой цвет? comboColor2.AColor := Null; Появляется ошибка: Could not convert variant of type (Null) into type (Int64). Если я пишу: comboColor2.AColor := TAlphaColorRec.Null; То ничего не происходит вообще, цвет не меняется. Link to comment Share on other sites More sharing options...
x11 Posted November 8, 2021 Share Posted November 8, 2021 Выбираю NULL. Запускаю, открываю окно, а там - красный цвет выбран. Link to comment Share on other sites More sharing options...
Sherzod Posted November 8, 2021 Author Share Posted November 8, 2021 18 minutes ago, x11 said: comboColor2.AColor := TAlphaColorRec.Null; То ничего не происходит вообще, цвет не меняется. uColorComboBox.pas procedure TUniColorComboBox.SetJSColor(AColor: TAlphaColor); var Ident: Integer; ColorStr: string; begin if AColor = claNull then begin JSCall('setValue', ['#00000000']) end else if AlphaColorToString(AColor).Chars[0] <> '#' then JSCall('setValue', [LowerCase(AlphaColorToString(AColor))]) else begin ColorStr := AlphaColorToString(AColor); ColorStr := Copy(ColorStr, 4, 9) + Copy(ColorStr, 2, 2); JSCall('setValue', [ColorStr]); end; end; 1 Link to comment Share on other sites More sharing options...
x11 Posted November 8, 2021 Share Posted November 8, 2021 Еще небольшая проблемка. Взял ваш стандартный пример CellDraw и указал там тот цвет, который можно выбрать из AColor этой новой компоненты: вот кусок кода procedure TMainForm.UniDBGrid1DrawColumnCell(Sender: TObject; ACol, ARow: Integer; Column: TUniDBGridColumn; Attribs: TUniCellAttribs); begin if ACol=0 then begin Attribs.Color:=-13076753;//$E0E0E0; Attribs.Font.Style:=[fsBold]; end; ... ... т.е. указал: Attribs.Color:=-13076753; На первой картинке результат и, как видите, цвет черный. А на второй картинке - это как на самом деле выглядит выбранный синий цвет "-13076753". Link to comment Share on other sites More sharing options...
x11 Posted November 8, 2021 Share Posted November 8, 2021 Так норм. Attribs.Color:= TAlphaColorRec.ColorToRGB(TAlphaColor(-13076753)); т.е. компоненте не хватает несколько свойств, например свойства, которое бы возвращало именно TColor. И свойства, которе бы возвращало имя цвета, как в справке https://docwiki.embarcadero.com/Libraries/Sydney/en/System.UITypes.TAlphaColorRec было бы очень удобно Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 Компонента сделана не совсем правильно. Было бы удобней и практичней, если бы было 2 кнопки. 1. Выбрать цвет по имени из списка. 2. Выпадающее окно, как сейчас сделано. Можно было бы самому добавить триггер, но свойства такого нет Link to comment Share on other sites More sharing options...
Sherzod Posted November 9, 2021 Author Share Posted November 9, 2021 2 minutes ago, x11 said: Компонента сделана не совсем правильно. Cильно не критикуйте пожалуйста 5 minutes ago, x11 said: Можно было бы самому добавить триггер, но свойства такого нет Вы имеете в виду пользовательский цвет. Если да, то тогда используйте двойной клик. Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 4 minutes ago, Sherzod said: Cильно не критикуйте пожалуйста я стараюсь но я хочу и помочь, чтобы получилась хорошая, гибкая и удобная компонента Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 Вам бы скрестить тот, код, который вы мне давали с выпадающим списком и именами цветов с этой новой компонентой. И добавить в uniGUI нормальную полноценную компоненту и мобильную в том числе. Ведь в uniGUI нет полноценной компоненты выбора цвета. Вы уже давно обещали Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 1 hour ago, x11 said: код, который вы мне давали с выпадающим списком и именами цветов я имел ввиду, вот этот пример Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 На всякий случай примеры для конвертации Color/TAlphaColor/TAlphaColorRec просто оставлю здесь var Color: TColor; begin TColorRec(Color).R := 123; TColorRec(Color).G := 113; TColorRec(Color).B := 13; Rectangle1.Fill.Color := Color; end; var Color: TAlphaColor; begin TAlphaColorRec(Color).R := 123; TAlphaColorRec(Color).G := 113; TAlphaColorRec(Color).B := 13; TAlphaColorRec(Color).A := 126; Rectangle1.Fill.Color := Color; end; ses System.UITypes; var Color: TAlphaColor begin Color := TAlphaColorF.Create(123/255, 113/255, 13/255, 126/255).ToAlphaColor; end; Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 On 10/5/2021 at 11:34 AM, Sherzod said: Тогда, пожалуйста не используйте на данный момент. Эта ошибка в ядре, в js компоненте. а как исправить эту ошибку? '$anc0e5ea' is not a valid integer value. я так понял, это когда прозрачность меняешь Link to comment Share on other sites More sharing options...
x11 Posted November 9, 2021 Share Posted November 9, 2021 6 hours ago, Sherzod said: Вы имеете в виду пользовательский цвет. Подскажите, пожалуйста, а как вы сделали цикл по TAlphaColorRec, чтобы вставить их в свойство AColor? Спасибо. Link to comment Share on other sites More sharing options...
x11 Posted November 10, 2021 Share Posted November 10, 2021 23 hours ago, Sherzod said: Вы имеете в виду пользовательский цвет. а подскаждите еще, пожалуйста, как разукрасить каждую строку комбобокса в свой цвет? Цвет указан в скобках.... вот я наполнил обычный uniCombobox ... comboColor3.Clear; System.UIConsts.GetAlphaColorValues(FillColorsCombo); end; procedure TfrdEditObject.FillColorsCombo(const S: String); begin comboColor3.Items.Add(Format('%s (%x)', [s, StringToAlphaColor(s)])); end; Я понимаю., что как-то через событие AfterRender, но не знаю как. Спасибо. Link to comment Share on other sites More sharing options...
x11 Posted November 10, 2021 Share Posted November 10, 2021 На форме есть extUniColorCombobox (comboColor2) из которого можно выбрать кастомный любой цвет + стандартный uniCombobox (comboColor3) из которого можно выбрать именованный стандартный цвет (из Delphi-набора TAphaColorRec) procedure TfrdEditObject.FillColorsCombobox; begin // наполнить стандартными цветами список, например, при старте формы/фрейма comboColor3.Clear; System.UIConsts.GetAlphaColorValues(FillColorsCombo); end; procedure TfrdEditObject.FillColorsCombo(const S: String); begin // см справку // https://docwiki.embarcadero.com/Libraries/Sydney/en/System.UITypes.TAlphaColorRec // https://docwiki.embarcadero.com/Libraries/Sydney/en/System.UIConsts.GetAlphaColorValues comboColor3.Items.AddObject(Format('%s (%x)', [s, StringToAlphaColor(s)]), Pointer(StringToAlphaColor(s))); end; procedure TfrdEditObject.comboColor3Select(Sender: TObject); begin //в comboColor3 выбираем стандартный именованный цвет // и присваиваем выбранное значение кастомному комбобоксу comboColor2, чтобы было видно визуально, что выбрано comboColor2.AColor := integer(comboColor3.Items.Objects[comboColor3.ItemIndex]); end; // вызвать процедуру наполнения comboColor3 ... ... procedure TfrdEditObject.SetColor(color: TColor); Var AlphaColor: TAlphaColor; AColor: single; AStr: string; begin // установить прозрачность if color = 0 then Acolor := 0// если цвет не был выбран, то полностью прозрачный else Acolor := 1;// если цвет был выбран, то непрозрачный //конвертировать в AlphaColor из RGB, т.к. в базе храниться только RGB AlphaColor := TAlphaColorF.Create(TColorRec(color).R/255, TColorRec(color).G/255, TColorRec(color).B/255, AColor).ToAlphaColor; comboColor2.AColor := AlphaColor; // есть выбранный цвет начинается с #, а не с буквы, то такого имени у цвета нет и его нуждно добавить, чтобы // пользователь видел, что что-то выбрано AStr := AlphaColorToString(AlphaColor); if AStr.Chars[0] = '#' then comboColor3.Items.AddObject(Format('%s (%x)', [AStr, StringToAlphaColor(AStr)]), Pointer(StringToAlphaColor(AStr))); comboColor3.ItemIndex := comboColor3.items.IndexOfObject(Pointer(comboColor2.AColor)); end; Вот такой костыль получился. Если поможете это все связать в одну визуальную компоненту, будет все очень полезно. Спасибо. Link to comment Share on other sites More sharing options...
x11 Posted November 11, 2021 Share Posted November 11, 2021 Подскажите, как нарисовать цветной прямоугольник в комбобоксе опираясь на вот этот пример? Значение цвета указано в скобках. Или даже разукрасить фон строк комбобокса. Цвета в кобобокс зщагружаются стандартным способом: comboColor3.Items.AddObject(Format('%s (%x)', [s, StringToAlphaColor(s)]), Pointer(StringToAlphaColor(s))); Link to comment Share on other sites More sharing options...
Sherzod Posted November 11, 2021 Author Share Posted November 11, 2021 3 minutes ago, x11 said: Подскажите, как нарисовать цветной прямоугольник в комбобоксе опираясь на вот этот пример? Ну вроде там и есть пример как это сделать: Link to comment Share on other sites More sharing options...
x11 Posted November 17, 2021 Share Posted November 17, 2021 Не хватает мобильной версии. Не хватает встроенной кнопки Clear и встроенных триггеров. Link to comment Share on other sites More sharing options...
kazakoff Posted December 13, 2021 Share Posted December 13, 2021 Добрый день, а как скачать компоненту из первого поста? Link to comment Share on other sites More sharing options...
Sherzod Posted December 13, 2021 Author Share Posted December 13, 2021 2 minutes ago, kazakoff said: Добрый день, а как скачать компоненту из первого поста? Добрый день, Link to comment Share on other sites More sharing options...
x11 Posted December 13, 2021 Share Posted December 13, 2021 а когда появится полноценная компонента выбора цвета для десктопа и мобильной версии? спасибо 1 Link to comment Share on other sites More sharing options...
picyka Posted December 15, 2021 Share Posted December 15, 2021 Good morning, where can I get the latest version of this component? Sorry, anything. Link to comment Share on other sites More sharing options...
x11 Posted December 15, 2021 Share Posted December 15, 2021 no component Link to comment Share on other sites More sharing options...
x11 Posted December 18, 2021 Share Posted December 18, 2021 up Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now