Tienes que activar el evento OnKeyUp del Edit
y así quedaría la función:
void __fastcall XXXX::Edit1KeyUp(TObject *Sender, WORD &Key,TShiftState Shift)
{
     char Cadena[200];
    strcpy (Cadena,ZRes->Text.c_str());
   if (Key=='+' || Key=='-'){
        if (strlen (Cadena)>0)
           Key=0; // solo deja los signos al principio
           else return;
    }else if (Key!='.' && Key!=','){ // admite el punto y la coma como comienzo del decimal
           char *p;
          p=strchr(Cadena,','); // busca una coma en el escrito
         Key=(p)?(char)0:','; // si hay una coma no admite otra
    }else{
       if (Key<'0' || Key>'9') // solo admite caracteres numericos
                 Key=0;
      }
}
Intentala y lo verás más claro