Hola impadrón.
Aunque no tiene que ver con el error ,pero para no complicar tanto la sintáxis, probá el condicional de este modo:
Código:
if (DBEdit1->Text != "" && DBEdit2->Text != "" && DBEdit3->Text != ""
&& DBComboBox1->ItemIndex != -1){
DBEdit4->Field->AsFloat = DBEdit15->Field->AsFloat +
DBEdit16->Field->AsFloat +
DBEdit21->Field->AsFloat;
}
El error que te arroja es por que alguno de los DBEDits
no tiene un valor decimal válido.
En cuanto a tu segunda consulta como está relacionada con lo anterior, te sugiero que verifiques el contenido de los DBEdits.
Por ejemplo:
Código:
double d;
if(TryStrToFloat(DBEdit1->Text,d) == TRUE )
DBEdit1->Field->AsFloat = d;
else
ShowMessage("Error no es un número decimal");
....
Sobre tu tercer consulta, no tiene relación con lo anterior así que te ruego que hagas un nuevo hilo con ella. ("una pregunta un hilo")
Guía de estilo
Saludos.