Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2009
Avatar de jbautista
jbautista jbautista is offline
Miembro
 
Registrado: jul 2008
Posts: 43
Poder: 0
jbautista Va por buen camino
Crear Tipos de Datos Propios?

Hola que tal, pues lo que quisiera saber (si se puede) es como definir tipos de datos proios... bueno, por ejemplo hace tiempo compre un componente (un Grid) que tiene un metodo:

AddButton(ACol, ARow, bw, bh: Integer; Caption: string; hal: TCellHalign; val: TCellValign);

En este metodo los primero parametros ACol, ARow, bw, bh: Integer; Caption: string; son de tipo predefinidos en Delphi, pero los siguientes son de la Clase del Componente (TCellHalign; val: TCellValign)

Al invocar al metodo lo tengo que hacer de la sig, manera:

grid1.AddButton(0,0,10,10,'Boton',haCenter,vaCenter)

En los dos ultimos parametros le tengo mandar forzosamente los tipos que me pide (haCenter,haLeft,vaCenter,etc)

Pues bueno yo quisiera hacer algo parecido en mi programa:

Tengo una Clase x, con un metodo llamado MueveRenglon
MueveRenglon(posicion:Boolean);
begin
if posicion = true then ...(Mueve
else if posicion = false then...(Mueve abajo)
end;
pero no quiero que al invocar al metodo de la clase desde el un Form le pasen directamente el valor boolean

p.e. Form.objetoDeClaseX.MueveRenglon(True)

me gustaria definir un tipo de dato pripio (como el caso que les puse arriba)
y que al invocar mi metodo de clase desde un form se haga de la sig. manera:

Form.objetoDeClaseX.MueveRenglon(cArriba)

y que mi metodo quedara definido
MueveRenglon(posicion:TPosicion);
begin
if posicion=cArriba then ...(Mueve arriba)
else
if
posicion=cAbajo then...(Mueve abajo)
end;

Como se declaran y usan lo tipos de datos propios (cArriba y cAbajo).

De antemano muchas gracias.

Buen Dia.
Responder Con Cita
  #2  
Antiguo 16-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo puedes hacer con los llamados tipos enumerados:

Código Delphi [-]
type
  TPosicion = (cArriba, cAbajo);

Te recomiendo que leas la ayuda de delphi, la parte de Delphi Language guide|Data types, variables and constants.

// Saludos
Responder Con Cita
  #3  
Antiguo 16-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jbautista, como te dice el amigo Román puedes definirte un tipo enumerado, en el cual colocas todos los posibles valores que puede tomar tu tipo (identificadores) y esos identificadores puedes utilizar en tu codigo como si fueran constantes.

Código Delphi [-]
//Definimos nuestro tipo
type
  TPosicion = (cArriba, cAbajo, cIzquierda, cDerecha);
..............
.............. 
//En tu procedimiento
MueveRenglon(posicion:TPosicion);
begin
 Case posicion Of
   cArriba : MueveArriba;
   cAbajo : MueveAbajo;
   cIzquierda : MueveIzquierda;
   cDerecha : MueveDerecha; 
   ........
 end;
end;

//En la llamada
MueveRenglon(cArriba);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 17-01-2009
Avatar de jbautista
jbautista jbautista is offline
Miembro
 
Registrado: jul 2008
Posts: 43
Poder: 0
jbautista Va por buen camino
Gracias gracias a los dos por ayudarme, ya habia leido algo asi por ahi pero no lo entendi ya con el ejemplo todo bien.

Gracias Roman y Caro por su tiempo.
Responder Con Cita
  #5  
Antiguo 11-11-2011
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
como puedo mostrar en pantalla el tipo de dato que acabo de crear en un showmessage() por que dice que string y el nuevo dato no son compatibles , tengo que crear una operacion para convertir ese tipo de dato a string?
__________________
Todo es Relativo
Responder Con Cita
  #6  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, es que, por ejemplo, en:

Código Delphi [-]
type   TPosicion = (cArriba, cAbajo, cIzquierda, cDerecha);

cArriba=0, cAbajo=1, cIzquierda=2, cDerecha=3
No son strings.
Responder Con Cita
  #7  
Antiguo 11-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Como te explica claramente Casimiro en el ejemplo, no son strings que se puedan mostrar directamente, son de tipo ordinal. Cada nombre definido (cArriba, cAbajo, cIzquierda, cDerecha) tiene una órdinalidad que comienza desde cero y termina en el enésimo término.

Para mostrar el valor de un tipo ordinal debés hacer:
Código Delphi [-]
begin
  ShowMessage(IntToStr(Ord(cDerecha))); // muestra: 3
end;

Para realizar la operación inversa, es decir, dado el órden obtener el nombre, se puede usar la función GetEnumName:
Código Delphi [-]
uses TypInfo;
...
begin
  ShowMessage(GetEnumName(TypeInfo(TPosicion), 2)); // muestra: cIzquierda
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-11-2011 a las 09:24:29.
Responder Con Cita
  #8  
Antiguo 11-11-2011
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
ohhhhhhh muchas gracias , que utiles son estas funciones. supongo que hace falta bucear un poco por las funciones y procedimientos de delphi
hasta luego y gracias
__________________
Todo es Relativo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear mis propios cursores federiconqn21 Varios 8 25-02-2010 16:02:18
Tipos de Datos de Excel. sanluisme Servers 0 23-07-2008 12:11:17
Tipos de Datos de InterBase atunng Firebird e Interbase 1 22-02-2007 21:16:04
tipos de datos interbase 6.5 ronimaxh Firebird e Interbase 1 10-02-2004 13:00:27
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 05:57:00.


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