No he entendido bien tu pregunta, pero creo que lo que puede estar pasando es que no se espera suficiente tiempo para que el puerto COM responda.
Tu le envías un caracter 'P'. Luego tienes que darle unos momentos para que la báscula reciba la petición, genere la respuesta, te la envíe y luego tu la recibas.
En este caso, yo probaría poniendo una pausa entre el envio de 'P' y la recepción;
Código Delphi
[-]
procedure TFMov.CoolBtn_PesoClick(Sender: TObject);
Var
I, G, L,iRenglonTerminal : Integer;
sValRen, sCaracter, sPeso : String;
BucleEspera : Integer;
begin
...
ApdComport1.Output := 'P';
I:=sGridMovtos.RowCount-1;
iRenglonTerminal := 1;
sValRen := AdTerminal1.Line[iRenglonTerminal];
for BucleEspera := 1 to 10 do
Application.ProcessMessages;
CoolLabel20.Caption := Trim(AdTerminal1.Line[0]);
Application.ProcessMessages;
If CoolLabel20.Caption <> '' Then
...
Prueba con diferentes valores en el bucle de espera...