Newsgroup: it.comp.lang.visual-basic
Titolo: [?2] Cambiare il colore del disabilitato.

Io ci riprovo a postare e scusate l'insistenza.
Se imposto a False la proprietą Enabled di un Textbox, il colore del testo
al suo interno č, per impostazione predefinita, grigio. E' possibile avere
questo testo in un colore diverso?
Grazie per l'eventuale aiuto.

 wrote in message
0rk06.158147$DG3.3...@news2.giganews.com...

Non credo sia possibile, comunque puoi ovviare impostando la proprietą
Locked del textBox su True: ottinine lo stesso effetto dell'Enabled e puoi
comunque modificare i colori.
Ciao, Enrico.
------------------------------------------------
Dim VbEnry As Enrico
e-mail : 
vbe...@supereva.it
ICQ: 93357350
------------------------------------------------

 ------------------------------------------------
Si, così faccio anch'io per i TextBox, ma ti ringrazio comunque per il
suggerimento. La verita' e' che, pero', vorrei applicare la cosa anche ad
altri controlli tipo checkbox ,etc.  Lo avevo precisato nel precedente
thread e me ne sono dimenticato in questo. Ah, la capoccia!!!
In realta', un sistema lo conosco, ma anche se efficace, non è proprio
pulito. Si potrebbe inserire il controllo in un frame disabilitato, magari
senza bordo. La questione e' che mi scoccia ogni volta aggiungere al form un
frame di comodo. La soluzione piu' pulita resta quella di cambiare
l'impostazione predefinita di VB. Chissa' che cercando cercando non esca
fuori? Ci sara' qualche API del caso? Come si dice, con API.... si vola!
Buone feste.

 wrote in message
news:lIp06.1959$n5.2...@news6.giganews.com...


 wrote in message
news:91vb8g$2n58$1...@stargate1.inet.it...


 ho una macchina NT)...
[CUT]
Io ho una sistema win98 e il codice non funzia. Almeno io non ci sono
riuscito (considera pero' che conosco molto poco le API).
Nel Knowledge Base sul sito MS questa mattina ho trovato questo articolo.
SOMMARIO
Questo articolo mostra come cambiare il colore del testo disabilitato in
un'applicazione Visual Basic
ULTERIORI INFORMAZIONI
Molti controlli quando vengono disabilitati utilizzano come colore di
default quello impostato nel sistema, in genere il Gray. Il seguente esempio
utilizza l'API SetSysColors per cambiare questo colore.
Esempio di codice
aprire un nuovo progetto standard.exe
inserire un command button ed un TextBox
scrivere nel textbox del testo ed impostare la prop Enabled a False
inserire nel form il seguente codice:
    Option Explicit
      Private Declare Function SetSysColors Lib "user32" (ByVal nChanges _
         As Long, lpSysColor As Long, lpColorValues As Long) As Long
      Dim NewColor(0) As Long
      Dim IndexArray(0) As Long
      Private Const COLOR_GRAYTEXT = 17
      Private Sub Command1_Click()
         IndexArray(0) = COLOR_GRAYTEXT
         'Randomly sceglie un nuovo colore.
         NewColor(0) = QBColor(Int(Rnd * 16))
         SetSysColors 1, IndexArray(0), NewColor(0)
      End Sub
      Private Sub Command2_Click()
         Text1.Enabled = False
      End Sub
In effetti funziona, ma su alcuni controlli non va (per es. per la caption
dei checkbox). Comunque gia' cosi' puo' andare. Che mi puoi dire a riguardo?
Ciao.

 Ciao.
Alcune cose posso dirtele, soprattutto il motivo per cui l'ho lasciata
stare:
Set*Sys*Colors significa che cambia le impostazioni di tutto il sistema, non
solo quelle della tua applicazione, il che potrebbe dare molto fastidio
all'utente...
In effetti potrebbe darti perfino delle grane legali se forzi l'utente a
cambiare una propria impostazione senza che lui possa impedirlo.
Per quanto riguarda le checkbox e gli altri oggetti analoghi, temo che il
problema dipenda dal loro tipo.
Questi infatti sono dei '3D Objects', il che implica che la gestione del
disabled e' fatta mediante un algoritmo interno che, ad occhio, calcola un
delta tra il colore di sfondo e un altro colore, direi una costante interna
o un valore calcolato al momento, che serve a dare l'effetto 3D.
Il workaround (per le checkbox) e' usare una label, di TabStop
immediatamente precedente a quello della vera checkbox (in modo che, dato
che la label non prende il focus, la checkbox venga selezionata ogni volta
che clicchi la label), che funga da caption.
Per i button devi usare un'immagine. Inoltre, volendo, puoi usare
un'immagine anche per gli altri controlli 3D.
Ciaotutti,
Alessandro


[CUT]
Concordo. Vorra' dire che tornero' al metodo del Frame, come detto
precedentemente. Mi e' piu' congeniale.
Hi!