Strona g│≤wna

 

Numerowanie linii 

Kod, kt≤ry tutaj prezentuje numeruje zaznaczony tekst w komponencie Memo. Nie jest to skomplikowane. PΩtla rozpatruje ka┐d▒ liniΩ tekstu wstawiaj▒c na pocz▒tek numer zaznaczonego tekstu. 

Procedura zawiera "w sobie" drug▒ procedurΩ ustawiaj▒c▒ w komponencie kusor na wybranej linii:

Listing 13.1


 

procedure TForm1.btnNumberClick(Sender: TObject);

procedure SetCursor(Row, Column: Integer);
begin
{
  Pierwsze polecenie ustawia kursor w linii okreslonej parametrem Row.
  Drugie polecenie dodaje do tego wartosc parametru Column, ktore oznacza
  numer znaku w linii.
}
  Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Row, 0);
  Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Row, 0) + Column;
end;

var I, Y, Count: Integer;

begin
  Count := 0; // wyzeruj licznik
{
   Najpierw pobierz pierwsza linie zaznaczonego tekstu. Zwiekszajac
   te liczbe o jeden ( w komponencie Memo pierwsza linia oznaczona
   jest przez cyfre 0 ) dostajemy numer linii, w ktorej znajduje sie kursor.
}
  Y := Memo1.Perform(EM_LINEFROMCHAR, $FFFF, 0);
  Inc(Y);

{
   Petla wykonuje sie od zmiennej Y ( pierwsza linia zaznaczonego tekstu ) do
   zmiennej CaretPos - koniec zaznaczonego testku.
}
  for I := Y to Memo1.CaretPos.y + 1 do
  begin
    Inc(count); // zwieksz licznik
    SetCursor(i -1, 0); // ustaw na poczatek linii
    Memo1.SelText := Format('%d. ', [Count]); // wstaw numerowany tekst
    Memo1.SetFocus; // ustaw komponent jako aktywny
  end;
end;

 

 

Adam Boduch