Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Te lo explicare a ver si te sirve asi; Tengo una variable llamada BotonGeneral de tipo TButton (No String), a ella le asigno el botón por el que quiero tome forma y a esa variable la trato como si de ese botón se tratara, todo lo que le haga a esa variable se vera reflejado en el botón "Real" ya que lo que hicimos fue hacer que esa variable tomara la posición en memoria de dicho botón. Mejor dicho, un ejemplo:

En un formulario tengo Button1 y Button2, además declare una variable en la sección private llamada BotonGeneral:

Al OnClick de Button2 le coloco:
Código Delphi [-]
  BotonGeneral := Button1;
  BotonGeneral.Visible := False;

Mira como le dije a BotonGeneral que se desapareciera pero notaras que en ejecución todo le sucede a Button1.

Espero me haya hecho entender y que esto te sirva de algo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #2  
Antiguo 10-07-2007
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 24
joanajj Va por buen camino
te amplio algo

Gracias por responder.

Ok, lo que comentas es cierto, de hecho así lo tengo, el problema radica en que al pasar el valor para decidir que botón apago, lo paso como string por razones que sería muy largo de explicar.

Tu comentas hacer esto:

declaro botongeneral:tbutton;

y luego:

BotonGeneral := Button1;
BotonGeneral.Visible := False;

ok, pero mi problema es que debo pasarlo de esta manera:

nombreboton[5]:=`boton1`; ----> matriz tipo string con varios nombres de botones
...
...

BotonGeneral := nombreboton[5];--->aquí radica el problema.

botongeneral.visible:=false;

y me da error de que no coinciden los tipo tbutton y string;

Comprendes lo que necesito hacer???

Un saludo...
Responder Con Cita
  #3  
Antiguo 10-07-2007
Gregory Mazon Gregory Mazon is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
Gregory Mazon Va por buen camino
Intenta lo siguiente:

BotonGeneral := nombreboton[5];
TButton(botongeneral).visible:=false;

o simplemente:

TButton(nombreboton[5]).Visible := False;
Responder Con Cita
  #4  
Antiguo 10-07-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
y no puedes crear la matriz de tipo TButton??

en caso de que no puedas lo otro seria esto,

Código Delphi [-]
BotonGeneral := Form1.FindComponent(nombreboton[5]);

BotonGeneral sigue siendo declarada como te lo explico jhonny
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 10-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, hice la prueba como indica eduarcol, pero como no me dejo compilar, entonces tuve que hacerlo un cambio:

Código Delphi [-]
BotonGeneral := TButton(FindComponent(nombreboton[5]));

También funciona con:
Código Delphi [-]
BotonGeneral := TButton(FindChildControl(nombreboton[5]));
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 10-07-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
Perdon se me olvido realizar el cast, porq estaba pensando en referenciar la respuesta de gregory.

La diferencia entre FindChildControl y FindComponent es que el primero no lo va a encontrar si esta dentro de un control contenedor, solo encuentra los hijos directos del control referenciado

seria bueno antes del cast verificar si encontro un objeto de la clase TButton o no haya devuelto un nil porq si no da error
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 10-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por eduarcol
seria bueno antes del cast verificar si encontro un objeto de la clase TButton o no haya devuelto un nil porq si no da error
Eso es muy cierto, entonces yo haría la cosa al revés, declaro Botongeneral como TComponent y el procedimiento lo dejo asi:

Código Delphi [-]
 
procedure BotonVisible;
begin
  BotonGeneral := nil;
  BotonGeneral := FindComponent(nombreboton[5]);
  if BotonGeneral <> nil then
    TButton(BotonGeneral).Visible := False;
end;
De esa manera me evito el salto de dicho error que comentaste.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 10-07-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
jejeje, bueno bueno ya no me piques, esta muy buena tu solucion. aunque seria mejor crear la matriz de controles en lugar de estar buscandolo,

si te sigo la corriente jhonny seguro armamos un lio como el de los numeros
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #9  
Antiguo 10-07-2007
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 24
joanajj Va por buen camino
No lo consigo(os explico para que lo necesito)

Sres. he probado de todo y na de na.

Para que salgáis de la intriga, estoy intentando hacer un juego de parchís, y para cada ficha utilizo un Tjvimage de las JVCL, para así gestionar y mover cada ficha. Así tengo por ej. fichaaz1, fichaaz2,fichaaz3,fichaaz4, ficharo1,ficharo2,etc. hasta completar las 16 fichas, esto me pareció más sencillo que estar con Sprites y gráficos.

Entonces tengo una matriz tipo string onde establezco que ficha hay en cada casilla, así por ej. en quien[10]:='fichaaz2', me indica que en la casilla 5 2ª ficha está la 2ª ficha azul. Hasta ahí todo bien, pero claro en un momento dado necesito ese dato para operar. Entonces para por ej. mover la fichaaz2 a la casa necesito hacer que fichaaz2.left:=21 y fichaaz2.top:=100, pero el problema que estoy teniendo es que el nombre del objeto(tjvimage) es un string y no puedo utizarlo directamente.

He hecho:

nomficha:tjvimage;

pero claro no consigo que el string quien[10] sea el nombre del objeto. Haceros a la idea de algo así : quien[10].left:=21;
por supuesto no funciona, pero es la idea gral.

Gracias por vuestro interés...
Responder Con Cita
  #10  
Antiguo 10-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por joanajj
Sres. he probado de todo y na de na.

Para que salgáis de la intriga, estoy intentando hacer un juego de parchís, y para cada ficha utilizo un Tjvimage de las JVCL, para así gestionar y mover cada ficha. Así tengo por ej. fichaaz1, fichaaz2,fichaaz3,fichaaz4, ficharo1,ficharo2,etc. hasta completar las 16 fichas, esto me pareció más sencillo que estar con Sprites y gráficos.

Entonces tengo una matriz tipo string onde establezco que ficha hay en cada casilla, así por ej. en quien[10]:='fichaaz2', me indica que en la casilla 5 2ª ficha está la 2ª ficha azul. Hasta ahí todo bien, pero claro en un momento dado necesito ese dato para operar. Entonces para por ej. mover la fichaaz2 a la casa necesito hacer que fichaaz2.left:=21 y fichaaz2.top:=100, pero el problema que estoy teniendo es que el nombre del objeto(tjvimage) es un string y no puedo utizarlo directamente.

He hecho:

nomficha:tjvimage;

pero claro no consigo que el string quien[10] sea el nombre del objeto. Haceros a la idea de algo así : quien[10].left:=21;
por supuesto no funciona, pero es la idea gral.

Gracias por vuestro interés...
Disculpa pero, ¿Ya leíste los post anteriores?, eduarcol te sugiere una matriz de controles y ademas de eso, entre los dos hemos sacado un procedimientico que quizá te sirva. ¿Ya probaste con algo de ello o definitvamente no sirven esas soluciones?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #11  
Antiguo 10-07-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ya te han puesto el código que funciona correctamente:

Cita:
Empezado por joanajj
...pero claro no consigo que el string quien[10] sea el nombre del objeto. Haceros a la idea de algo así : quien[10].left:=21;
por supuesto no funciona, pero es la idea gral.
Si tienes el combre del componente en un string, con este código puedes acceder al componente:

Código Delphi [-]
procedure BotonVisible;
begin
  BotonGeneral := nil;
  BotonGeneral := FindComponent(nombreboton[5]);
  if BotonGeneral <> nil then
    TButton(BotonGeneral).Visible := False;
end;

Sólo que en tu caso debes cambiar el Button por un Tjvimage.

Algo así:

Código Delphi [-]
procedure CambiarFicha;
begin
  FichaGeneral := nil;
  FichaGeneral := FindComponent(quien[10]);
  if FichaGeneral <> nil then
    TJVImage(FichaGeneral).Left := 5;  
    TJVImage(FichaGeneral).Top := 100;
    ....
end;

Nota: Yo utlizaría parámetros en esta función para pasar nombre, Left, Top,...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
variable dentro de una variable molinero1 Varios 3 23-04-2007 12:44:48
Objeto Ole omy Varios 0 03-02-2006 21:40:32
Referenciar un objeto Tabla mediante string Neomanar Conexión con bases de datos 2 18-08-2005 18:01:15
Enlazar una variable a un objeto Nuria Varios 2 20-01-2004 17:00:40
objeto ole omy Varios 6 05-11-2003 18:15:54


La franja horaria es GMT +2. Ahora son las 08:12:08.


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
Copyright 1996-2007 Club Delphi