Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cambiar tedit al teclear en campo memo (https://www.clubdelphi.com/foros/showthread.php?t=34463)

nachito_tuc 10-08-2006 06:57:11

Cambiar tedit al teclear en campo memo
 
Hola. Necesito que un edit cambie cuando escribo en un campo memo (es un contador de caracteres, basicamente necesito q se incremente al escribir en un campo memo).
No se como hacerlo. Lei en un post anterior algo relacionado con keypress pero soy muy novato en delphi y no se donde ubicar el keypress (en que evento).

Saludos

Ignacio.

vtdeleon 10-08-2006 07:12:23

Saludos

En la ventanita donde estan las propiedades hay una pestaña que dice Events y es ahi donde se encuentran lo eventos de cada componente. Allí hallaras el evento que precisas, pero viendo tu duda creo qeu mejor usas el evento OnKeyUp.

El codigo es el sgte:
Código Delphi [-]
edit1.Text:=inttostr(length(mmo1.Lines.Text));

roman 10-08-2006 07:14:15

Creo que el evento más adecuado sería el OnChange del Memo. Así el contador reflejaría el número de caracteres en cualquier circunstancia.

// Saludos

nachito_tuc 10-08-2006 16:56:35

Re: onchange
 
El problema de hacerlo asi (al menos ese problema tuve cuando programaba en Visual Basic), es que cuando borras un caracter tambien te cuenta como uno mas, entonces no me sirve para lo que yo quiero.
O sea escribo un caracter, me cuenta 1, lo borro y sigue marcando 1 (o tal vez 2).

se entiende?
Saludos



Cita:

Empezado por roman
Creo que el evento más adecuado sería el OnChange del Memo. Así el contador reflejaría el número de caracteres en cualquier circunstancia.

// Saludos


vtdeleon 10-08-2006 17:08:03

Extraño, porque lo probé como dice roman y funciona a la perfección! Pero si lo haces como decías en el primer mensaje (con OnKeyPress) sí sucede lo que comentas

Saludos

roman 10-08-2006 17:09:19

En lugar de pensar en VB haz la prueba, no te llevará más de dos minutos. El evento OnChange se genera cada vez que cambia el contenido del control, sea porque añades o borras caracteres o porque pegas contenido del portapapeles, así que siempre mostrará el número exacto de caracteres.

// Saludos

nachito_tuc 15-08-2006 08:26:01

Resultado
 
Ok ya probe. Lo que varía entre una y otra opcion es que el keyup actualiza el contador al soltar las teclas, es decir si por ejemplo tenemos apretado el backspace para borrar, recien muestra el resultado al soltarlo.
Me parece q lo voy a dejar asi ya que al cambiar menos el contador supongo que será mas rapido, por mas que no muestre en todo momento el valor real (lo cual no necesito).

El problema que surge de usar cualquiera de las 2 opciones es que cuando borro todo el texto me marca como 2 caracteres por mas que no quede nada. Una vez tambien borre todo y me quedó marcando 4 caracteres.
Porque puede ser esto??
Como hago para que en el campo memo no salga el nombre que le puse al objeto?

Saludos

Ignacio

dec 15-08-2006 14:01:25

Hola,

Cita:

Empezado por Nachito
Como hago para que en el campo memo no salga el nombre que le puse al objeto?

Editando la propiedad "Lines" del "TMemo". Generalmente se hace en tiempo de diseño, desde el Inspector de Objetos de Delphi. Borras el "Memo1" que se pone por defecto y ya está.

Cita:

Empezado por Nachito
Me parece q lo voy a dejar asi ya que al cambiar menos el contador supongo que será mas rapido, por mas que no muestre en todo momento el valor real (lo cual no necesito).

¿Cuánto más rápido? Es más, ¿seguro que es más rápido? ¿Y qué tan fiable? ¿Probaste con el evento "OnChange"? Si este último resulta más fiable para obtener los mejores resultados, tal vez compense la "lentitud" (¿del orden de microsegundos? ¿qué es un microsegundo?).


La franja horaria es GMT +2. Ahora son las 03:18:54.

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