1 (edited by pavlenko.vladimir.v 2023-10-23 18:18:20)

Topic: цвет в место иконок в выподающем меню грида

Люди добрые, помогите решить проблему !
 
Я хочу сделать в меню TableGrid добавить возможность устанавливать цвет ряда и текста.
В колонке с лева предназначенной для иконок  хочу отображать действующие цвета и вот как раз это у меня не получается
 
вот к таким дебрям я пришел в итоге
даже в png перевожу, но косяк в том, что  ImageList берет либо только адрес изображения либо поток


var
ImageList:TImageList;
bmp:TBitmap;
png: TPngImage;
begin
  bmp := TBitmap.Create;
  bmp.Canvas.Brush.Color := clBlack;
  png := TPngImage.Create;
  png.Assign( bmp );
  
  ImageList:=TImageList.Create(frmMain);
  ImageList.Masked:=false;
  ImageList.ColorDepth:=cd32bit;

  ImageList.Width := 20;
  ImageList.Height := 20;

  ImageList.AddPng(????????); 

  frmMain.tgListBooks.dbPopupMenu.Images := ImageList;
  frmMain.tgListBooks.dbPopupMenu.Items[1].ImageIndex := 0;

https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=9993&download=0

Post's attachments

Attachment icon 2023-10-23_21-57-41.png 17.6 kb, 16 downloads since 2023-10-23 

2 (edited by sparrow 2023-10-23 18:48:31)

Re: цвет в место иконок в выподающем меню грида

ImageList.AddPng('имя PNG файла');

только в субботу пробовал для PageControl

без преобразований только ImageList

mask было лишним
а размер выводило 16х16
для прозрачности хватает 32 bit

Re: цвет в место иконок в выподающем меню грида

sparrow wrote:

ImageList.AddPng('имя PNG файла');

только в субботу пробовал для PageControl

без преобразований только ImageList

mask было лишним
а размер выводило 16х16
для прозрачности хватает 32 bit

решил сделать прозрачный png а цвет ImageList изменить, ни чего не вышло, если изображение полностью прозрачное, то оно выводиться черным

4 (edited by sparrow 2023-10-23 19:05:43)

Re: цвет в место иконок в выподающем меню грида

BkColor попробовал и не сработало. У меня ПНГ был рисунок на прозрачном фоне. Мне этого хватало.
Я не пробовал со стилями.


там еще есть загрузка из базы

Re: цвет в место иконок в выподающем меню грида

вот для меню

var
  il: TImageList;
begin
  il := TImageList.Create(Form1);
  il.height := 16;
  il.width := 16;
  il.Masked:=false;
  il.ColorDepth:=cd32bit;
  il.addpng('accept.png');
  il.addpng('1.png');

  Form1.menu.Images := il;
  Form1.mniFile.submenuimages := il;
  Form1.mniFile.imageindex := 0;
  Form1.mniFile.items[0].imageindex := 1;

6 (edited by pavlenko.vladimir.v 2023-10-23 19:32:24)

Re: цвет в место иконок в выподающем меню грида

sparrow wrote:

BkColor попробовал и не сработало. У меня ПНГ был рисунок на прозрачном фоне. Мне этого хватало.
Я не пробовал со стилями.


там еще есть загрузка из базы

ХА, я официально стал членом клуба (костыли и велосипеды)  big_smile big_smile big_smile
я просто добавил в изображение фигуру и вынес ее за пределы канвы, делал на фотошопе, теперь прозрачность работает и отображается нужный мне цвет

7 (edited by vovka3003 2023-10-23 19:33:44)

Re: цвет в место иконок в выподающем меню грида

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

Re: цвет в место иконок в выподающем меню грида

vovka3003 wrote:

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

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

Re: цвет в место иконок в выподающем меню грида

Но это не решает моей задачи, мне нужен свой цвет для каждого индекса

Re: цвет в место иконок в выподающем меню грида

А что не получается-то..?

11 (edited by pavlenko.vladimir.v 2023-10-24 07:48:22)

Re: цвет в место иконок в выподающем меню грида

vovka3003 wrote:

А что не получается-то..?

в каждом индексе должен быть свой цвет
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=9994&download=0

Post's attachments

Attachment icon 2023-10-24_12-37-55.png 18.24 kb, 14 downloads since 2023-10-24 

Re: цвет в место иконок в выподающем меню грида

https://i.imgur.com/cu0mDwp.png

Re: цвет в место иконок в выподающем меню грида

Не совсем понятно, что все таки должно быть ?


Если цвета ряда и текста статические и определены в вашей программе,
то нарисовать овал нужного цвета на прозрачном фоне и поместить в ImageList?

Если идея другая, можно детальнее.

14 (edited by pavlenko.vladimir.v 2023-10-24 10:01:52)

Re: цвет в место иконок в выподающем меню грида

sparrow wrote:

Не совсем понятно, что все таки должно быть ?


Если цвета ряда и текста статические и определены в вашей программе,
то нарисовать овал нужного цвета на прозрачном фоне и поместить в ImageList?

Если идея другая, можно детальнее.

не цвета динамические

Re: цвет в место иконок в выподающем меню грида

vovka3003 wrote:

https://i.imgur.com/cu0mDwp.png

все так, просто я крашу весь TImageList, а нужно поместить в каждый его индекс изображение со своим цветом, в начале я так и пытался сделать..
Создавал bmp - перекрашивал, переводил в png, но как его добавить в индекс не могу понять

Re: цвет в место иконок в выподающем меню грида

pavlenko.vladimir.v wrote:

...даже в png перевожу,..

Вопрос по коду:

var
ImageList:TImageList;
bmp:TBitmap;
png: TPngImage;
begin
  bmp := TBitmap.Create;
  bmp.Canvas.Brush.Color := clBlack;
  png := TPngImage.Create;
  png.Assign( bmp );

То есть в результате получается PNG с прозрачностью? Если да, то как ей управлять попиксельно?
Но что-то мне подсказывает, что получаются PNG в стиле программы Paint - без прозрачности.

Визуальное программирование: блог и телеграм-канал.

Re: цвет в место иконок в выподающем меню грида

k245 wrote:

То есть в результате получается PNG с прозрачностью? Если да, то как ей управлять попиксельно?
Но что-то мне подсказывает, что получаются PNG в стиле программы Paint - без прозрачности.

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

18 (edited by k245 2023-10-24 10:34:33)

Re: цвет в место иконок в выподающем меню грида

Есть задача перекрашивать черно-белые PNG с прозрачностью в цветные. Но в MVDB для этого кое-чего не хватает у TPNGImage.  Если бы получилось, то стили автоматически бы получали картинки для кнопок в нужной цветовой тональности. А то сейчас приходится мудрить и делать копии разных цветов....

Визуальное программирование: блог и телеграм-канал.

19 (edited by pavlenko.vladimir.v 2023-10-24 10:47:58)

Re: цвет в место иконок в выподающем меню грида

k245 wrote:

Есть задача перекрашивать черно-белые PNG с прозрачностью в цветные. Но в MVDB для этого кое-чего не хватает у TPNGImage.  Если бы получилось, то стили автоматически бы получали картинки для кнопок в нужной цветовой тональности. А то сейчас приходится мудрить и делать копии разных цветов....

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

bmp:TBitMap;
begin
  bmp:=TBitMap.Create;
  bmp.Width := 16;
  bmp.Height := 16;

  bmp.Canvas.Pen.Color:=$000080FF;
  bmp.Canvas.Brush.Color:=$000080FF;
  bmp.Canvas.Rectangle(0,0,bmp.Width,bmp.Height);

  frmMain.tgListBooks.dbPopupMenu.Items[6].Bitmap := bmp;

Re: цвет в место иконок в выподающем меню грида

Да это я понял.... но не теряю надежды: вдруг кому-нибудь удастся обуздать прозрачность в PNG )))

Визуальное программирование: блог и телеграм-канал.

Re: цвет в место иконок в выподающем меню грида

pavlenko.vladimir.v wrote:
vovka3003 wrote:

А что не получается-то..?

в каждом индексе должен быть свой цвет
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=9994&download=0

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

Визуальное программирование: блог и телеграм-канал.

Re: цвет в место иконок в выподающем меню грида

А не получается-то что..?

Re: цвет в место иконок в выподающем меню грида

vovka3003 wrote:

А не получается-то что..?

уже все получилось

Re: цвет в место иконок в выподающем меню грида

А то не пойму че за тёрки.... Какие-то имейдж-листы, png-файлы, потоки...
На канве битмапа спокойно все рисуется:
https://i.imgur.com/AniqC7d.png

Re: цвет в место иконок в выподающем меню грида

vovka3003 wrote:

А то не пойму че за тёрки.... Какие-то имейдж-листы, png-файлы, потоки...
На канве битмапа спокойно все рисуется:
https://i.imgur.com/AniqC7d.png


и это правда


 
  Form1.TableGrid1.dbPopupMenu.Items[5].Bitmap.height := 16;
  Form1.TableGrid1.dbPopupMenu.Items[5].Bitmap.width := 16;
  Form1.TableGrid1.dbPopupMenu.Items[5].bitmap.Canvas.Pen.Color:=$000080FF;
  Form1.TableGrid1.dbPopupMenu.Items[5].bitmap.Canvas.Brush.Color:=$000080FF;
  Form1.TableGrid1.dbPopupMenu.Items[5].bitmap.Canvas.roundrect(1,3,16,14,2,2);