1. Cómo obtener el número de línea actual
Cuando se utiliza el control RichEdit (o memo) para crear un editor de texto, puede obtener el número total de líneas accediendo al atributo de recuento de líneas. Sin embargo, es problemático saber el número de línea de la línea donde se encuentra actualmente el cursor. ubicado, porque Delphi no proporciona este atributo. Para implementar esta función de editor esencial, se debe llamar a em_ LineFromChar. Pruebe el procedimiento siguiente.
Primero organice un RichEdit o una nota (editor con nombre) y un botón en la ventana. Escriba el siguiente código en el evento onclick del botón.
var
Línea actual: entero;
comenzar
LíneaActual:=Editor??Perform(em_ LineFromChar,SFFFF,0);
application??MessageBox(PChar('El número de línea actual es'+IntToStr(CurrentLine)),'Message',mb_ iconinformation);
fin;
Tenga en cuenta que la primera línea tiene un número de línea cero.
2. Cómo deshacer una operación (deshacer)
Para memo, no se requiere programación para implementar deshacer. Siempre que el atributo del menú emergente esté vacío, se puede activar un menú de operación común con el botón derecho del mouse durante el tiempo de ejecución, que incluye seis elementos: deshacer, cortar, copiar, pegar, eliminar y seleccionar. todo. .
Pero desafortunadamente, este método no funciona para el poderoso control RichEdit, por lo que tenemos que diseñar un popupmemu nosotros mismos. Cuando utiliza CutToClipBoard y otras declaraciones para completar funciones como "cortar" de manera fácil y fluida, no podrá encontrar declaraciones como deshacer o cancelar para realizar "deshacer".
En este momento debes manejarlo así:
RichEdit1??Perform(EM_UNDO,0,0);
También debe verificar si se permite deshacer, activando o desactivando así el elemento "Deshacer" en el menú emergente:
¿Deshacer1??Habilitado:=RichEdit??Perform(EM_CANUNDO,0,0)<>0;
El programa anterior pasó la depuración en Delphi3