Gutter in SynEdit beschreiben



  • Moin, Moin,

    ich benutze die SynEdit-Komponente und bin sehr zufrieden damit.
    Jetzt will ich im Gutter zur Zeilennummer eine zusätzliche Info anzeigen.
    In einem Delphi-Forum bin ich ein bischen weiter gekommen, es müsste mit der Methode OnGutterGetText gehen. Weitere Infos habe ich nicht gefunden.
    ShowLineNumbers ist true und mit folgenden Code will ich meinen Text in den Gutter bringen:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        SynEdit1->OnGutterGetText( SynEdit1, 1, "abc   1");
    }
    

    d.h. wenn ich auf den Butten drücke will ich zur Zeilennummer '1' zusätzlich den Text "abc" im Gutter stehen haben. Bei mir tut sich leider im Gutter gar nichts 😞

    Habt ihr einen Tip?

    Danke



  • DG2003 schrieb:

    Habt ihr einen Tip?

    Klar, das Ereigniss auch richtig verwenden.

    Klick auf den TSynEdit wähle im Objektinspektor Ereignisse
    Scroll runter zu OnGutterGetText und doppelklick drauf.
    Gib hier ein was du haben willst ala

    void __fastcall TForm1::SynEdit1GutterGetText(TObject *Sender, int aLine, UnicodeString &aText)
    
    {
    	if (aLine==1) {
    
    		aText="abc   1";
    	}
    }
    


  • VergissEs,

    Danke, ein Teilerfolg.
    Wenn das Ereignis ausgelöst wird (Zeile erzeugt), kann ich den Text der entsprechenden Zeile ändern. :p
    ABER, ich möchte das auf Knopfdruck (Button), dann will ich in bestimmte Zeilen einen zusätzlichen Text



  • DG2003 schrieb:

    ABER, ich möchte das auf Knopfdruck (Button), dann will ich in bestimmte Zeilen einen zusätzlichen Text

    Du weißt nun, daß das Ereignis OnGutterGetText für den Text Verantworlich ist.
    Du willst aber über einen Button klick die Änderung machen also was ist zu tun?

    Du erstellt dir z.B. zwei Membervariabeln eine int für die Zeilennummer und einen String für den GutterText.
    Im OnGutterGetText überprüfst du ob die Membervariabeln Zeilennummer mit der aLine identisch ist wenn ja dann zeige den Text an.

    void __fastcall TForm1::SynEdit1GutterGetText(TObject *Sender, int aLine, UnicodeString &aText)
    {
    	if (mRow==aLine) {
    
    		aText=mText;
    	}
    }
    

    Jetzt kommt der gewünschte Buttonklick

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	mRow=1;
    	mText="1 Text";
    	SynEdit1->Invalidate();
    }
    


  • VergissEs,

    danke,das war es, das hatte mir gefehlt: 🙂

    SynEdit1->Invalidate();
    

    Jetzt brummts

    Noch einmal vielen Dank 👍 👍 👍

    DG2003


Anmelden zum Antworten