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?

Foi útil?

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));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top