Suchfunktion in TMemo



  • Hi!

    Ich will eine Suchfunktion für TMemo schreiben.
    Nur weiss ich nicht, wie das geht!
    Habe schon FindDialog versucht, nur krieg ich da das "Weitersuchen" nicht hin.
    Leider habe ich den Code davon gelöscht, als es nicht funktionierte 😞
    Nun hat ein Freund gesagt, ich solle die Funktion selbst schreiben. Einmalig Suchen ist auch hier kein Problem, nur wie sage ich der Funktion dann ab wann sie suchen soll? (natürlich Parameter)
    Ich werde den Code noch schreiben und nachposten!

    Danke für Antworten!!

    Blackhawk



  • String old="";
      int position;
      String search=InputBox("Suchen","Nach welchem Wort suchen?",old);
      old=search;
      position=RichEdit1->Text.Pos(search)-1;
      RichEdit1->SelStart=position;
      RichEdit1->SelLength=search.Length();
      RichEdit1->SetFocus();
    

    das geht soweit mit dem ersten Fall.

    [edit] das bin beides ich^^



  • Benutze TRichEdit statt des Memo und sieh dir die Eigenschaften und Methoden von TFindDialog sowie die dazugehörigen Beispiele in der Hilfe an. Eine Zeile wie

    FoundAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd, TSearchTypes()<< stMatchCase);
    

    ist eigentlich selbsterklärend, der Ansatzpunkt für das "Weitersuchen" springt einem geradezu in's Auge.



  • Danke, aber ich will kein TRichEdit benutzen.
    Das Beispiel hab ich mir auch schon angeguckt.
    Warum ich kein RichEdit verwenden will? Weil ich mir als kleine Übung einen Texteditor basteln will!
    Sonst hab ich die ganzen Wordinfos mit Font und so mit drin.



  • TRichEdit kann selbstverständlich auch PlainText darstellen bzw. verwalten.



  • kk, danke!
    Dann werd ich das mal ausprobieren!



  • meine alte suche in mom ging so

    for (int i=0; i<=AusgabeMemo1->Lines->Count; i++)
    
       if (AusgabeMemo1->Lines->Strings[i].Pos(SucheEdit1->Text))
    
             Memo1->Lines->Add(AusgabeMemo1->Lines->Strings[i]);
    


  • meine aktuelle is ziemlich komplex.
    hab nen finddialog reingemacht
    findet dein prog nich pro zeile ein wort?
    wenn du die zeilen als anzahl nimmst...
    dann steht was weiss ich... "hallo hallo hallo
    hallo".. dran und du findest "hallo hallo".
    so ähnlich hatte ich das am anfang auch.



  • sucht Sie per button klick oder sucht Sie einfach durch eingabe in Edit ?



  • durch button, der dann den finddialog aktiviert



  • hast du eine Ahnung wie ich das mache ?:

    es soll so gesucht werden das ich einen in ein eintrag im Edit feld z.b das wort i eingebe und er mir alle Eintrage zeigt die mit i anfangen und geb ich nach dem i da g ein z.b ig soll er das automatisch erkennen und alle ergebnise mir ig ausgeben usw...

    ne idee muss ich da nur die eigenschaft vom Edit1 ändern `?



  • wie willst du "i" erkennen? markieren? wenn ja, es geht immer nur eine durchgehende markierung.
    Ich würde dir auch raten, RichEdit zu benutzen und die property PlainText anzuschalten. So isses wie Memo nur mehr funktionen



  • ok hab nur RichEdit aber hmm ich weiss uch noch nicht wie ich das machen kann



  • ich schick dir mal die source davon über email, k?
    du musst dann nur dlgFind->FindWord in Edit1->Text oder was auch immer ersetzen.



  • icq ? da ich ja @ work bin.. ? meien ICQ daten sind bei meine Profil !!



  • deine nummer wasn't found.

    int StartPos,ToEnd,FoundAt;
    if(RichEdit1->SelLength)
      StartPos=RichEdit1->SelStart+RichEdit1->SelLength;
    else
      StartPos=0;
    ToEnd=RichEdit1->Text.Length()-StartPos;
    FoundAt=RichEdit1->FindText(Edit1->Text,StartPos,ToEnd,TSearchTypes());
    if(FoundAt!=-1){
      RichEdit1->SetFocus();
      RichEdit1->SelStart=FoundAt;
      RichEdit1->SelLength=Edit1->Text.Length();
    }
    

    das machst am besten in nen button1click rein



  • jetzt hab ich mal nen bespiel gefudnen was ich machen will ich will so ne such wie bei BCB die hilfe ist .. schua dir die mal an die ist klasse... ich werd also ne ListBox nehemen.

    icq: 94680139



  • welches stichwort?



  • Blackhawk schrieb:

    welches stichwort?

    in der Memüleiste

    unter Hilfe-> C++ Builder - Hilfe->Index und die suche da.. so soll dann meine suche sein sprich von moto.

    in icq bin ich grade online.. blos im DND ich mach mich mal kur on 😃 😋


Anmelden zum Antworten