Lorsque l'utilisateur appuie sur Entrez clé dans wxStyledTextCtrl
, il semble que le curseur va toujours jusqu'au début de la ligne (zéro indentation), ce qui est très probablement le comportement attendu. Je veux être capable d'écrire du code de script avec le format suivant, avec des retraits de ligne. J'utilise le code C++ suivant pour pouvoir contrôler l'indentation à un niveau très basique.Comment contrôler LineIndentation dans wxStyledTextCtrl lorsque l'utilisateur appuie sur Entrée
void Script::OnKeyUp(wxKeyEvent& evt)
{
if ((evt.GetKeyCode() == WXK_RETURN || evt.GetKeyCode() == WXK_NUMPAD_ENTER)) {
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
int PreviousIndentation = GetLineIndentation(line-1);
SetLineIndentation(line, PreviousIndentation);
GotoPos(GetCurrentPos() + PreviousIndentation);
}
}
Le code ci-dessus C++ préserve le niveau d'indentation, cependant, le curseur passe d'abord au début de la ligne, puis au niveau de retrait. Lorsque vous utilisez d'autres IDE, cela ne se passe pas de la sorte, comme aller au début de la ligne, puis au niveau de l'indentation. Plutôt, le curseur immédiatement va à/suit le niveau d'indentation. Y at-il un moyen que le curseur peut immédiatement aller au niveau d'indentation sans initialement aller au niveau d'indentation zéro.
D'ailleurs, j'ai essayé EVT_STC_CHARADDED
, ce qui semble être la voie mis en œuvre ZeroBraneStudio, mais lorsque la touche Entrée est pressée evt.GetKeyCode()
retourne un entier bizarre et evt.GetUnicodeKey
retours \0
et de plus EVT_STC_CHARADDED
événement est appelé deux fois (je suppose en raison de CR + LF).
Soit dit en passant, j'utilise wxWidgets-3.1.0 sur Windows 10.
Toutes les idées seraient appréciées.
Merci beaucoup! Hier, j'ai passé quelques heures à régler le problème de saut de ligne, mais en vain. Maintenant, cela fonctionne comment cela devrait fonctionner. – macroland
Désolé pour l'autre réponse. Une fois que j'ai réalisé le problème, j'ai passé environ 3 heures à essayer de le contourner avant de réaliser que c'était probablement sans espoir. –
Avec vos améliorations récentes sur la réponse, c'est maintenant en effet une très bonne! – macroland