Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Problema con TEdit en imagen

hola, quiero hacer que el usuario pueda escribir en una imagen en tiempo de ejecución el texto que quiera y no uno definido. La imagen está abierta y contenida en un TImage, entonces mi idea era poner un Tedit y que el usuario escriba en él y luego recuperar el contenido del mismo para que a través de la propiedad Canvas->TextOut, lo escriba en la imagen.
Bien pues me lo escribe en la imagen pero a la segunda vez que pulso el botón y el control TEdit que lo pongo a no visible nunca desaparece, creo q es porque sigue teniendo el control... pero no se como quitárselo, os pongo el código de lo que tengo... resumiendo mi idea es q el usuario escriba en el Tedit y luego recuperar el contenido, escribirlo en la imagen y hacer desaparecer el TEdit.

void __fastcall TForm1::AadirTexto1Click(TObject *Sender)//texto en el menu
{
int c=0;
Edit1->Visible=true;
c=1;
String s=Edit1->Text;

if(c==1 ){
Imagen->Canvas->Font->Size = 40;
Imagen->Canvas->Font->Color = clWhite;
Imagen->Canvas->Brush->Style = bsClear;
Imagen->Canvas->TextOut(10, 10, s);
Edit1->Enabled=false;
Edit1->Visible=false;

}
}

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 14-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Con canvas->textout estas dibujando encima del TImage
Responder Con Cita
  #3  
Antiguo 15-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Claro, es lo que quiero, y eso me sale, lo q no me sale es hacer desaparecer el Tedit de la imagen...
Responder Con Cita
  #4  
Antiguo 15-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Fíjate en estas líneas:
Código:
Edit1->Visible=true;
String s=Edit1->Text;
Haces visible el Edit e inmediatamente capturas el valor de Edit1->Text ... esto.... no estas dejando tiempo al usuario para que escriba algo .

Ahí está el quid de la cuestión, ¿Cuando quieres hacer desaparecer el TEdit?

- Cuando el usuario pulse la tecla Intro (usar el TEdit.OnkeyUp para pintar el texto y después ocultar el TEdit)
- Cuando el foco salga del TEdit (usar evento TEdit.OnExit).
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 15-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Lo uso así como me dices, pero me sigue saliendo igual... a ver sería una cosa así no?

Edit1->Visible=true;
Edit1->OnEnter=OnPaint; //aquí habrá que indicarle algo no?
String s=Edit1->Text;
Edit1->OnExit;
Imagen->Canvas->TextOut(10, 10, s);

No es así?

Saludos.
Responder Con Cita
  #6  
Antiguo 16-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo C no tengo muy clara la sintaxis, intentaré explicarlo:

Releyendo tu mensaje, He visto que quieres hacerlo de otra forma y es pulsando el mismo botón "AadirTexto1" varias veces:
La primera vez que se pulse, mostraría el TEdit y la segunda vez que se pulse, oculta el TEdit y pinta en la imagen.
Código:
void __fastcall TForm1::AadirTexto1Click(TObject *Sender)//texto en el menu
{

Edit1->Visible= not Edit1-> Visible;

if(not Edit1->Visible ){
Imagen->Canvas->Font->Size = 40;
Imagen->Canvas->Font->Color = clWhite;
Imagen->Canvas->Brush->Style = bsClear;
Imagen->Canvas->TextOut(10, 10, Edit1->Text);
Edit1->Enabled=false;

}
}
Como ves el truco está en la primera línea, cambiamos su visibilidad y después preguntamos por ella (básicamente lo que haciás con c= 0 y c= 1) el problema que tenías es que "c" es una variable local y se pierde el valor entre 2 pulsaciones del boton.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 17-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Hola, así no me hace nada... me sale el cuadro del Tedit, pero ya está, ni se me activa para escribir ni nada...
Responder Con Cita
  #8  
Antiguo 18-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Tienes razón, esta línea sobra:

Edit1->Enabled=false;

Perdón

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, 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
Problema de Query y Tedit AYUDA PORFAVOR hurricane21 SQL 1 12-01-2007 11:12:27
TEdit Propiedad Text problema para cambiar alucardo OOP 12 29-05-2006 16:12:08
Problema con el TEdit y las comas alfredosg19 Varios 10 09-03-2005 11:15:42
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
problema con los Tedit en un programa Pepetrueno Varios 6 28-06-2003 01:47:38


La franja horaria es GMT +2. Ahora son las 01:06:09.


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