Code in einer AnsiString Zeile



  • hallo,

    [C++/Code]
    versuche vergeblich in der Hilfe.
    benötige die Code(C++) für
    a: Zeilenvorschub
    b: Tab

    Diese werden in einem AnsiString an entsprechender Stelle eingefügt.
    Danach drucke ich über die " Printer() " Befehle den String auf dem Drucker aus.

    gruß Siegfried

    😞



  • a: '\n'
    b: '\t'

    Sofern es das ist, was du wolltest 🙂



  • Hallo,

    Siehe in der BCB-Hilfe : "Escape-Sequenzen".

    Bis dann denn,
    🙂
    Nash



  • hallo,

    danke für die hilfe.

    habe leider noch Probleme.

    im Debugmodus sieht es in der Variable AnsiString so aus:

    myString "Hallo Leute\n\r\twir gehen aus"

    im Druck werden die "Escape-Sequenzen" falsch dargestellt.
    es sind für die Steuerzeichen nur Quatrate vorhanden.

    Gruß Siegfried

    😞



  • Hallo,

    Versuch mal "\r\n" (ist bei Dir verdreht)... 🙂

    Bis dann denn,
    🙂
    Nash



  • hallo

    habe im Forum die Reihenfolge \r\n vertauscht.
    klappt trotzdem nicht. auch \t für Tab klappt nicht.

    gruß Siegfried#

    😞



  • Zeige mal deinen Code. Die Funktion, die du benutzt hast unterstützt wahrscheinlich keine Multiline-Strings und du musst eine andere Lösung finden.



  • Hallo,
    hier in verkürzter Form mein Code:

    [C++/Code]

    AnsiString strFields;

    strFields = "Key - Code ";
    strFields += '\t'; //0x09; Tab
    strFields += '\t'; //0x09; Tab
    strFields += '\t'; //0x09; Tab
    strFields +=
    DataModule1->Query2->Fields->FieldByName
    ("KeyCode")->AsString;
    //...
    //..
    yG=yG+ZA+Printer()->Canvas->TextHeight(strFields);
    ygs=ygs+yG;

    if ((ygs + yG + Printer()->Canvas->TextHeight(strFields) >
    Printer()->PageHeight) || (Seite==0))
    //
    {
    if (Seite>0) Printer()->NewPage();
    Printer()->Canvas->Font->Style
    = TFontStyles()<< fsBold << fsUnderline;
    Printer()->Canvas->Font->Size = 14;
    Seite++;
    AnsiString Kopfzeile =
    "Produkt-Aktivierung Seite: "+IntToStr(Seite)
    + " " + DateBuf + " " + TimeBuf;
    Printer()->Canvas->TextOut(LR,0,Kopfzeile);
    y=200; // Abstand zum Text
    ygs = y;
    }
    Printer()->Canvas->TextOutA(LR,y,strFields);
    y=y+ZA+Printer()->Canvas->TextHeight(strFields);
    }
    }
    Printer()->EndDoc(); // Beendet Druckauftrag

    Gruß Siegfried

    😞



  • Ich kann zwar keine bessere Lösung anbieten, da ich mit der VCL nicht vertraut bin, aber die Funktion TextOut unterstützt definitiv keine Zeilenumbrüche. Musst du eine andere Lösung finden und notfalls "per Hand" die Zeilen positionieren. Aber da wird es sicherlich auch noch eine komfortablere Möglichkeit geben.



  • Hallo

    mit dem WinAPI-Befehl DrawText() und dem Flag DT_WORDBREAK kann man auch mehrzeiligen Text ausgeben.
    Such mal im Forum danach.

    bis bald
    akari



  • hallo

    danke an alle. Werde dann eine andere Lösung suchen und bei Bedarf auf das Forum zurückgreifen.

    Gruß Siegfried

    PS: wüchnsche allen ein frohes Osterfest.

    👍


Anmelden zum Antworten