Ну нет ничего проще, чем заглянуть в папку .\vcl\source\ и хорошенько там покопаться. Итогом может стать например это:
Код:

function GetLine(hwnd: Cardinal; Index: Integer): String;
// Получает строку под номером Index из контрола с Handle = hwnd
var
Text: array[0..4095] of Char;
begin
Word((@Text)^) := SizeOf(Text);
SetString(Result, Text, SendMessage(hwnd, EM_GETLINE, Index, Longint(@Text)));
end;
procedure ReplaceLine(hwnd: Cardinal; Index: Integer; const S: String);
// Заменяет строку под номером Index в контроле hwnd на строку S
var
SelStart: Integer;
begin
SelStart := SendMessage(hwnd, EM_LINEINDEX, Index, 0);
if SelStart >= 0 then begin
SendMessage(hwnd, EM_SETSEL, SelStart, SelStart + SendMessage(hwnd, EM_LINELENGTH, SelStart, 0));
SendMessage(hwnd, EM_REPLACESEL, 0, Longint(PChar(S)));
end;
end;
procedure AddToLine(hwnd: Cardinal; Index: Integer; what: String);
// Добавляет к строке под номером Index строку what
begin
ReplaceLine(hwnd, Index, GetLine(hwnd, Index) + what);
end;
>>Т.к. если послать сообщение классу STATIC...
Замечу, что TMemo относится к "классу" (точнее, типу) EDIT