Tipy a triky v Delphi, díl 95.

I dnešní díl bude zaměřen spíše na začátečníky. Ukážeme si, jak v komponentě RichEdit vyhledat a označit nalezený text a pak si předvedeme, jak dynamicky změnit hlavní formulář aplikace na základě spouštěcích parametrů aplikace.
Tipy a triky v Delphi, díl 95.
Začneme tedy hledáním a označováním textu v komponentě RichEdit. Podobně jako každá rozumná "textová" komponenta nám i RichEdit nabízí řadu metod pro práci s textem a nechybí mezi nimi pochopitelně ani hledání textu. Konkrétně se jedná o metodu FindText, které musíme jednak říci, jaký text hledáme, kde (tedy odkud kam) a parametry hledání (rozlišování velikosti písmen, pouze celá slova...). Na výstupu dostaneme pozici prvního znaku nalezeného řetězce a nebo -1 v případě neúspěchu.

Tolik tedy hlavní myšlenka, která je ostatně popsána v nápovědě. My si poté získanou hodnotu vezmeme jako základ pro druhou část úkolu - pro označení textu. Nejprve nastavíme komponentě Focus, aby se nám výřez okna vždy přesunul na nalezenou část textu. Dále zvolíme počáteční bod označení textu, kterým je právě ona pozice nalezená v první části úkolu a konečně zvolíme délku označení. Ta je samozřejmě shodná s délkou hledaného textu, kterou rovněž známe.

function SearchAndSelect(RichEdit: TRichEdit; SearchText: string): Boolean;
var
  Position: Integer;
begin
  Result := False;
  with RichEdit do
  begin
    Lines.BeginUpdate;
    Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
    if Position <> -1 then
    begin
      SetFocus;
      SelStart := Position;
      SelLength := Length(SearchText);
      Result := true;
    end;
    Lines.EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not SearchAndSelect(RichEdit1, `hledaný text`) then ShowMessage(`Nenalezeno`);
end;

Takto napsaná funkce nám najde první výskyt hledaného výrazu a označí jej. Budete-li chtít nalézt i ostatní výrazy, stačí dát celou „věc“ do cyklu a posouvat hranice prohledávaného textu. Označit více nesouvislého textu bohužel nelze.

A dostáváme se k druhému dnešnímu tématu. Ukážeme si, jak na základě parametrů při spouštění naší aplikace zvolit, který formulář bude otevřen jako první (hlavní). Toho se dá využít mnoha způsoby, například můžete podle vstupních parametrů měnit uživatelské rozhraní a podobně. Této změny docílíme velmi snadno drobnou úpravou projektového souboru, který bude vypadat takto:

program Project1;

uses
  Forms, Classes, SysUtils,
  Unit1 in `Unit1.pas` {Form1}
  Unit2 in `Unit2.pas` {Form2}

{$R *.res}

var
  InstanceClass: TComponentClass;
  FormReference: TForm;

begin
Application.Initialize;
  if FindCmdLineSwitch(`druhy`,  [`-`, `/`], True) then
  begin
    InstanceClass := TForm2;
    FormReference := Form2;
  end
  else
  begin
    InstanceClass := TForm1;
    FormReference := Form1;
  end;
  Application.CreateForm(InstanceClass, FormReference);
  Application.Run;
end.

Jak vidíte, do "klasické" struktury je vloženo jednoduché větvení na základě vstupního parametru při spouštění. Vložíte-li tedy za název aplikace a lomítko (pomlčku) parametr "druhy", bude hlavním formulářem druhý formulář místo prvního. Tímto způsobem samozřejmě můžete volit mezi mnoha různými formuláři na základě celé řady vstupních parametrů či jejich kombinací.

Témata článku: Software, Programování, Focus, Díl, První parametr, Trik, Hlavní myšlenka

Určitě si přečtěte

Co je realita a fikce? Brzy to nepoznáme. A.I. ze Stanfordu tvoří fotky z neexistujících měst

Co je realita a fikce? Brzy to nepoznáme. A.I. ze Stanfordu tvoří fotky z neexistujících měst

** Fotografii každý vnímá jako jednoznačný důkaz ** časem to ale přestane platit ** Strojové učení se totiž neustále zdokonaluje

16.  8.  2017 | Jakub Čížek | 13

USB zařízení je možné odposlouchávat ze sousedního portu

USB zařízení je možné odposlouchávat ze sousedního portu

** Crosstalk byl dřív problém paralelních portů, dnes se ho pokusili prověřit na USB ** Zařízení ze sousedního USB portu může odposlouchávat to vedlejší ** Mohou vznikat záškodnické flašky nebo třeba USB lampičky

14.  8.  2017 | Adam Harmada | 19

Nový Skype! Vypadá jinak a je „sociálnější“

Nový Skype! Vypadá jinak a je „sociálnější“

18.  8.  2017 | Markéta Mikešová | 36


Aktuální číslo časopisu Computer

Velký test NVMe a SATA SSD

Máte slabý signál
Wi-Fi? Poradíme!

Jak umělá inteligence opravuje fotky

Kupujete dron? Ty levné se nevyplatí