2011-02-01 17 views
6

Mam formularz o nazwie MyForm przechowywane w jednostce o nazwie Unit UnitMyFrom. Oczywiście Delphi automatycznie dodał ten kod:Czy można bezpiecznie usunąć zmienną formularza utworzoną przez IDE?

TYPE 
    TMyForm = class(TForm) 
    private 
    public 
end; 

var MyForm: TMyForm; 

, ale usunąłem deklarację var z tego urządzenia. Ktoś powiedział, że może to powodować problemy z IDE. Czy to prawda? Czy IDE wymaga tej zmiennej?


EDIT:

MyForm nie jest automatycznie utworzony. Użytkownik tworzy ten formularz w czasie wykonywania.

Odpowiedz

13

nie używam automatycznego tworzenia i nigdy nie używać zmiennych globalnych zawierające odnośniki formularza. Działa dobrze.

+0

Dzięki za potwierdzenie. Robię to samo. +1 – Ampere

+1

+1. Szkoda, że ​​nie było opcji, aby ** nie ** automatycznie dodawać nowe formularze do listy automatycznego tworzenia. Szkoda, że ​​nie było opcji ** nie ** stworzenia tego kłopotliwego "var". No cóż ... –

+0

@Cosmin Istnieje opcja. Nazywa się "Automatyczne tworzenie formularzy i modułów danych". To po prostu nie wydaje się mieć żadnego efektu !! Oczywiście nie robię tego dobrze, lub nie rozumiem dokumentacji. –

3

Powiedziałbym "tak", jeśli chcesz utworzyć formularz automatycznie, ponieważ musisz przekazać tę zmienną do metody TApplication.CreateForm.

+3

Lub bardziej precyzyjnie, to właśnie _IDE_ chce zrobić, gdy dodajesz formularz do automatycznie tworzonych formularzy. Jeśli chcesz zrobić to sam, możesz umieścić zmienną w dowolnym miejscu. Nie powinieneś przecież nadużywać autokorelacji. –

+0

zobacz moją edycję – Ampere

+0

Dzięki za potwierdzenie. +1 – Ampere

7

Usuń linię Application.CreateForm(TMyForm, MyForm); w pliku projektu .dpr i nie będziesz mieć żadnych problemów.

Jeśli nie tworzyć formularz automatycznie, to wont mieć żadnych problemów

+0

Proszę zobaczyć moją aktualizację. – Ampere

+1

@Altar: Wtedy nie będzie żadnych problemów – Bharat

+0

Dzięki za potwierdzenie. +1 – Ampere

3

Przejdź do opcji projektu i upewnij się, że formularz nie jest tworzony automatycznie. Następnie możesz bezpiecznie usunąć zmienną instancji formularza. (W przeciwnym razie po prostu pojawia się błąd kompilatora).

+0

Witam. Nie tworzę automatycznie tego formularza. +1 – Ampere

2

może chcesz utrzymać tę linię w klauzuli w DPR-pliku uses lub contains:

Unit1 in 'Unit1.pas' {Form1}; 

Jeśli (lub IDE) usuwa numer {Form1}, a następnie twój formularz nie pojawi się na liście Shift+F12 - tylko na liście Ctrl+F12.

+0

+1; Widziałem tak wiele projektów, które to zepsuły (ponieważ ludzie myślą, że są właścicielami.dpr; Ty nie: IDE jest właścicielem DPR, jesteś właścicielem jednostek. Ludzie trzymają wszystkie swoje specjalne kody i konwencje w "MainUnit"). –

+4

@Jeroen Cóż, nie zgadzam się. IDE go wkręca. Chcę warunkowe włączenie jednostek do mojego projektu (np. Przełączanie między różnymi menedżerami pamięci, obsługa różnych wersji Delphi). IDE to wkręca. Potrzebuję lepszej kontroli nad tworzeniem i niszczeniem formularzy, niż IDE uczynił dpr, a także musi obejść kilka błędów VCL związanych z tym. –

+0

Tak, nadal mam tę linię w pliku DPR. – Ampere

1

Usuwam je & pracowałem w ten sposób od dłuższego czasu (nie tworzę automatycznie ani nie używam zmiennej dla większości formularzy).

Powiązane problemy