Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TAlign (https://www.clubdelphi.com/foros/showthread.php?t=51909)

dvlt 03-01-2008 18:57:56

TAlign
 
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

Cita:

Empezado por dvlt (Mensaje 255770)
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:

Código Delphi [-]
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

Cita:

Empezado por dvlt (Mensaje 255792)
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:

Código Delphi [-]
 
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

Cita:

Empezado por adfa (Mensaje 255976)
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:

Código Delphi [-]
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

1 Archivos Adjunto(s)
Cita:

Empezado por dvlt (Mensaje 255770)
...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.


La franja horaria es GMT +2. Ahora son las 18:32:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi