PDA

Ver la Versión Completa : TAlign


dvlt
03-01-2008, 18:57:56
Hola compañer@s,
tengo un pequeño problema, veréis, necesito hacer una conversión de un string a un tipo TAlign, dado que en ese string tengo por ejemplo 'alClient' pero al asignarlo a la propiedad me dice que los tipos no coinciden. No consigo dar con la forma de hacerlo... Alguien se ha encontrado con esto antes?

Gracias a todos!

enecumene
03-01-2008, 19:05:15
Hola compañer@s,
tengo un pequeño problema, veréis, necesito hacer una conversión de un string a un tipo TAlign, dado que en ese string tengo por ejemplo 'alClient' pero al asignarlo a la propiedad me dice que los tipos no coinciden. No consigo dar con la forma de hacerlo... Alguien se ha encontrado con esto antes?

Gracias a todos!

Hola podrias mostrarnos su codigo para ver lo que estas haciendo o al menos nos puedes dar un poco mas de informacion acerca de lo que intentas hacer?.

Saludos.

dvlt
03-01-2008, 19:13:06
Claro,
a ver, el tema esta que en una cadena tengo el align que voy a darle a un componente, por ejemplo, un GroupBox que quiero que su propiedad Align sea 'alClient'. Bien, ese string no es de tipo TAlign, necesito convertir mi string al tipo TAlign.

Eso es todo, pero no consigo hacerlo :(

Gracias de nuevo!

Gaim2205
03-01-2008, 19:34:51
Y porque no asignas directamente el valor a una variable Talign, y despues esa variable asignala al componente. P.Ej:


var
al : Talign;
begin
al := alLeft;
GroupBox1.Align := al;
end;



Porque hacer una conversion tipo StrToTalign :p creo que sería complicado.
Digo.. este codigo que puse yo es totalmente innecesario pero quiero decir que puedes asignarle un valor a la variable tipo talign en cualquier lugar de tu codigo en vez de asignarselo a una string y despues tratar de convertir.

dvlt
03-01-2008, 20:17:28
El problema es que leo de un xml y me devuelve un string, de ahi que tenga que hacer la conversión, sino ya se lo metería directamente el valor.

Gracias de todos modos ;)

enecumene
03-01-2008, 20:21:51
El problema es que leo de un xml y me devuelve un string, de ahi que tenga que hacer la conversión, sino ya se lo metería directamente el valor.

Gracias de todos modos ;)

Esa información no la habias expuesto anteriormente, si lo hubieras dicho habria mas respuestas y mas acordes. :p;):D.

Saludos.

egostar
03-01-2008, 20:35:37
Una forma facil y sin meternos en complicaciones es haciendo esto:


if valorXML = 'alClient' then
objeto.TAlign := alClient;


Salud OS

AzidRain
03-01-2008, 21:03:48
Los valores de TAlign no son cadenas por eso no los pueden asignar como lo estas haciendo. alClient, alTop, alRight...etc. son todas constantes de tipo númerico.

dvlt
04-01-2008, 09:25:46
Numérico, pero de que tipo? Como convierto el string a ese tipo de numérico? La ayuda de Delphi no me da ningún otro tipo que no sea TAlign :confused:

dvlt
04-01-2008, 09:27:10
Nada, ya esta... jejeje, dejo la solución por aqui por si a alguien le interesa :)

Solo hay que pasar el string a entero y este a un tipo Variant ole ole

adfa
04-01-2008, 14:40:48
Esto capaz que te servia.

El tipo TAlign se define así:
TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom);
Osea que los valores son numeros del 0 al 6
Si hacer objeto.Align := TAlign(1); lo pone alTop

Saludos

enecumene
04-01-2008, 14:45:36
Esto capaz que te servia.

El tipo TAlign se define así:
TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom);
Osea que los valores son numeros del 0 al 6
Si hacer objeto.Align := TAlign(1); lo pone alTop

Saludos

Hola, gracias a ti me he aprendido algo nuevo, un 10!! :p

Saludos.

dvlt
07-01-2008, 08:28:56
Hola de nuevo!
Siguiendo con este hilo, y con el echo de que creo componentes en tiempo de ejecución... a ver, intento recuperar un componente creado en tiempo de ejecución para repintarlo, pero no consigo encontrarlo, ni por el nombre ni recorriendo uno a uno los elementos del form... alguna idea más?

Gracias de nuevo!

jachguate
07-01-2008, 08:41:28
Es posible recuperarlo por el nombre. Por ejemplo:


begin
with TButton.Create(Self) do
begin
Parent := Panel1;
Name := 'BotonX';
OnClick := BotonXClick;
end;
end;
//...
//...
begin
TButton(FindComponent('BotonX')).Caption := 'Me encontró!';
end;


Hasta luego.

;)

dvlt
07-01-2008, 09:56:03
Pues no me lo encuentra,
es más, recorro todos los componentes del form con un bucle for, y debugando veo que solo me recorre los que ya existian en el form no los que he ido creando en tiempo de ejecución... Alguna idea de porque?

Gracias de nuevo!

jachguate
07-01-2008, 10:00:10
Seguramente no estas buscando en el owner de los objetos que has creado. Podrías mostrar la sentencia con la que creas los componentes en corrida?

Saludos.

dvlt
07-01-2008, 10:18:13
Tenías toda la razón, no buscaba en el Parent. Gracias por la indicación!!!

Saludos!

fjcg02
07-01-2008, 10:20:58
Si recorres todos los componentes de form y no lo encuentra quiere decir que el form no es su parent. Por ahi pueden venir tus problemas

Hubo hace pocos días un hilo hablando de este mismo tema. Buscalo que te puede ser muy interesante.

Saludos

Edito: Vaya, se me adelantaron

Neftali [Germán.Estévez]
07-01-2008, 10:56:59
...necesito hacer una conversión de un string a un tipo TAlign

Esto puedes hacerlo de forma fácil utilizando RTTI.
GetEnumValue y GetEnumName. Para utilizarlas puedes añadir TypInfo al USES.

Creo que lo más sencillo es un ejemplo.