Sto costruendo un'applicazione utilizzando Delphi 7. Ho aggiunto un pulsante nel modulo principale. Su quel pulsante clic voglio mostrare un altro modulo. Sto cercando di creare un secondo modulo solo se l'utente ha fatto clic su quel pulsante per la prima volta. Se l'utente fa clic su questo pulsante una seconda volta, dovrebbe essere visualizzato il modulo già creato. Un oggetto Form ha proprietà attraverso le quali possiamo controllare direttamente se è già stato creato o no?controllare se l'oggetto è stato creato o non in delphi
5
A
risposta
10
if Assigned(Form1) then
begin
//form is created
end;
Ma se il modulo è dichiarato localmente
globalmente
è necessario assicurarsi che sia inizializzato a nil
.
4
È necessario un campo membro per contenere il riferimento al modulo. Quindi verificare se tale riferimento è stato assegnato. In questo modo:
function TMainForm.GetOtherForm: TMyForm;
begin
if not Assigned(FOtherForm) then
FOtherForm := TMyForm.Create(Self);
Result := FOtherForm;
end;
2
Assegnato (Obj) può ancora restituire True anche dopo averlo liberato, utilizzando "Obj.free". Il modo migliore per assicurare il tuo obj è gratuito, PER UTILIZZARE Assigned (obj) utilizza "FreeAndNil (Obj)"
0
A volte la forma è stata gratuita ma non è nulla. In tal caso il controllo di Assegnato non è così buono. Quindi un'opzione è per liberare il modulo e impostare MyForm: = nil sul modulo OnClose. un'altra opzione è quella di utilizzare il seguente 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;
Problemi correlati
- 1. Controllare se la barra di stato è nascosta o visibile
- 2. Controllare se è stato definito un simbolo
- 3. Controllare se è stato chiamato clearInterval?
- 4. Come verificare se USER è già stato creato nel database o no in SQL?
- 5. SDL2 - Verifica se il contesto OpenGL è stato creato
- 6. Controllare se Element ha figli o non
- 7. Quando è stato creato Batch?
- 8. Verifica se un modello è stato modificato o creato su evento before_save
- 9. Controllare se è stato premuto il tasto Indietro in Android?
- 10. Come è stato creato Google.com?
- 11. In cosa è stato creato Blender?
- 12. Per controllare se la sessione è disponibile o non
- 13. Controllare se una stringa è doppia o non
- 14. aperto con O_CREAT - è stato aperto o creato?
- 15. Come verificare se un file è stato creato da pickle?
- 16. Neo4j merge return qualcosa solo se è stato creato
- 17. È possibile controllare se una notifica è visibile o cancellata?
- 18. controllare se NSNumber è vuoto
- 19. Come controllare se una stringa contiene una sottostringa in Delphi
- 20. Controllare se il comando è stato eseguito correttamente
- 21. Controllare se un file che è stato aperto con fopen è stato chiuso
- 22. Controllare se un metodo di classe è stato chiamato
- 23. Controllare se il componente è stato risolto nell'ultimo ciclo LifetimeScope
- 24. Controllare se a qualsiasi proprietà è stato assegnato un valore
- 25. Come verificare se un assembly è stato creato utilizzando la configurazione di debug o release?
- 26. UI Router - Controllare se uno stato esiste
- 27. Come controllare lo stato di Resque worker per determinare se è morto o stantio
- 28. VB6 è stato creato su .NET WinForm?
- 29. Verificare se lo spegnimento è stato avviato o meno
- 30. JUnit test case per verificare se il file è stato creato
(. Ho appena cancellare il mio stessa risposta) ma hanno bisogno di aggiungere che essere sicuri di reimpostare la variabile di nuovo a zero a distruggere il TOtherForm, come mettere TOtherForm: = nil su Ontherist di TOtherForm. –
@Hasan Se l'altro modulo viene mai cancellato. La mia impressione è che deve essere una forma che vive per sempre, una volta creata. –
esattamente, ma solo per la tranquillità, per anticipare lo scenario in cui il modulo è disposto (esplicitamente o per qualsiasi ragione) in futuro - quindi non introdurrà 'nuovi bug'. –