@OmarEspinoza90
Actually, the EditForm would be the normal way. What you are doing is breaking out all the interface parts to custom user elements.
My recommendation would be that you use the EditForm to be able to submit the data on the Finalizar button.
Here is how to go about it...
1) Create a new screen in your app. This screen does not ever need to be visible to the user.
2) Insert an EditForm (let's call it frmData) on that screen and connect it to your datasource. Set the DefaultMode to New
3) Unlock the datacards in the form and change the input controls to reference your custom controls in the rest of the app. Example, if you have a TextInput control in the datacard for Ingrediente Activo then change the Default property on that control to : theTextInputControlOnFirstScreen.Text
Repeat this for all the rest of the controls where you are changing the Default properties of all the controls in the form from Parent.Default to the name of the control in your app for that field.
Finally, on the Finalizar button OnSelect - use the following function SubmitForm(frmData)
You have not mentioned that this app will allow editing of existing records, so I am assuming this is an enter-and-go type app that does not allow editing. If so, then also add this formula to the OnSuccess action of frmData : NewForm(frmData)
This will give you the robust features of the EditForm while allowing you to separate the interface from the Form (i.e. custom controls that you have).
I hope this is helpful for you.