Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vg92mc$jcas$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vg92mc$jcas$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: greg <gregor.ebbing@gmx.de>
Newsgroups: comp.lang.tcl
Subject: Re: A ttk:combox with colors?
Date: Mon, 4 Nov 2024 00:58:04 +0100
Organization: A noiseless patient Spider
Lines: 91
Message-ID: <vg92mc$jcas$1@dont-email.me>
References: <3o5dij1b6quvgruokjidhqtii5bd8csn7q@4ax.com>
 <vg7aa7$96lt$2@dont-email.me> <seufijtvecnore0l6f7hfgtioc8al7407s@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 04 Nov 2024 00:58:05 +0100 (CET)
Injection-Info: dont-email.me; posting-host="d1622d9f29ffae309d86a18f7773b4f6";
	logging-data="635228"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/scrEvvEtGZ1QOWFxOjMT0448MxQMxqXk="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:FmPDDCIzFfxQgK6gZiNiTQrSSDc=
In-Reply-To: <seufijtvecnore0l6f7hfgtioc8al7407s@4ax.com>
Content-Language: de-DE

Am 03.11.24 um 23:46 schrieb Helmut Giese:
> Hello greg,
> thanks a lot for the code. Impressive: knowing about the internal
> 'popdown.f.l' and handling ttk::style - something I have (as yet?) not
> understood.
> Alas, for me it works only half: The color gets selected as wanted,
> but only covers a small part of the entry field, the rest being either
> blue when the combo has the focus and white when not. I made screen
> shots and uploaded them to 'file.io' under the URL
> 	 https://file.io/SWF4GKTWvUva
> in case you want to have a look.
> Interesting: The width of the colored part seems to vary for all
> colors - most notably for 'red' and 'yellow'.
> Nevertheless thank you for the code
> Helmut
> PS: I am on Windows 10 and run Tcl8.6.14 or ...12

Hello Helmut

The solution has the following limitation: it does not work with a naive 
theme.
(Can only be changed when using non-native and non-graphical theme) from 
Manual

The ttk::combobox consists of a ttk::entry and a tk::listbox

It's in the manual
https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_combobox.htm

Gregor


#! /usr/bin/env tclsh

package require Tk

# Procedure to style the listbox items
# interna popdown.f.l
# https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_combobox.htm
proc styleListbox {cb} {
  set popdown [ttk::combobox::PopdownWindow $cb]
  set lb "$popdown.f.l"
  set colors [$cb cget -values]
  set i 0
  foreach color $colors {
   $lb itemconfigure $i -background $color
   $lb itemconfigure $i -foreground $color
   $lb itemconfigure $i -selectbackground $color
   #text color in listbox
   #$lb itemconfigure $i -selectforeground $color
   incr i
  }
}

# https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_combobox.htm
# Can only be changed when using non-native and non-graphical themes
ttk::style theme use clam

set selectedValue ""
# Create a combobox with the custom style

ttk::combobox .cb -style CustomCombobox.TCombobox \
-values [list "green" "red" "white" "yellow" "black"] \
-textvariable selectedValue -state readonly

pack .cb -padx 20 -pady 20

# Event binding to style the internal listbox when the combobox is opened
bind .cb <ButtonPress-1> {
  after 5 [list styleListbox %W]
}

# Event binding
#  https://wiki.tcl-lang.org/page/ttk%3A%3Acombobox
#  SHOW Disabled/Readonly color (and pointer to color change)
#  https://wiki.tcl-lang.org/page/Changing+Widget+Colors	
bind .cb <<ComboboxSelected>> {
  ttk::style map CustomCombobox.TCombobox -fieldbackground "readonly 
$selectedValue"
  ttk::style map CustomCombobox.TCombobox -foreground "readonly 
$selectedValue"
  ttk::style map CustomCombobox.TCombobox -background "readonly 
$selectedValue"
  ttk::style map CustomCombobox.TCombobox -selectforeground "readonly 
$selectedValue"
  ttk::style map CustomCombobox.TCombobox -selectbackground "readonly 
$selectedValue"
}

#.cb set "white"
#event generate .cb <<ComboboxSelected>>