|
Тема |
Re: Ima li garancia? [re: UnUn] |
|
Автор | unknown (Нерегистриран) | |
Публикувано | 27.03.06 03:20 |
|
|
По принцип нещата не се правят така, но щом казваш, че преправяш стара програма давам ти следния съвет:
Наследи ТForm и си препиши (override) метода SetEnabled и ShowModal.
Направи си един глобален TList в който:
При ShowModal ще добавяш (отделно от листа който си прави по принцип ShowModal) всяка останала (или може би всяка visible, не знам, зависи) форма освен формата (self) която става модална. В SetEnabled ще проверяваш дали текущата форма (пак self) не е в този списък и ако е няма да я правиш нито Enabled нито Disabled. След като ShowModal завърши ще махнеш формите от списъка.
Тука пак рискуваш много неща, като например:
Както казваш има асинхронни процеси който понякога трябва да забранят достъпа до главната форма. Може да се получи следния неприятен (д)ефект:
Показва се някакъв модален диалог.
Докато си в диалога асинхронно нещо се опитва да забрани главната форма и не успява.
Затваряш диалога.
Другия процес все още е в ход и не е сетнал Enabled:=True на главната форма, но тя вече е активна....
всичко това трябва да ти говори за кофти дизайн на цялата система, но щом се налага...
|
| |
|
|
|