1. Como obter o número da linha atual
Ao usar o controle RichEdit (ou memo) para criar um editor de texto, você pode obter o número total de linhas acessando o atributo lines??count No entanto, é problemático saber o número da linha onde o cursor está atualmente. localizado, porque o Delphi não fornece esse atributo. Para implementar esta função essencial do editor, em_LineFromChar deve ser chamado. Por favor, tente o procedimento abaixo.
Primeiro organize um RichEdit ou memorando (nomeado editor) e um botão na janela. Escreva o seguinte código no evento onclick do botão.
var
LinhaAtual:Inteiro;
começar
CurrentLine:=Editor??Executar(em_ LineFromChar,SFFFF,0);
application??MessageBox(PChar('O número da linha atual é'+IntToStr(CurrentLine)),'Message',mb_ iconinformation);
fim;
Observe que a primeira linha tem um número de linha zero.
2. Como desfazer uma operação (desfazer)
Para memorando, nenhuma programação é necessária para implementar o desfazer. Enquanto o atributo popupmenu estiver vazio, um menu de operação comum pode ser ativado com o botão direito do mouse durante a execução, incluindo seis itens: desfazer, recortar, copiar, colar, excluir e selecionar. todos. .
Mas, infelizmente, esse método não funciona para o poderoso controle RichEdit, então temos que criar um popupmemu nós mesmos. Ao usar CutToClipBoard e outras instruções para concluir funções como "cortar" de maneira fácil e suave, você ficará impotente ao descobrir que não consegue encontrar instruções como desfazer ou cancelar para executar "desfazer".
Neste momento você precisa lidar com isso assim:
RichEdit1??Executar(EM_UNDO,0,0);
Você também deve verificar se é permitido desfazer, ativando ou desativando o item "Desfazer" no menu pop-up:
Desfazer1??Ativado:=RichEdit??Executar(EM_CANUNDO,0,0)<>0;
O programa acima passou na depuração no Delphi3