Cita:
Empezado por fedelphi
como hago para pasarle una referencia del formulario que llama al formulario modal?
|
La pregunta más bien es: ¿para qué quieres eso?
Según alcanzo a ver de tu código, el formulario modal está para preguntar al usuario un dato que requiere el otro formulario, y ese dato intentas asignarlo directamente desde el modal, pero esa no es tarea de éste formulario.
Piénsalo así: en general, un formulario modal se usa para preguntar valores, pero qué se hace con esos valores es responsabilidad de quien llama al formulario.
Por ejemplo, un cuadro de diálogo como OpenFileDialog tiene como finalidad preguntar al usuario por un nombre de archivo. El cuadro jamás va a colocar el nombre seleccionado en ninguna parte ajena a él, únicamente "devolverá" el archivo seleccionado en su propiedad FileName.
En tu caso yo haría algo similar. Al formulario modal le anexas una propiead al caso:
Código Delphi
[-]
type
TFAdvierteBorraCirculante = class(TForm)
...
private
FCantidad: Integer;
public
property Cantidad: Integer read FCantidad write FCantidad;
end;
En el evento OnCloseQuery de este formulario verificas si el usuario oprimió OK. De se asi, asignas el dato en ECantidad.Text a FCantidad:
Código Delphi
[-]
FCantidad := StrToInt(ECantidad.Text);
El otro formulario abriría el modal así:
Código Delphi
[-]
procedure TFConsultaCirc.BEliminarClick(Sender: TObject);
var
adv: TFAdvierteBorraCirculante;
begin
adv := TFAdvierteBorraCirculante.create(self);
try
if adv.showmodal=mrYES then
begin
env_devs := adv.Cantidad;
end;
finally
adv.Free;
end;
end;
Observa el uso del try-finally para destruir al formulario modal. No dejes que éste se "autodestruya" poniendo Action := caFree en el evento OnClose. Lo necesitas "vivo" para cuando se cierre y tomes el vaor de su propiedad Cantidad.
// Saludos