Página 1 de 1

Alineamiento Edit en un Browse

Publicado: Mar Dic 20, 2005 3:58 pm
por Xevi
Dispongo de un Browse, el cual una columna dependiendo de unas caracterí­sticas, el texto va alineado a la derecha o a la izquierda.
METHOD Browse2Column3DrawCell( oSender, cText, nClrText, nClrPane, lHighLite ) CLASS TFrmORAlbarans
If ::oBrowse2:nArrayAt > 0 .and. ::oBrowse2:nArrayAt <= Len( ::oBrowse2:aArrayData )
oSender:SetAlignment( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,10], .F. )
::Browse2ColumnsDrawCell( oSender, cText, nClrText, @nClrPane, lHighLite )
EndIf
RETURN Nil
Bien, pues cuando entro en edición...
coje el alineamiento de la columna al crearse, no el de la celda a editar...
¿como puedo decirle al Edit como debe estar alineado????
Igual sucede con un Browse... en el IDE, la columna la definimos de alineamiento taRIGHT... y desde programa en tiempo de ejecución en el evento OnCreate del Browse le establecemos esta columna a taLEFT,... el visionado de la columna la hace correctamente a taLEFT, pero cuando entramos en edición de esa columna, el edit está alineado a taRIGHT. Coje el alineamiento de la creación del Browse desde el IDE, no la del evento Oncreate del mismo browse.
Un Saludo,
Xevi.
--

Alineamiento Edit en un Browse

Publicado: Mar Dic 20, 2005 6:02 pm
por ignacio
Xevi,
No es posible, por la misma razón que comentabamos hace poco tiempo en este mismo foro. El API de Windows no permite cambiar la alineación del control una vez que se ha creado. Y no intentes destruirlo y crear uno nuevo porque entonces se pierde el orden de tabulación.
Te anticipo que todos los objetos oGridEdit de cada columna se crean al mismo tiempo que las columnas precisamente para permitir que se puede asignar cualquiera de sus propiedades y eventos.
Tan sólo puedo recomendarte que en dicho caso realices la edición únicamente con el botón y muestres un pequeño formulario modal para recoger el dato. No se me ocurre otra forma. Lo siento
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:43a81c08$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Dispongo de un Browse, el cual una columna dependiendo de unas caracterí­sticas, el texto va alineado a la derecha o a la izquierda.
METHOD Browse2Column3DrawCell( oSender, cText, nClrText, nClrPane, lHighLite ) CLASS TFrmORAlbarans
If ::oBrowse2:nArrayAt > 0 .and. ::oBrowse2:nArrayAt <= Len( ::oBrowse2:aArrayData )
oSender:SetAlignment( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,10], .F. )
::Browse2ColumnsDrawCell( oSender, cText, nClrText, @nClrPane, lHighLite )
EndIf
RETURN Nil
Bien, pues cuando entro en edición...
coje el alineamiento de la columna al crearse, no el de la celda a editar...
¿como puedo decirle al Edit como debe estar alineado????
Igual sucede con un Browse... en el IDE, la columna la definimos de alineamiento taRIGHT... y desde programa en tiempo de ejecución en el evento OnCreate del Browse le establecemos esta columna a taLEFT,... el visionado de la columna la hace correctamente a taLEFT, pero cuando entramos en edición de esa columna, el edit está alineado a taRIGHT. Coje el alineamiento de la creación del Browse desde el IDE, no la del evento Oncreate del mismo browse.
Un Saludo,
Xevi.
--

Alineamiento Edit en un Browse

Publicado: Mar Dic 20, 2005 8:20 pm
por Xevi
Ignacio,
Mis dudas me quedan de que sea culpa del API de Windows...
Pues en la GUI de C3 se puede cambiar el alineamiento de un Edit...
METHOD Button1OnClick( oSender ) CLASS TForm1
::Edit1:Alignment := If( ::Edit1:Alignment = taRightJustify, taLeftJustify, taRightJustify )
return
No entiendo de GUIs ni de API... pero si una GUI lo hace... otra deberí­a de poder hacerlo ¿no???
Supongo que las dos GUIs van a parar al mismo API de Windows...
Repito que no entiendo de GUIs ni de API... no me tomeis esta sugerencia como un reproche hacia vuestra GUI...
sólo que la otra GUI esta bastante menos avanzada que la vuestra, y tenga eso ya implementado.
¿Habrá llamado a Bill??? lo dudo!!! jejeje.
Gracias.
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:43a83912$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
No es posible, por la misma razón que comentabamos hace poco tiempo en este mismo foro. El API de Windows no permite cambiar la alineación del control una vez que se ha creado. Y no intentes destruirlo y crear uno nuevo porque entonces se pierde el orden de tabulación.
Te anticipo que todos los objetos oGridEdit de cada columna se crean al mismo tiempo que las columnas precisamente para permitir que se puede asignar cualquiera de sus propiedades y eventos.
Tan sólo puedo recomendarte que en dicho caso realices la edición únicamente con el botón y muestres un pequeño formulario modal para recoger el dato. No se me ocurre otra forma. Lo siento
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:43a81c08$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Dispongo de un Browse, el cual una columna dependiendo de unas caracterí­sticas, el texto va alineado a la derecha o a la izquierda.
METHOD Browse2Column3DrawCell( oSender, cText, nClrText, nClrPane, lHighLite ) CLASS TFrmORAlbarans
If ::oBrowse2:nArrayAt > 0 .and. ::oBrowse2:nArrayAt <= Len( ::oBrowse2:aArrayData )
oSender:SetAlignment( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,10], .F. )
::Browse2ColumnsDrawCell( oSender, cText, nClrText, @nClrPane, lHighLite )
EndIf
RETURN Nil
Bien, pues cuando entro en edición...
coje el alineamiento de la columna al crearse, no el de la celda a editar...
¿como puedo decirle al Edit como debe estar alineado????
Igual sucede con un Browse... en el IDE, la columna la definimos de alineamiento taRIGHT... y desde programa en tiempo de ejecución en el evento OnCreate del Browse le establecemos esta columna a taLEFT,... el visionado de la columna la hace correctamente a taLEFT, pero cuando entramos en edición de esa columna, el edit está alineado a taRIGHT. Coje el alineamiento de la creación del Browse desde el IDE, no la del evento Oncreate del mismo browse.
Un Saludo,
Xevi.
--

Alineamiento Edit en un Browse

Publicado: Mar Dic 20, 2005 8:37 pm
por jfgimenez
Xevi,
Mis dudas me quedan de que sea culpa del API de Windows...
La documentación del API indica claramente que una vez creado el control no se puede cambiar.
Pues en la GUI de C3 se puede cambiar el alineamiento de un Edit...
METHOD Button1OnClick( oSender ) CLASS TForm1
::Edit1:Alignment := If( ::Edit1:Alignment = taRightJustify, taLeftJustify, taRightJustify )
return
No entiendo de GUIs ni de API... pero si una GUI lo hace... otra deberí­a de poder hacerlo ¿no???
Supongo que las dos GUIs van a parar al mismo API de Windows...
Repito que no entiendo de GUIs ni de API... no me tomeis esta sugerencia como un reproche hacia vuestra GUI...
sólo que la otra GUI esta bastante menos avanzada que la vuestra, y tenga eso ya implementado.
¿Habrá llamado a Bill??? lo dudo!!! jejeje.
No sé exactamente qué hara Bruno, pero podemos especular un poco... ;-)
Posiblemente, en C3 se destruye y se vuelve a crear el control. Esto permitirí­a cambiar esos estilos que no permite cambiar el API cuando el control ya está creado. Pero tiene el inconveniente de que al hacer esto, el control pasa al final del todo en la lista de controles hijos del formulario o de su contenedor, lo que provoca que el orden de tabulación también se vea alterado.
--
Un saludo,
José F. Giménez
--