CEdit - Tabstopps setzen



  • Hallo,

    wenn ich in einer CEdit Box oder einer CStatic einen Text folgendermassen reinschreibe:

    CDialog::OnInitDialog();
    {
     str += _T("a  ->  α   |   i  ->  ι   |   ou ->  ου  |   t  ->  τ\r\n");
     str += _T("b  ->  β   |   J  ->  Γ   |   PS ->  Ψ   |   U  -> ΟΥ\r\n");
     str += _T("CH ->  Χ   |   j  ->  γ   |   ps ->  ψ   |   u  -> ου\r\n");
    
     mctrlRules.SetWindowText(str);
     return 0;
    }
    

    &#9.. = griechische Schriftzeichen welche hier als UNICODE angezeigt werden.

    dann werden die Zeichen und der Trennstrich nicht richtig untereinander geschrieben, so wie es oben steht. Kann mir da jemand weiterhelfen?
    Liegt es vieleicht an dem Raster der Textbox? Wenn ja wie stelle ich die ein?
    Oder muss ich vieleicht eine Feste Schriftbreite vergeben?

    Danke für Hilfen

    LG



  • Es liegt an der proportinalen Schriftart:
    1. Möglichkeit Du verwendest (wie schon rkannt) eine feste Schriftbreite
    2. Mögichkeit: Du verwendest CEdit::SetTabStops, und jeweils vor dem Trennstrich ein \t!



  • Wenn es drum geht, die Abstände einzuhalten, dann verwende doch einfach Tabulatoren:

    CString string;
    string.Format("abc\t123\tabc");
    GetDlgItem(IDC_STATICTEXT)->SetWindowText(string);
    


  • Hallo und Danke erstmals,

    also Tabstops kann ich nicht viele einsetzen, da die EditBox nicht so breit ist.
    Deshalb wollte ich Leerzeichen setzen, welches wie schon erwähnt mit Problemen verbunden ist.

    Wie kann ich denn die Schriftbreite ändern damit ich eine gute Formatierung hin
    kriege?

    ...
    CFont* pFont = mctrlRules.GetFont();
    LOGFONT lf;
    pFont->GetLogFont(&lf);
    ...  //  Wie muss ich hier die Schrift bestimmen?
    mctrlRules.SetFont(pFont);
    ...
    


  • Du müsstest mit CreateFont einen neuen Font nutzen, z.B. Coutrier New.

    Aberwieso ist die Box nicht breitgenug, dass Du nicht Tabs verwenden kannst?
    Wenn der Text so rein geht, dann kanst Du doch auch Tabstops entsprechend setzen mit SetTabStops!
    Das verstehe ich nicht?!? 😕



  • Muss es ein spezieller Font sein den ich erstellen muss?

    Doch ich kann schon tabs verwenden aber die Abstände werden zu gross so das
    sie nicht mehr in die Breite der Box passen. Ich setze die Tabstops nicht mit
    SetTabstop sondern mit "\t" im String.



  • Bevor Du "\t" verwendest, musst Du die Breite für die Tabstops setzen.
    Etwa so:

    CEdit* pCtrl = (CEdit*) GetDlgItem(IDC_EDIT1);
    int tab[4]={55,110,160,235};
    pCtrl->SetTabStops( 4,tab);
    CString text="wert1\tWert2\twert3\twert4\twert5";
    SetDlgItemText(IDC_EDIT1,text);
    

    Die Breite der enzelnen Tabs entspricht dann den Werten.



  • Man kan aber auch nur einen Wert setzen, dann ist das der konstante Abstand für jeden Tabstopp.



  • Hallo,

    habe das nochmal ausprobiert mit SetTabStop und es funzt vielen Dank nochmal.

    LG


Anmelden zum Antworten