Конкретно, проблемы с процедурой WndProc:

Код:
  
protected
    procedure WndProc(var Msg: TMessage); override;
end;

{ ----------------- }

procedure TfrmMain.WndProc(var Message: TMessage);
 var
 p: TENLink;
 strURL: string;
 begin
 if (Message.Msg = WM_NOTIFY) then
 begin
 if (PNMHDR(Message.LParam).code = EN_LINK) then
 begin
 p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
 if (p.msg = WM_LBUTTONDOWN) then
 begin
 SendMessage(rechat.Handle, EM_EXSETSEL, 0, LongInt(@(p.chrg)));
 strURL := RichEdit1.SelText;
 ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
 end
 end
 end;

 inherited;
 end; (* TForm1.WndProc *)

Выдает ошибку

Код:
[Error] mainform.pas(385): Overloaded procedure 'WndProc' must be marked with the 'overload' directive

и подсвечивает объявление функции.

Если поставить overload, то сыпет другой ошибкой

Код:
[Error] mainform.pas(385): Previous declaration of 'WndProc' was not marked with the 'overload' directive

. Че не так? За#бался уже...

Решение:

Код:
 protected
 procedure WndProc(var Msg: TMessage); override;

Сдесь ты override написал.

Код:
procedure TfrmMain.WndProc(var Message: TMessage);

А сдесь нет. Собственно об этом тебя и предупредил компилятор.