Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Selecciones iguales? (https://www.clubdelphi.com/foros/showthread.php?t=33681)

ixMike 13-07-2006 19:44:12

¿Selecciones iguales?
 
Por favor, necesito ayuda....

Esto puede parecer algo de poca importancia, pero no lo es (al menos para mí).

Veréis, todos nosotros conocemos las propiedades SelStart y SelLength del TMemo. SelStart indica dónde empieza la selección de texto y SelLength cómo es de larga esa selección.

Ahora haced lo siguiente (para que pueda explicaros mejor mi problema):
1º abrid el Bloc de Notas (o hacéis un programa en Delphi con un TMemo).
2º Escribís el texto "12345678901234567890"
3º Colocáis el cursor en la posición 10 (después del cero).
4º con el ratón o el teclado hacéis una selección hasta que el cursor se quede en la posición 5.

hastá aquí bien. Todo el mundo (menos yo, luego lo explico) estará de acuerdo en que SelStart vale 5 y SelLength vale 5.

ahora hacer justo lo contrario, es decir, os colocáis en la posición 5 y seleccionáis hasta la posición 10. Aquí sí que estamos todos de acuerdo en que SelStart y SelLength valen otra vez 5. Estas propiedades valen lo mismo que en el caso anterior, pero los casos no son los mismos, ya que antes el cursor estaba en 5 y ahora está en 10.

¿Qué pasa aquí?

Mi sugerencia es esta: SelStart debería indicar dónde a empezado a hacerse la selección, y SelLength debería poder tomar valores positivos o negativos, según la posición del cursor con respecto a SelStart (en el primer caso -5 y en segundo +5).

¿Alguien puede proporcionarme alguna solución para que esto sea así?
Intenté crear un componente derivado de TMemo para ello, algo así
Código Delphi [-]
unit NewMemo
 
...
 
type  TNewMemo=class(TMEmo)
         protected
        function GetSelStart: integer;override;
        function GetSelLength:integer; override;
        procedure SetSelStart(Value:integer);override;
        procedure SetSelLength(Value:integer);override;
...

pero no tengo ni idea de qué código poner.


Esto tiene su importancia en que en un programa tengo que poner la opción "Buscar a partir del cursor". ESto es muy facil cuando no hay selección(cursor=selstart) pero cuando hay texto seleccionado...


GRACIAS

roman 13-07-2006 19:59:00

Mejor date una vuelta por la taberna.


No, ya en serio, date un vuelta por la taberna.

Las opciones "Buscar a partir del cursor" y "Buscar en la selección" no son, en mi opinión, compatibles ni combinables y sólo causarías confusión en el usuario.

Mejor pásate por la taberna y tómate una cerveza con los parroquianos.

// Saludos

ContraVeneno 13-07-2006 22:26:01

¿y para que quieres número negativos en el SelLenght?

sería mejor que comprobaras si sellenght es mayor a cero; si lo es, entonces utiliza la propiedad SelText, si no es mayor a cero (entiéndase: no hay nada seleccionado, haces la búsqueda a partir del cursor.

samantha jones 14-07-2006 01:56:30

no logro entender para que quieres hacer eso?

ixMike 17-07-2006 19:03:06

no me entienden... lo suponía, soy así de raro
 
Cuando comprueba SelLength siempre es positivo....

ContraVeneno 17-07-2006 19:12:52

si, siempre es positivo


La franja horaria es GMT +2. Ahora son las 17:09:41.

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