Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [DELPHI] RichEdit & ReplaceDialog

    Ciao ...
    Ho un applicazione con all'interno un TRichedit, tramite un pulsante carico (Loadfromfile) il testo.rtf e lo visualizzo..
    la mia domanda è :
    Come posso agire sul comando ReplaceDialog per trovare una stringa di testo e sostituirla con un altra all'interno del Trichedit??
    proprio nn riesco....grazie ciao

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Il componente ReplaceDialog fornisce le proprietà FindText e ReplaceText che consentono di acquisire e impostare rispettivamente il testo da trovare e quello da rimpiazzare all'interno della finestra di dialogo.

    Il componente fornisce solo l'interfaccia per consentire all'utente di specificare tali valori, ma la ricerca e la sostituzione della stringa, salvo per controlli Edit, deve essere scritta dal programmatore.

    Cerca sulla Guida in linea di Delphi le string manipulation routines per maggiori informazioni sulle funzioni che ti consentono di ricercare stringhe, rimpiazzarle e così via.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Questo è il codice che mi permette di cercare la parola e sostituirla all'interno del Richedit (ovviamente utilizzando il ReplaceDialog):

    procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
    var
    SelPos, SPos, SLen, TextLength: Integer;
    SearchString : string;
    begin
    with TReplaceDialog(Sender) do begin
    TextLength:=Length(richedit1.Lines.Text);

    SPos:=richedit1.SelStart;
    SLen:=richedit1.SelLength;

    SearchString := Copy(richedit1.Lines.Text,
    SPos + SLen + 1,
    TextLength - SLen + 1);

    SelPos := Pos(FindText, SearchString);
    if SelPos > 0 then begin
    richedit1.SelStart := (SelPos - 1) + (SPos + SLen);
    richedit1.SelLength := Length(FindText);
    richedit1.SelText := ReplaceText;
    end
    else MessageDlg('Could not find "' + FindText +
    '" in richedit1.', mtError, [mbOk], 0);
    end;
    end;

    mi aiuteresti a capire come immettere automaticamente (cioè senza aprire il ReplaceDialog) più stringhe di testo e sostituirle automaticamente con altre 2 stringe diverse?
    spero mi sia spiegato...grazie ciao

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da carmelo81
    mi aiuteresti a capire come immettere automaticamente (cioè senza aprire il ReplaceDialog) più stringhe di testo e sostituirle automaticamente con altre 2 stringe diverse?
    Qualche chiarimento per capire: la sostituzione della parola deve avvenire per 2 parole anzichè 1, senza appoggiarti alla ReplaceDialog; questo significa che ciò di cui hai bisogno è semplicemente una porzione di codice che, data una coppia di stringhe "vecchie" e una coppia di stringhe "nuove", sostituisca le prime con le seconde all'interno di un controllo RichEdit... ho capito bene?

    L'inserimento delle parole da cercare e sostituire avviene con normali controlli Edit?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    1)In realtà a me interessa cercare piu parole (non due) e sostituirle con delle variabili;
    Posso anche utilizzare il ReplaceDialog, ma devo fare in modo di non visualizzarlo (magari con la propr. Hide)...

    2)Avviene premendo un pulsante che mi carichi il file.rtf all'interno del Richedit e automaticamente mi sostituisca delle parole con le varibili.

    Avevi gia capito il problema...spero adesso sia ancora piu chiaro grazie ciao

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da carmelo81
    1)In realtà a me interessa cercare piu parole (non due) e sostituirle con delle variabili;
    Ok.

    Originariamente inviato da carmelo81
    Posso anche utilizzare il ReplaceDialog, ma devo fare in modo di non visualizzarlo (magari con la propr. Hide)...
    A cosa ti servirebbe una finestra di dialogo se non devi visualizzarla?
    Non utilizzare la ReplaceDialog.

    Originariamente inviato da carmelo81
    2)Avviene premendo un pulsante che mi carichi il file.rtf all'interno del Richedit e automaticamente mi sostituisca delle parole con le varibili.
    Ti posto una porzione di codice che ho appena creato ad hoc come esempio di ricerca e sostituzione di una parola sfruttando le caratteristiche della selezione (in questo modo, mantengo inalterata la formattazione):
    codice:
    procedure TDemoForm.ReplaceButtonClick(Sender: TObject);
    const
      OldString: string = 'ReplaceMe';
      NewString: string = 'Replaced';
    var
      Loop: Boolean;
      StringPos: Integer;
    begin
      Loop := True;
      while Loop do
      begin
        StringPos := Pos(OldString, RichEdit.Lines.Text);
        if StringPos > 0 then
        begin
          RichEdit.SelStart := StringPos - 1;
          RichEdit.SelLength := Length(OldString);
          RichEdit.SelText := NewString;
        end
        else
          Loop := False;
      end;
    end;
    Viene ricercata la stringa OldString all'interno del testo contenuto nel RichEdit; ogni volta che la stringa viene individuata, si imposta una selezione avente posizione e dimensioni uguale a quella della stringa ricercata (in poche parole, si seleziona la stringa); il testo della "vecchia stringa" viene rimpiazzato con il testo della nuova, mantenendo la formattazione esistente (al massimo, perdendo la selezione impostata prima dell'operazione).

    Spero che serva a chiarire una metodologia di ricerca...poi, dovrai adattare il codice affinchè lavori con il numero di variabili che intendi utilizzare (che io non conosco) sostituendo le parole che ritieni necessarie.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.