Como deslocar a posição do cursor em um controle de edição?
-
12-12-2019 - |
Pergunta
Estou construindo um controle de edição personalizado que consiste em adicionar um ícone à esquerda e um botão de ícone à direita, ambos dentro do controle de edição.Isso requer mudar o ponto inicial do texto (e do cursor) para a direita em uma quantidade X de pixels.Isso também significa que preciso 'Limitar' a largura do texto que pode ser desenhado, para abrir espaço para o botão à direita.A intenção é fornecer um ícone personalizado à esquerda, como em um navegador, bem como um botão 'X' à direita para limpar o conteúdo do controle de edição.
Como compensar o Rect
de onde desenhar o texto e o cursor em um TCustomEdit
descendente?
Solução
Se você estiver usando uma versão mais recente do Delphi, já deve haver um controle TButtonedEdit e pode fazer o seu trabalho.
Caso contrário, acho que você pode enviar uma mensagem EM_SETMARGINS para o seu TCustomEdit para definir as margens esquerda e direita.
SendMessage(CustomEdit.Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MakeLong(LeftMargin, RightMargin));