Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - Memo s max. počtom znakov v riadku a riadkov

Potrebujem Meno, v ktorom by mohlo byť maximálne 5 riadkov pri maximálnej dĺžke každého riadka 60 znakov. Nakoľko som nenašiel lepšie riešenie, urobil som toto. Je možné to urobiť jednoduchšie?

procedure TfrmInputPartner.memoAdressKeyPress(Sender: TObject;
  var Key: Char);
var
  i, j: Integer;
  Line: Integer;
begin
  with memoAdress do
    begin
      if (Key = #13) and (Lines.Count = 5) then Key := #0;
      if (Key in [#32..#255]) then
        begin
          j := -1;
          Line := 0;
          repeat
            i := j + 2;
            j := PosEx(#$D#$A, Text, i);
            if (j > 0) and (SelStart + 1 > j) then Inc(Line);
          until (SelStart + 1 <= j) or (j = 0);
          if (Line > 4) or (j - i >= 60) then Key := #0;
        end;
    end;
end;
loading...
Předmět Autor Datum
Neviem či je toto riešenie jednoduchšie ? Skús: procedure TForm1.Memo1Change(Sender: TObject); var…
pme 18.05.2007 19:00
pme
Je tam niekde chyba. Ak dĺžka niektorého riadku bude 60, tak pri zápise akéhokoľvek znaku do akéhoko…
msx. 18.05.2007 22:06
msx.
IMHO Jez. je tvoje řešení sice delší na psaní, leč rychlejší na zpracování (zpracování zpráv provede…
Rce 18.05.2007 23:16
Rce
Išlo mi o jednoduché odriadkovanie. poslední
msx. 18.05.2007 23:25
msx.

Neviem či je toto riešenie jednoduchšie ? Skús:

procedure TForm1.Memo1Change(Sender: TObject);
var LineNum: Integer;
begin
  LineNum:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
  if (Length(Memo1.Lines.Strings[Linenum]) > 60) or (Memo1.Lines.Count > 5) then
    Memo1.Perform(EM_UNDO, 0, 0);
  Memo1.Perform(EM_EMPTYUNDOBUFFER, 0, 0);
end;

Zpět do poradny Odpovědět na původní otázku Nahoru

loading...