Estoy compilando una aplicación usando Delphi 7. He agregado un botón en el formulario principal. En ese botón, haga clic en Deseo mostrar otro formulario. Intento crear una segunda forma solo si el usuario ha hecho clic en ese botón por primera vez. Si el usuario hace clic en ese botón por segunda vez, se debe mostrar el formulario ya creado. ¿Tiene un objeto Formulario alguna propiedad a través de la cual podamos verificar directamente si ya está creado o no?compruebe si el objeto se crea o no en delphi
5
A
Respuesta
10
if Assigned(Form1) then
begin
//form is created
end;
Pero si su forma es declarado localmente a nivel mundial
debe asegurarse de que se inicializa a nil
.
4
Necesita un campo de miembro para mantener la referencia al formulario. Luego verifique si esa referencia está asignada. De esta manera:
function TMainForm.GetOtherForm: TMyForm;
begin
if not Assigned(FOtherForm) then
FOtherForm := TMyForm.Create(Self);
Result := FOtherForm;
end;
2
Asignada (Obj) aún puede devolver True incluso después de liberarla, usando "Obj.free". La mejor manera de asegurar su obj es gratis, PARA USAR Asignado (obj) está usando "FreeAndNil (Obj)"
0
Algunas veces la forma ha sido gratuita pero no es nula. En tal caso, la verificación de Asignado no es tan buena. Así que una opción es liberar el formulario y establecer MyForm: = nil en el formulario OnClose. otra opción es utilizar la siguiente proc:
function TMyForm.IsFormCreated: bool;
var i: Integer;
begin
Result := False;
for i := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[i] is TMyForm then
begin
Result := True;
Break;
end;
end;
end;
Cuestiones relacionadas
- 1. Delphi: compruebe si la memoria se está liberando "a tiempo"
- 2. Hibernar: compruebe si existe el objeto
- 3. NSMutableArray compruebe si el objeto ya existe
- 4. Delphi: compruebe si el archivo está en uso
- 5. Compruebe si se inicia o no un apagado
- 6. Mangosta: compruebe si el objeto es un objeto de mangosta
- 7. Compruebe si el carácter es una letra en Delphi (Unicode)
- 8. Compruebe si existe un objeto en VBScript
- 9. Django señal pre_save: compruebe si la instancia se crea no actualizada, ¿kwargs ['created'] (still) existe?
- 10. Compruebe si el polígono se autointercala
- 11. Compruebe si el socket está conectado o no
- 12. Compruebe si un objeto es un NSArray o NSDictionary
- 13. Compruebe si se define un objeto, mejor práctica.
- 14. compruebe si el objeto existe en Cloud Files (PHP API)
- 15. compruebe si un objeto es nulo
- 16. Compruebe si el objeto está en una lista de objetos
- 17. Compruebe si un objeto es un delegado
- 18. SqlAlchemy: crea un objeto si no existe ya?
- 19. Compruebe si se admite el elemento html
- 20. jQuery: compruebe si un objeto tiene clase
- 21. Compruebe si el objeto Ruby es un booleano
- 22. Compruebe si existe una inclusión (o requiere)
- 23. ¿Cómo saber si un objeto se libera automáticamente o no?
- 24. VBA con Microsoft Access - Compruebe si existe el objeto
- 25. Compruebe si una ventana es emergente o no?
- 26. Python: compruebe si un archivo está vacío o no
- 27. Compruebe si la casilla está marcada o no - ASP.NET
- 28. Compruebe si la ventana primaria es iframe o no
- 29. donde se define o crea el objeto "ventana" en el código fuente de firefox
- 30. compruebe si un dominio está disponible o no usando PHP?
(. Acabo de borrar mi misma respuesta) pero tienen que añadir que asegúrese de restablecer la variable de vuelta a cero tras la destrucción de la TOtherForm, como poner TOtherForm: = nil en TOsterForm's OnDestroy. –
@Hasan Si el otro formulario alguna vez se elimina. Mi impresión fue que debe ser una forma que perdure para siempre, una vez que se haya creado. –
exactamente, pero solo por tranquilidad, para anticipar un escenario donde el formulario está dispuesto (explícitamente o por cualquier razón) en el futuro, por lo que no introducirá 'nuevos errores'. –