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 17-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
Red face Duda de principiante

Hola! soy nueva en esto y necesito un poco de ayuda. Tengo que hacer un solitario y se me esta complcando para mostrar los montones de cartas.
Se supone que dependiendo del lugar en que la carta ocupe en la pila es el lugar que debe ocupar visualmente, siendo la ultima de la pila la primera en aparecer, que es tapada parcialmente por la anterior y asi...
quiero saber si existe una manera de modificar directamente en cual "Image" debe aparecer... tipo asi, con una variable llamada numImage:
Código Delphi [-]
Form1.image+inttostr(numImage).Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+  cadena+'.jpg');
obviamente eso no me deja... existe una manera de modificarlo directamente en la sentencia??

Última edición por ecfisa fecha: 17-10-2013 a las 04:58:51. Razón: Agregar etiquetas [DELPHI]
Responder Con Cita
  #2  
Antiguo 17-10-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La pregunta que sigue es:
Que tienes adelantado ?, no nos muestras el codigo, no sabemos por donde van los tiros.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 17-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
esto es el procedimiento para mostrar la pila, es recursivo:
Código Delphi [-]
procedure MostrarPila1(var pila:tipopila;var pos:reparto.tipopos; var numImage:integer);
var
  cartaSimple:reparto.TipoRegPila;
  cadena,xx:string;
begin
    if pos<>_posNula
      then begin
           reparto.capturar(montones,pos,cartaSimple);
           pos:=cartaSimple.enlace;
           MostrarPila1(montones,pos,numImage);
           cadena:=inttostr(cartasimple.numero)+cartasimple.color;
           xx:='image'+inttostr(numImage);
           Form1.xx.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
           Form1.listBox2.additem(inttostr(cartaSimple.numero)+'  '+cartasimple.color, Form1.ListBox2);
           numImage:=numImage+1;
           end;
end;

como se ve, la variable 'xx' es la que estaba usando ahora de prueba...

Última edición por ecfisa fecha: 17-10-2013 a las 04:56:32. Razón: Agregar etiquetas [DELPHI]
Responder Con Cita
  #4  
Antiguo 17-10-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno, no entiendo la pregunta.
Lo que he usado para evitar el uso de archivos independientes es archivar las fotos en un form adicional y llamarlas de ahi, se hace mas rapida la aplicacion.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 17-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
no mira, lo que quiero evitar es esto (es mi solucion transitoria, que es horrible...):
Código Delphi [-]
procedure MostrarPila1(var pila:tipopila;var pos:reparto.tipopos; var numImage:integer);
var
  cartaSimple:reparto.TipoRegPila;
  cadena,xx:string;
begin
    if pos<>_posNula
      then begin
           reparto.capturar(montones,pos,cartaSimple);
           pos:=cartaSimple.enlace;
           MostrarPila1(montones,pos,numImage);
           LugarImagen(numImage,cartasimple);
           Form1.listBox2.additem(inttostr(cartaSimple.numero)+'  '+cartasimple.color, Form1.ListBox2);
           numImage:=numImage+1;
           end;
end; 


procedure LugarImagen(n:integer; cartasimple:tiporegpila);
var
cadena:string;
begin
   cadena:=inttostr(cartasimple.numero)+cartasimple.color;
   with form1 do
   begin
      case n of
        6: image6.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        7: image7.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        8: image8.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        9: image9.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       10: image10.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       11: image11.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       12: image12.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       13: image13.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       14: image14.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       15: image15.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       16: image16.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       17: image17.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       18: image18.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       19: image19.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       20: image20.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       21: image21.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       22: image22.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       23: image23.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       24: image24.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       25: image25.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
... y sigue muuucho mas...

creo que tiene que haber una solucion si yo pudiera cambiar la sintaxis de lo que anteriormente puse en color.... si yo pudiera cambiar con una variable a que numero de Image quiero cargar la imagen... me explico mejor??

Última edición por ecfisa fecha: 17-10-2013 a las 04:58:33. Razón: Agregar etiquetas [DELPHI]
Responder Con Cita
  #6  
Antiguo 17-10-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Te explicas bien el que no lo hace bien soy yo.
Como te dije me parece que lo mejor es eliminar el uso de la busqueda de la imagen en un archivo y usar un form adicional en donde simplemente se ponen las imagenes y se buscar por componente asi se hace con menos codigo y creo que mas facil.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 17-10-2013
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 sofiaz, bienvenida a Club Delphi

Por favor cuando incluyas código en tus mensajes utiliza TAG's para darle mas legibilidad:




Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 17-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
ecfisa: gracias! y disculpas por lo del codigo.
Caral: serias tan amable de darme un ejemplo, en el caso de que lo haga como vos decis, de como llamo a la imagen. y gracias por contestar!
Responder Con Cita
  #9  
Antiguo 17-10-2013
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 sofiaz.

No hay por que disculparse, son detalles lógicos de quienes son nuevos en los foros.

Aparte de la sugerencia que mi amigo Carlos te brinde luego, y que sin dudas tendrá la excelencia de costumbre, te adjunto un código que te aporte otra idea (o tal vez la misma ) de como podrías automatizar la carga y la muestra de imágenes.

Sólo crea una carpeta, copia y descomprimí el archivo allí (incluye las imágenes de diez cartas).

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 25-09-2014 a las 02:47:57.
Responder Con Cita
  #10  
Antiguo 17-10-2013
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: 18.269
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
Cita:
Empezado por sofiaz Ver Mensaje
no mira, lo que quiero evitar es esto (es mi solucion transitoria, que es horrible...):
Realmente, es horrible!!!
Lo bueno es que lo reconozcas y quieras arreglarlo...
Sé de más de uno que la dejaría así sin ningún remordimiento.




Código Delphi [-]
...   begin
      case n of
        6: image6.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        7: image7.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        8: image8.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
        9: image9.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       10: image10.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       11: image11.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       12: image12.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       13: image13.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       14: image14.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       15: image15.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       16: image16.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       17: image17.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       18: image18.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       19: image19.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       20: image20.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       21: image21.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       22: image22.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       23: image23.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       24: image24.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');
       25: image25.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Cartas\'+cadena+'.jpg');


La forma de evitar esto, es utilizar FindComponent.
Con esta función puedes acceder a un componente a partir de una cadena con su nombre.
De esta formas teniendo la variable i y todos los componentes que se llaman image6, image7, image8,... puedes generar un código similar a este:

Código Delphi [-]
var
  compName:string;
  i:integer;
  comp:TComponent;
begin
  for i := 1 to 5 do begin
    // Montar el nombre del componente
    compName := 'image' + IntToStr(i);
    // Usar findcomponent con la cadena
    comp := FindComponent(compName);
    // Nos aseguramos de que lo ha encontrado?
    if Assigned(comp) then begin
      // modificamos el valor
      TImage(comp).Picture.LoadFromFile('r:\imgTest.bmp');
    end
    else begin
      ShowMessage('No he encontrado el componente: ' + compName);
    end;
  end
__________________
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
  #11  
Antiguo 17-10-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La forma en que lo hago yo es exacta a la que Neftali te a propuesto, de hecho la aprendí de el.
Lo único que si hago es cargar las imágenes en otro form y llamarlas de ahí, pero es lo mismo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 18-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
gracias neftali!!!! creo que eso es exacto lo que andaba buscando.
y gracias ecfisa tambien. Ambas soluciones las voy a probar, recien mañana me puedo poner otra vez con eso.
Muchas gracias por contestar a todos!
Responder Con Cita
  #13  
Antiguo 19-10-2013
sofiaz sofiaz is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 6
Poder: 0
sofiaz Va por buen camino
ahora si Neftali, lo hice.
tu solución es perfecta.
saque 110 lineas de código de mas, gracias!
Responder Con Cita
  #14  
Antiguo 20-10-2013
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: 18.269
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
__________________
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
  #15  
Antiguo 19-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por juanaHer Ver Mensaje
hola soy nueva tambien! y tengo una consulta por un procedimiento recursivo.. el ejercicio es el siguiente: existte una variable de tipo sting denominada FRASE que contiene una leyenda con una palabra delimitada por un par de asteriscos. tambien existe otra variable denominada SUSTITUTO que contiene una palabra. POR EJEMPLO frase: SI LOS PUEDES *ENTENDER* LOS PUEDES PROGRAMAR
SUSTITUTO: IMAGINAR.
Mi proceso recursivo debe devolver la frase con la palabra entender reemplazada por el sustituto... muchisimas gracias!
Bienvenido, no olvides leer nuestra guía de estilo, gracias
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
Duda de principiante sobre cámaras en GLScene kakarotv5 Gráficos 4 24-02-2007 11:08:19
Duda principiante con manejo de formularios Chompiras Varios 6 11-02-2006 20:49:55
Duda de principiante con combobox Chompiras Varios 5 09-02-2006 20:35:56
Duda de principiante (Help!!!!) taeyin Firebird e Interbase 2 04-06-2005 22:43:53
principiante olybola Conexión con bases de datos 3 17-05-2004 19:56:36


La franja horaria es GMT +2. Ahora son las 01:25:14.


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