Exista mai multe variante, eu iti dau doua dintre ele. In ambele variante, memo-urile sunt create la design-time. Daca vrei sa le creezi la runtime, folosesti ce ti-a scris AdyX mai sus...
In exemplul meu am folosit 2 memo-uri. Tu poti sa pui cate vrei. Ideea e ca daca vrei sa folosesti varianta fara array-uri, trebuie doar sa asignezi procedura DoOnMemoChange event-urilor de OnChange ale fiecarui memo.
Daca vrei sa folosesti varianta cu array, nu mai trebuie sa faci nimic... Pune cate memo-uri vrei pe form.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
procedure DoOnMemoChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MemoArray : array of TMemo;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DoOnMemoChange(Sender: TObject);
begin
if (Sender is TMemo) then
ShowMessage((Sender as TMemo).Name + ' changed');
end;
procedure TForm1.FormCreate(Sender: TObject);
var iCounter : integer;
lMemoCount : integer;
begin
{Fara array}
Memo1.OnChange := DoOnMemoChange;
Memo2.OnChange := DoOnMemoChange;
Memo3.OnChange := DoOnMemoChange;
{Cu array}
lMemoCount := 0;
for iCounter := 0 to Self.ComponentCount - 1 do
if (Self.Components[iCounter] is TMemo) then
begin
(Self.Components[iCounter] as TMemo).OnChange := DoOnMemoChange;
Inc(lMemoCount);
SetLength(MemoArray, lMemoCount);
MemoArray[lMemoCount-1] := TMemo(Self.Components[iCounter]);
end;
end;
end.