Newsgroup: it.comp.lang.vo-clipper
Titolo: Combobox ReadOnly

Ciao a tutti:
ho necessita' di settare Read Only dei Combobox.
Per i SingleLineEdit e per i MultiLineEdit faccio cosi':
SendMessage(oCurrentControl:handle(),EM_SETREADONLY,DWORD(_CAST,TRUE),0L)
Funziona perfettamente.
Mentre con i combobox non funziona.
Devo fare un oCurrentControl:Disable() ma le scritte mi appaiono
scolorite e sono bruttine. Non esiste nulla per settare in read only
un combobox senza disabilitarlo?

 ho necessita' di settare Read Only dei Combobox.
Hai la possibilità di impostare lo stile del ComboBox? Se si, prova ad
impostare il CBS_DROPDOWNLIST. Questo ti permette di selezionare dalla
lista ma non di scrivere direttamente nel ComboBox. Era questo che
volevi? Se non vuoi neanche che si possa scegliere un elemento della
lista allora ti conviene sostituire il ComboBox con una semplice
TextBox.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

TextBox.
Al mio archivio devono accedere piu' persone con diversi gradi di
accesso. L'amministratore puo' fare tutto, modificare gli account e
leggere e scrivere sul database, poi c'e' chi puo' solo leggere e
scrivere tutto, chi puo' leggere e scrivere solo una parte e chi puo'
solo leggere i dati ma non modificarli.
Vorrei far leggere i combobox ma senza che possano essere modificati.
Per ora l'effetto lo ottengo disabilitando il combobox, ma non e'
bellissimo da vedere, dato che la scritta e' scolorita. Del resto per
mettere un textbox (o un sle) al posto del combobox dovrei ridisegnare
la finestra, e la cosa e' troppo onerosa. 
Alla peggio mi limito a disabilitare i combobox e a settare readonly
le SLE e le MLE. Visto che in VO i controlli di una finestra sono
tutti in un array ci vuole un attimo con un for-next.

 Vorrei far leggere i combobox ma senza che possano essere modificati.
Si, avevo immaginato una cosa del genere. Non mi pare si possa fare
senza avere il testo in grigio. Per lo meno ora non mi viene in mente
nessuna alternativa. Comunque se scopri qualcosa fallo sapere anche a me
che potrebbe essermi utile.


che potrebbe essermi utile.
Mi hanno suggerito in email di disattivare il combobox e poi
assegnargli il colore. Non e' proprio perfetto ma va gia' meglio.
In VO si fa cosi':
IF IsInstanceOf(oCurrentControl, #ComboBox)
      	oCurrentControl:Disable()
            	oCurrentControl:TextColor  :=Color{0,0,255}
ENDIF

 Non e' proprio perfetto ma va gia' meglio.
In che senso non è perfetto?


In che senso non č perfetto?
I colori risentono del fatto che il combobox e' disattivato. Come
dire, rimane un po' scolorito. Probabilmente occorre trovare i valori
RGB corretti da mettere in "Color". Faro' qualche esperimento.

 RGB corretti da mettere in "Color". Faro' qualche esperimento.
Ok, fammi sapere. Altre idee:
- Lasciare il ComboBox attivato ma mettere nella lista solo l'elemento
corrente.
- Creare un ComboBox e un TextBox. Nascondere il primo e mostrare il
secondo quando non si vuole permettere modifiche e viceversa.


secondo quando non si vuole permettere modifiche e viceversa.
Si, ci avevo pensato (con un singleLineEdit, mi sembra graficamente
piu' simile al combo.)

 ha scritto nel messaggio
news:6tqh7usod46v0ubev...@4ax.com...


 Io disabilito i combobox bloccando alcuni eventi nel metodo dispatch...
Ottimo! Mi sembra la soluzione più elegante.


Io disabilito i combobox bloccando alcuni eventi nel metodo dispatch...
Stupendo. Questo NG e' un'ottima palestra per imparare :-)