Newsgroup: it.comp.lang.vo-clipper
Titolo: ComboBox e CBS_UPPERCASE

Salve,
in un controllo di tipo COMBOBOX in modalità Drop Down, ossia con la
possibilità di inserire da tastiera un valore come se fosse un controllo
SINGLELINEEDIT, vorrei poter forzare i caratteri inseriti in maiuscolo.
Se nella riga relativa al RESOURCE della finestra aggiungo manualmente
CBS_UPPERCASE
alle proprietà come nell'esempio:
 CONTROL "&C", CERCASCUOLA_CBCITTA, "ComboBox",
CBS_UPPERCASE|CBS_DISABLENOSCROLL|CBS_SORT|CBS_DROPDOWN|WS_TABSTOP|WS_CHILD|
NOT WS_VISIBLE|WS_VSCROLL, 168, 26, 175, 196
il problema viene risolto ma non appena modifico qualcosa nella finestra e
ricompilo il modulo, sparisce la mia modifica.
Ho provato anche a mandare un:
  SendMessage(SELF:oDCCbCitta:Handle(), CBS_UPPERCASE, 0,  1)
nel post init, ma senza esiti.
Cosa mi consigliate ? a parte il classico:
sCitta := AllTrim(Upper(SELF:oDCCbCitta:CurrentText))
prima del suo utilizzo
Buon lavoro a tutti
claudio carletta

Tu stai modificando il codice che VO genera e rigenera in automatico ad ogni
modifica riguardante il controllo o la sua finestra quindi... è logico

 ha scritto nel messaggio
news:9bppc.191994$hc5.8...@news3.tin.it...



Carissimo Enio, mi sono espresso male, lo so che sto modificando il codice
che genere VO e che quindi perdo ogni mia modifica ad ogni accesso all'IDE
della finestra che contiene il controllo.
Io volevo solo mettere in evidenza che esiste una proprietà, CBS_UPPERCASE,
del controllo ComboBox che permette di forzare il campo di immissione in
maiuscolo.
Speravo solo che qualcuno mi indicasse la strada per utilizzare questa
proprietà esistente nel PostInit della finestra
Ciao

 Massimo
Ho provato a creare un oggetto Fieldspec di nome CampoMaiuscolo che avesse
la Picture "@!" e nel controllo ComboBox ho messo Inherit from
CampoMaiuscolo, ma tutti i metodi della ComboBox che chiamo mi danno errore
se faccio ereditare il controllo da un Fieldspec.
Oppure ho capito male il tuo suggerimento ...
Ciao Claudio


CBS_UPPERCASE indica uno dei styles che il controllo può assumere, basta
guardare nel help delle classi di vo.
Ad Ogni Buon Conto puoi utilizzare il method SetStyle(liStyle, lAdd) e cioè
yourComboxControl:SetStyle(CBS_UPPERCASE, true).
Tra l'altro del  controllo che si occupa dell'editing puoi in pratica
assumere il controllo totale :
hSleEdit  := getwindowlong(hHnd, GWL_CHILD)  // Handle della singlelineedit
SetWindowLong(hHnd,GWL_WINDOWPROC, ptr->Funzione di controllo)
Scusami della poca precisione nell'utilizzo delle due funzioni di cui sopra
ma in questo momento non ho niente a cui fare riferimento per essere più
preciso, tra l'altro sono funzioni ben documentate nel sdk di windows anche
perchè lo scopo è quello di capire altre possibilità disponibili.
Fammi sapere se ti funziona.
Ciao Luigi De Palma

 SetWindowLong(hHnd,GWL_WINDOWPROC, ptr->Funzione di controllo)
Questa invece non l'ho proprio capita ;...-(


 ha scritto nel messaggio
news:u9Gqc.289304$rM4.12...@news4.tin.it...


 style diretto .
Ciao Luigi
Il tuo suggerimento ha risolto il problema, grazie.
Ne ho fatto una funzione che voglio condividere con il gruppo
----------------------------------------------------------------------------
----------------------
FUNCTION AddStyle(oControllo AS OBJECT, NewStyle AS INT ) AS LOGIC
  LOCAL liStyle AS LONGINT
  LOCAL hChild  AS PTR
  LOCAL lOkFun AS LOGIC
  hChild  := GetWindow(oControllo:Handle(), GW_CHILD)
// Ottieni l'handle del controllo
  liStyle := GetWindowLong(hChild, GWL_STYLE)
// Ottieni lo Style del controllo
  liStyle := _OR(liStyle, NewStyle)
// Aggiungi il NewStyle agli style esistenti
 lOkFun := iif(Empty(SetWindowLong(hChild, GWL_STYLE, liStyle)), FALSE,
TRUE)
// Cambi lo style al controllo
RETURN lOkFun
----------------------------------------------------------------------------
----------------------
Buon lavoro a tutti