Pergunta

Estou tentando pintar VirtualStringtreeA célula de maneira diferente quando o mouse acaba. Como posso detectar os coordenados do nó quente? Eu sei que há uma propriedade HotNode, mas ele retorna apenas o nó que está sob o cursor do mouse. Eu preciso obter coordenados de células (x, y) desse nó.

Foi útil?

Solução

Você pode obter as coordenadas de qualquer nó com o GetDisplayRect método. Também, InvalidateNode Dizemos as coordenadas do nó que você acabou de invalidar.

Para seus propósitos, acho que você não precisa conhecer as coordenadas de qualquer nó arbitrário. Em vez disso, você precisa saber, quando está pintando o nó, se o nó que você está pintando é o quente. Todos os eventos de draws de proprietários específicos para nó dizem o nó atual e as coordenadas, exceto para OnPaintText, o que só diz o nó. No entanto, não há necessidade de rastrear o nó quente atual. Basta verificar se Node = Sender.HotNode Para determinar qual estilo usar para pintar o nó e seu texto.

Você pode evitar todo o problema. O controle já possui uma quantidade razoável de código específico de nó quente, por isso pode ser apenas uma questão de encontrar quais propriedades configurarem, em vez de ter que pintar tudo sozinho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top