Page 1 of 1
ComboBox mas amcho que el definido....
Posted: Fri Oct 05, 2007 5:01 pm
by dbzap
hola a todos...
me gustaria desplegar una lista desde el combobox, pero que fuera mas ancha que el espacio fisico en el cual pongo dicho combobox.
Tengo una lista para desplegar y su ancho soporta por ejemplo 10 caracteres...pero me gustraria que desplegara una lista con mayor cantidad de caracteres, sin que estos queden bajo la barra de desplazamiento
Agradecido de antemano.
Posted: Fri Oct 05, 2007 6:01 pm
by QAZWSX2K
la amigo no entiendo tu pregunta, uno modifica el ancho del combobox a como uno quiera, de todos modos te pongo un ejemplo de como yo los uso, espero te sirva
SOCIEDADES={}
AADD(SOCIEDADES,"COMPAÑIA ANONIMA ")
AADD(SOCIEDADES,"RESPONSABILIDAD LIMITADA ")
AADD(SOCIEDADES,"ASOCIACION ")
AADD(SOCIEDADES,"COMANDITA ")
AADD(SOCIEDADES,"FUNDACION ")
AADD(SOCIEDADES,"CORPORACION ")
AADD(SOCIEDADES,"COMUNIDAD ")
AADD(SOCIEDADES,"SOCIEDAD ANONIMA ")
AADD(SOCIEDADES,"SOCIEDAD COLECTIVA ")
AADD(SOCIEDADES,"COOPERATIVA ")
@ 175, 60 COMBOBOX OBOX VAR xTSOCIE ITEMS SOCIEDADES OF FICHA:ADIALOGS[1] size 100,100 PIXEL
Posted: Fri Oct 05, 2007 6:07 pm
by Antonio Linares
Julio,
Prueba con:
#define CB_SETDROPPEDWIDTH 0x0160
oCombo:SendMsg( CB_SETDROPPEDWIDTH, nWidth )
Posted: Fri Oct 05, 2007 6:38 pm
by dbzap
Maestro :
El parametro nWidth ... a que corresponderia ?
Saludos
Posted: Fri Oct 05, 2007 7:04 pm
by Antonio Linares
Al ancho que deseas darle en pixeles
Posted: Fri Oct 05, 2007 7:13 pm
by dbzap
y alguna funcion que comvierta caracteres en pixels ?
o algun ejemplo que me lo demuestre ?
gracias
Posted: Fri Oct 05, 2007 8:53 pm
by dbzap
no resulta....
la imagen queda recortada y el item mayor queda bajo el vscroll....
tengo la imagen ( en pequeño ) pero no se como adjuntarla
gracias
este es el codigo :
Code: Select all
...
Local aTipos := { "Producto Estándar",;
"Producto Seriado/Activo Fijo",;
"Producto Multipropósito",;
"Servicios",;
"Productos Genéricos",;
"Productos Crías de Genéricos" }
...
REDEFINE BTNGET oDescri VAR cDescri ID 91 Of oDlg
[b]
REDEFINE COMBOBOX oTipo VAR cTipo ITEMS aTipos ID 92 Of oDlg ;
VALID ( If( oTipo:nAt<>0,;
cTipoReal := aTipoReal[oTipo:nAt],;
NIL ),;
.T. )
oTipo:SendMsg( CB_SETDROPPEDWIDTH, 280 )
[/b]
REDEFINE BTNGET oFami VAR cFami ID 93 Of oDlg
( con el define que me indicaste en el top del PRG )
Posted: Fri Oct 05, 2007 8:59 pm
by Antonio Linares
Julio,
El mensaje tienes que enviarlo desde la claúsula ON INIT ya que antes el control no tiene un handle de ventana válido:
ACTIVATE DIALOG oDlg ;
ON INIT oTipo:SendMsg( CB_SETDROPPEDWIDTH, 280 )
Posted: Fri Oct 05, 2007 9:10 pm
by dbzap
Perfecto !!!
Pero para terminarla, existira una funcion que convierta de caracteres a pixeles ?
Mil gracias
Posted: Fri Oct 05, 2007 11:18 pm
by Antonio Linares
GetTextWidth( 0, cTexto, oFont:hFont ) --> nPixels
Posted: Sat Oct 06, 2007 9:13 pm
by FiveWiDi
Antonio,
Antonio Linares wrote:GetTextWidth( 0, cTexto, oFont:hFont ) --> nPixels
Viendo estas líneas, no sería posible crear una cláusula AUTOWIDTH para los SAY?
Algo así como:
"METHOD New( nRow, nCol, bText, oWnd, cPicture, oFont,;
lCentered, lRight, lBorder, lPixels, nClrText, nClrBack,;
nWidth, nHeight, lDesign, lUpdate, lShaded, lBox, lRaised, lAutoWidth ) CLASS TSay
.../...
if lAutoWidth
::nRight = ::nLeft + GetTextWidth( 0, ::cCaption, ::oFont:hFont ) - 1
EndIf
if ::lDrag
::CheckDots()
endif
return Self"
Saludos
Carlos G.