| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
I Don't Wanna Be Me Invitado
|
Publicado: Vie 27 Jun, 2003 1:36 am Asunto: Deshabilitar Pegar en un Edit |
|
|
Hola, alguien sabe como se puede, si se puede, desactivar la opcion de que el usuario pegue texto en un edti????
Probé un monton de pijadas, y miré mil movidas en eventos y no encuentro nada, si alguien me puede contar algo sería un detallazo pq estoy pelín apuraoy esto me solucionaría unos cuantos problemas.
Graias |
|
| Volver arriba |
|
 |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Vie 27 Jun, 2003 7:13 am Asunto: |
|
|
Hola, creo que lo puedes solucionar con Edit1->Enabled=false, así el usuario no podrá escribir ni pegar nada en el Edit.
Un saludo
Por cierto, ¿why don´t you wanna be you?  |
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Vie 27 Jun, 2003 8:18 am Asunto: |
|
|
HOLA:
Creo recordar que se podia sobreescrir una parte del codigo para ello, pero como no recuerdo como, te voy a dar una solucion algo chapuza,
Inserta un TPopupMenu y en la propiedad del Edit popupmenu le asignas el nuevo PopupMenu, asi lo deshabilitaras.
By. |
|
| Volver arriba |
|
 |
Vampire Cdt


Registrado: 27 Jun 2003Mensajes: 9Ubicación: Cuba, Habana
|
Publicado: Vie 27 Jun, 2003 8:48 am Asunto: Respuesta para tu problema |
|
|
Buenas:
Fácil oye mira crea una variable auxiliar que contenga la información del edit, es decir el texto que te interesa mostrar a ti y en el evento OnChange escribes Edit1->Text = auxiliar; así cada ves que alguien trate cambiar tu texto tu vuelves a escribir lo que tu quieres que este allí....
Si eres tu el que quiere cambiar el texto basta hacer:
actual = nuevoTexto;
Edit->Text = "";
donde nuevo sera el texto que a ti te interesa y la llamada a Edit1->Text = ""; se hace para que el Edit1 cambie y caiga en el evento OnChage que es el que a ti te interesa. Esta solucion solo tiene el problema de que es burda. Es decir hace que el edit parpadee un poco... Claro es que no esta echa en API. Otra solución es construir un Edit echo por ti en Api pero esto ya es algo mas Complejo y no tengo time para hacértelo ok. Si puedes busca la pregunta que hice yo y tírame una ayuda si.
P.D: Lo que dice monica abajo esta bien para la entrada por teclado pero falla para cuando pegas algo. _________________ Saludos para todos recuerden pueden contactarme por correo en la direccion >> lcarballlo@ghost.matcom.uh.cu
Ultima edición por Vampire el Vie 27 Jun, 2003 11:13 am, editado 1 vez |
|
| Volver arriba |
|
 |
Mónica Cmdr

Registrado: 27 Sep 2002Mensajes: 136Ubicación: Pontevedra (España)
|
Publicado: Vie 27 Jun, 2003 10:35 am Asunto: |
|
|
Se me ocurre otra cosa que a lo mejor te sirve: en el evento OnKeyDown pones:
Key=0; //es decir, ignoras la pulsación |
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Vie 27 Jun, 2003 12:53 pm Asunto: |
|
|
HOLA:
Vale seamos un poco profesionales:
TFarProc PrevWndProc ;
LRESULT EditWndProc(HWND Handle , UINT Msg , WPARAM wParam , LPARAM lParam )
{
if (Msg == WM_PASTE)
return 0;
else
CallWindowProc((FARPROC) PrevWndProc , Handle, Msg, wParam, lParam);
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
PrevWndProc = TFarProc(GetWindowLong(Edit1->Handle, GWL_WNDPROC));
SetWindowLong(Edit1 -> Handle, GWL_WNDPROC, (long )EditWndProc);
}
By. |
|
| Volver arriba |
|
 |
I Don't Wanna Be Me Invitado
|
Publicado: Sab 28 Jun, 2003 3:30 am Asunto: Muchas Gracias |
|
|
Gracias a todos por las alternativas. Solo una cosita más para Toño, no tengo ni puta idea de lo que hace ese codigo. Si por favor me pudieras orientar un poco.... Si no, gracias de todos modos por la ayuda.
De cualquier forma, un modo que encontre de restringir lo que se pega en el edit es utilizar el evento KeyDown y controlar si se pulsa Ctrl+V. El problema ahora es q desde el menu del edit se puede pegar. ¿Alguien sabe como contolar eso?. |
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Lun 30 Jun, 2003 9:29 am Asunto: Re: Muchas Gracias |
|
|
HOLA:
Como bien sabras todo el sistema de herramientas para windowss funciona mediante la accion de mensajes, haz esto si has recibido tal mensaje, luego se interpreta el mensaje, si estoy en un tedit y se ha pulsado una tecla haz lo siguiente..... Los evento OnMouseEnter, OnKeypress, etc lo que hacen es preguntar que hacer antes de procesar la informacion.
| I Don't Wanna Be Me escribió: | | El problema ahora es q desde el menu del edit se puede pegar. |
Precisamente el codigo que te escribi lo que hace es interceptar el mensaje antes de que se produzca la accion WM_PASTE la accion de pegar y procesarla de la manera que tu quieras.
if (Msg == WM_PASTE)
{
ShowMessage("Voy a pulsar el boton de autodestruccion del mundo");
AutoDestruccionMundial();
return 0;
}
if (Msg == WM_DEL)
{
.....
}
Si no es ninguno, procesalo normalmente
CallWindowProc (.....);
By. |
|
| Volver arriba |
|
 |
|