Autoscroll bei Edit Box
-
Guten Morgen allerseits
Ich habe eine Multiline Editbox, in die ich diverse Statusinformationen von meinen Programm reinschreibe. Das ist alles schön und gut.
Nun möchte ich aber, dass die Edit Box "automatisch" jeweils wenn der Text den unteren Rand der Box erreicht hatt automatisch nach oben scrollen würde. Sonst muss man das von Hand machen und das finde ich doof...
Ich habe die Optionen ausprobiert mit den "AutoVScroll" und "Auto HScroll..."
Hat jemand ein Tipp?
Danke Gruss
-
AutoVScroll und VScroll.
Wenn gewünscht auch noch AutoHScroll und HScroll setzen. Je nachdem ob Du Zeilenümbrüche möchtest oder nicht.
-
ja das ist ja das Problem, ich habe die alle gesetzt und es scrollt nicht automatisch...

darum die Frage, geht es sonst noch anderst? oder muss ich sonst noch was einstellen?
-
Wenn ich solch einen Dialog mit einem Edit Cntrol im Resource Editor zusammenklicke und dann dort Daten eingebe verhält er sich entsprechend!
Oder willst Du das per Programm steuern? Dann ist CEdit::SetSel Dein Freund!
-
Sorry ich meine etwas anderes...ich meine, wenn ich text in die edit Box schreibe, und irgend wann zu viel Tex habe, so dass es nicht mehr in die sichtbaren Hälfte der editbox passt, dass mir der computer einfach immer die neue Zeile Text sozusagen immer "sichtbar" am unteren Ende der Edit Box anzeigt. Wie gesagt, immer den "neuen" "aktuellen" Text anzeigen (durch automatisch raufscrollen)
Ich hoffe Ihr versteht was ich meine!

Danke aber für die Beiträge!
-
Und dafür habe ich Dir die Antwort gegeben: CEdit:SetSel
-
Sorry du hast natürlich recht... ich habe es falsch angewendet!

Danke!
-
wuerd ich auch sagen
immer brav SetSel(GetLineCount) machen #gg
-
Mr Evil schrieb:
wuerd ich auch sagen
immer brav SetSel(GetLineCount) machen #gg
Das würde ich nicht sagen

int iLen = edCtrl.GetWindowTextLength(); edCtrl.SetSel(iLen,iLen);Dein Code selektiert in jedem Fall etwas anderes!
-
m_Edit.LineScroll(m_Edit.GetLineCount());Funktioniert auch sehr gut!
-
C/C++ Code:
m_Edit.LineScroll(m_Edit.GetLineCount());Funktioniert auch sehr gut!
stimmt, aber ich bevorzuge doch
int iLen = m_ctrlEdit.GetWindowTextLength(); m_ctrlEdit.SetSel(iLen,iLen);weil weiter mit
UINT myLastSel;myLastSel = m_ctrlEdit.GetSel(); ... UpdateData(FALSE); ... m_ctrlEdit.SetSel(myLastSel);die gescrollte neue Position erhalten bleibt. Sonst hüpft die Anzeige in der Editbox wieder an den Anfang.
mfg
-
UpdateWindow verwendet SetWindowText. Würdest Du das Control durch hinzufühgen mit ReplaceSel ändern, hätest Du dieses Problem nicht.