Hola Fidel.
No veo nada malo en tu codigo...
Ciertamente no tengo el componente
TnrComm ni conozco el funcionamiento, pero para salir de toda duda hice una prueba con un control estándar (
TEdit) siguiendo la lógica del código y funciona sin errores.
DataModule:
Código Delphi
[-]
uses
SysUtils, Classes, StdCtrls, Graphics;
type
TdmNrComm = class(TDataModule)
procedure DataModuleCreate(Sender: TObject);
private
procedure EditKeyPress(Sender: TObject; var Key: Char);
public
end;
var
dmNrComm: TdmNrComm;
ComPort: TEdit;
....
procedure TdmNrComm.DataModuleCreate(Sender: TObject);
begin
Randomize;
ComPort:= TEdit.Create(Self);
ComPort.Left:= 10;
ComPort.Top := 10;
ComPort.Width:= 300;
ComPort.Color:= clYellow;
ComPort.OnKeyPress:= EditKeyPress;
ComPort.Visible:= True;
end;
procedure TdmNrComm.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Key <> #8 then
Key:= UpCase(Char(Random(222)+33));
end;
Unit1:
Código Delphi
[-]
...
implementation
uses UdmNrComm;
procedure TForm1.FormCreate(Sender: TObject);
begin
ComPort.Parent:= Self;
end;
La instancia de
TdmNrComm está creada antes que la de
TForm1.
Lo único que creo que podría estar provocando el error es el método
Active en la línea
haciendo alguna actividad no tolerada desde un
TDataModule... ¿ Intentaste ejecutarlo con esa línea comentada ?
Saludos