Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.




Deel:
Meldingen
Alles wissen

Lazarus Pascal - Snel en eenvoudige een zoek functie toevoegen aan een TMemo

1 Berichten
1 Gebruikers
0 Vind-ik-leuks
587 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2660
Topic starter  

Ik wilde een zoekfunctie toevoegen aan een TMemo (Memo1) in een van mijn projecten - met de optie om van gevonden tekst naar de volgende gevonden tekst te springen, en de gevonden tekst te highlighten.
Dit is geheel gebaseerd op dit voorbeeld in de Lazarus Wiki - ik plaats het hier met wat kleine modificaties en voor mijn eigen referentie.

Uiteraard hebben we hiervoor een TEdit (Edit1, enter search criteria) en een TButton (Button1) nodif.

...
Uses ... , StrUtils, LazUTF8;

...
function TForm1.FindInMemo(AString: String; StartPos: Integer): Integer;
begin
  Result := PosEx(AString, Memo1.Text, StartPos);

  if Result > 0 then
    begin
      Memo1.SelStart  := UTF8Length(PChar(Memo1.Text), Result - 1);
      Memo1.SelLength := Length(AString);
      Memo1.SetFocus;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  SearchStart : Integer = 0;
  SearchStr   : string = '';
begin
  if SearchStr <> Edit1.Text then
    begin
      SearchStart := 0;
      SearchStr := Edit1.Text;
    end;

  SearchStart := FindInMemo(SearchStr, SearchStart + 1);

  if SearchStart = 0 then beep;
end;                                 

 

Het onClick event can de button moeten we natuurlijk aan de Button1Click() procedure koppelen.

Ik heb als extra nog een popup menu gemaakt voor de TMemo zodat ik een toets-combinatie kan gebruiken om naar het volgende zoek resultaat te springen (Mac: Command+G, Windows/Linux: F3).


   
BeantwoordenCiteren

Bevalt je wat je hier ziet, en wil je graag helpen? 

Uiteraard is de beste manier van helpen, door anderen hier te helpen met hun vragen. Maar je kunt ons ook op andere manieren helpen:

- Shop bijvoorbeeld bij Amazon, het kost je niks extra, maar het kan zijn dat wij een kleine commissie ontvangen,
- stuur me een koffie via PayPal ($5, $10, $20, or zelf kiezen),
- je kunt ook een Patreon worden,
- of BitCoin (BTC), of BitCoinCash (BCH) doneren.

Deel: