Delphi – Overwrite mogućnost u kontrolama TEdit i TMemo

Ako ste već duže u Delphi programiranju, sigurno znate da njegove kontrole TEdit i TMemo ne poseduju mogućnost prepisivanja (overwrite – OWR). Ali ova mogućnost kod ovih kontrola može da se emulira, preko podešavanja osobine SelLength, kontola Edit i Memo na jedan, tokom procesiranja događaja KeyPress. Ovo će prouzrokovati, da karakter na trenutnoj poziciji bude "prepisan".

Sledeći primer će vam pokazati emulaciju mogućnosti prepisivanja (overwrite), na jednoj TMemo komponenti. Samo stanje moda za prepisivanje se uključije – isključuje, preko tastera "Insert". A evo i samog Delphi primera:

type
   TForm1 = class(TForm)
   Memo1: TMemo;
   procedure Memo1KeyDown (Sender: TObject; var Key: Word;
   Shift: TShiftState);
   procedure Memo1KeyPress (Sender: TObject; var Key: Char);
private
   { Private declarations }
   InsertOn : bool;
public
   { Public declarations }
end;
var
   Form1: TForm1;
implementation

{$R *.DFM}

procedure TForm1.Memo1KeyDown (Sender: TObject; var Key: Word;
    Shift: TShiftState);
begin
   if (Key = VK_INSERT) and (Shift = []) then
   InsertOn := not InsertOn;
end;

procedure TForm1.Memo1KeyPress (Sender: TObject; var Key: Char);
begin
   if ((Memo1.SelLength = 0) and (not InsertOn)) then
                                                Memo1.SelLength := 1;
end;

Pratite Krstaricu na www.krstarica.com