|
|
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Form2 вызывается из MainMenu или из формы Form1(button.click). В зависимости от того кто его вызывал в Form2.show надо установить label1.visible в false/true. Как узнать Form2 вызвана из другой формы или из MainMenu? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 21:16 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubu, В Windows : Handle - наше всё! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 22:01 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Заведи ей метод MyShow куда и передавай любой флаг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 22:02 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
А я как не старался-sender, parent, owner- но никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 22:42 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubuВ зависимости от того кто его вызывал в Form2.show надо установить label1.visible в false/true. Как узнать Form2 вызвана из другой формы или из MainMenu?Не совсем правильный вопрос. Для управления Form2.Label1 можно поступить так: 1. Form2.Label1.Visible := false/treu Form2.Show; 2. Если нужно выполнять еще какие-либо действия кроме управления label1.visible, то добавить метод в раздел public TForm2, и вызвать его перед Form2.Show 3. Перкрыть метод TForm2.Show, объявив его с параметром 4. Послать своё сообщение окну Form2 (PostMessage(Form2.Handle, WM_USER + N, 0, 0) и так далее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 13:06 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
FreedoomНе совсем правильный вопрос. Freedoom , пока реализовал вот так: Если форма создаётся из Mainmenu тогда в OnCreate Form2.Tag:=-1; Если форма создаётся из Form1 тогда в OnCreate Form2.Tag:=1; а в Show: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. а при закритыи Form.Tag:=0; Вы можете на примере показать что имеете ввиду?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 20:35 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubuForm2 вызывается ... Как узнать Form2 вызвана ... Что значит "вызывается/вызвана"? Show? Модальный Show? А кто форму её создаёт? VCL автоматически при инициализации или вы вручную динамически? Ну на крайний случай можно руками перед вашим Show поменять как надо: Код: pascal 1. Но лучше да, предусмотреть спец-метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 21:52 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubuВы можете на примере показать что имеете ввиду?!Да, без проблем. Только ваш код создания и показа формы (Form2) в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 22:03 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Вариант №1: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вариант №2: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2018, 22:17 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
FreedoombastibubuВы можете на примере показать что имеете ввиду?!Да, без проблем. Только ваш код создания и показа формы (Form2) в студию Freedoom , все формы немодальные, создаются автоматически при инициализации. Код: pascal 1. 2. при клике на кнопке button1 формы Form1 или из главного меню программы создаётся Form2: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 00:59 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
И жили они счастливо, пока у приложения не заканчивалась оперативная память... потом все умирали.bastibubuFreedoomпропущено... Да, без проблем. Только ваш код создания и показа формы (Form2) в студию Freedoom , все формы немодальные, создаются автоматически при инициализации. Код: pascal 1. 2. при клике на кнопке button1 формы Form1 или из главного меню программы создаётся Form2: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 01:16 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
чччДИ жили они счастливо, пока у приложения не заканчивалась оперативная память... потом все умирали.Вместо сарказма, можно было и подсказать.bastibubuпри клике на кнопке button1 формы Form1 или из главного меню программы создаётся Form2 На мой взгляд логичнее оформить по варианту 2 через procedure ShowModalMode(ShowMode: Form2_ShowMode); Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Какой где параметр ShowMode, подправьте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 01:57 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Каша. Чтоб дать конкретные рекомендации надо хорошо понимать задачу. А если вкратце: Либо глобальная переменная Form2 и однократный вызов Application.CreateForm(TForm2, Form2) внутри файла Project. Либо удаляете и то и то и делаете динамическое создание Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 03:15 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
LoneFastКаша. Чтоб дать конкретные рекомендации надо хорошо понимать задачу. LoneFast , смотрите: Допустим есть Form1, который создаёт Form2, а Form2 вызывает Form3. На Form1 есть датасет(Query, clientdataset) и Form3 использует её для параметра своего запроса или для присвоения значения переменным или свойствам свойх компонентов. Если напишу Код: pascal 1. присвоение правильно происходит,но Form2 ещё можно вызывать и из главного меню , потом Form2 создаёт Form3, т.е. Form1 не существует. Поэтому тот-же оператор Код: pascal 1. даст access violation. Вот и хочу различить эти 2 ситуации: Код: pascal 1. 2. Например, если Form2 создаётся из главного меню тогда чтобы по кнопке на Form3 не смог кликнуть (Enabled:=false). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 04:43 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
когда Form2 уже создана(из маинменю или Form1) и хочу создать Form3 в этот момент откуда мне знать как из двух вариантов создалось Form2 чтобы в зависимости от этого енеиблить или дизеиблить компоненты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 04:50 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubuВот и хочу различить эти 2 ситуации: Form1-->Form2-->Form3 MainMenuItem-->Form2-->Form3Вот с этого и надо было начинать. Обычно в таких случаях создают отдельный модуль (TDataSet) и на нём распологают компоненты достпуа к данным. В нём же можно описать переменную, используемую как признак доступности элементов для других форм. LoneFastКаша Каждый художник волен рисовать картину так, как ему привычней/удобней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 11:57 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Что значит "Form1 не существует"? Куда и почему оно вдруг сгинуло? И где MainMenu тогда? Так вам не нужно знать что как создавалось, вам нужно продумать доступ к Query в любой из ситуаций. Например как сказали выше - сделать отдельный DataSet-модуль. Ну или вполне можно передавать при создании Форм ссылку на Query. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 15:58 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
LoneFastЧто значит "Form1 не существует"? Куда и почему оно вдруг сгинуло? И где MainMenu тогда? LoneFast , Или существует Form1 который вызывает Form2 или не существует, не создана и Form2 создаётся из главного меню главной формы. LoneFastТак вам не нужно знать что как создавалось, вам нужно продумать доступ к Query в любой из ситуаций . Доступ к Query мне нужно только тогда когда родителем формы Form2 является Form1 , а когда Form2 создаётся из главного меню главной формы тогда доступ к Query мне не нужно или нужни абсолютно другие деиствия. Поэтому и хочу различать как была создана форма Form2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 17:15 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubuКак узнать Form2 вызвана из другой формы или из MainMenu? Такая постановка вопроса нарушает принцип модульности. Это неверный дизайн и раскладывание грабель. В зависимости от конкретной ситуации нужно выбрать более удачный способ стоящей задачи; для общего случая можно сказать, что в форме можно завести параметр, в зависимости от значения которого и предпринимать необходимые действия. FreedoomДля управления Form2.Label1 можно поступить так: 1. Form2.Label1.Visible := false/treu Form2.Show; За подобный подход к кодированию - залезание грязными лапами во внутренности чужой формы - программисту следует отрывать руки и заставлять съесть их невымытыми. Не стоит такого советовать. bastibubuкогда Form2 уже создана(из маинменю или Form1) и хочу создать Form3 в этот момент откуда мне знать как из двух вариантов создалось Form2 чтобы в зависимости от этого енеиблить или дизеиблить компоненты? Лучшее, что Вы можете сделать - вообще убрать необходимость в таких манипуляциях. Делается это так: Делаете базовый класс TForm2, в котором реализуете всё то, что хотите от Form2 в обоих режимах Наследуете от него класс TForm2_1, в котором реализуете всё то, что хотите от Form2 в первом режиме Наследуете от TForm2 класс TForm2_2, в котором реализуете всё то, что хотите от Form2 во втором режиме Создаёте по экземпляру TForm2_1 и TForm2_2, вызываете из одного обработчика один, из другого - другой, и радуетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 18:38 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
softwarer... Делаете базовый класс TForm2, в котором реализуете всё то, что хотите от Form2 в обоих режимах Наследуете от него класс TForm2_1, в котором реализуете всё то, что хотите от Form2 в первом режиме Наследуете от TForm2 класс TForm2_2, в котором реализуете всё то, что хотите от Form2 во втором режиме Создаёте по экземпляру TForm2_1 и TForm2_2, вызываете из одного обработчика один, из другого - другой, и радуетесь. ...и для каждого чиха своего наследника. Также для всех сочетаний из чихов. А то и из всех перестановок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 00:32 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
чччД...и для каждого чиха своего наследника. Также для всех сочетаний из чихов. А то и из всех перестановок. Для правильного дизайна сочетаний и перестановок полезно освоить фреймы. Но перед этим стоит внимательно присмотреться к постановке задачи, поскольку с вероятностью 99.9% эта супернастраиваемая форма - невменяемый бред "типа архитектора" и подлежит утилизации посредством шредера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 00:38 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
Первое, я присоединяюсь к коллегам по поводу "неправильные архитектура/принцип/дизайн" и прочее. bastibubu... Доступ к Query мне нужно только тогда когда родителем формы Form2 является Form1 , а когда ... Второе, я сдаюсь в попытках подсказать "как надо"... Так сильно хотите "как не надо"? Окей: вам надо использовать Owner. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. При создании TForm2 передавайте Self, а при создании TForm3 передавайте Owner. А для создания форм Application вообще не к месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 02:34 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
LoneFast, ругается Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 05:28 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
bastibubu, Чем дальше в лес, тем толще партизаны :) Судя по поставленной задаче: зачем узнавать когда можно тупо сообщить об этом второй форме. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 09:43 |
|
||
|
Как узнать форма вызвана из другой формы или из MainMenu?
|
|||
|---|---|---|---|
|
#18+
В описанном ТС сценарии грабли - везде. Уже при автосоздании глобальных переменных для форм. Так что я присоединюсь к Softwarer. Модульность архитектуры придумана теми, кто вышеописанный путь уже прошел ) Если ваша форма может иметь разные режимы работы, вы должны явно описать метод "вызвать_в_режиме(X)" и использовать его в нужных местах. Если form1.query должен использоваться в form2, то вызов должен быть точно модальным form2.showmodal Отгадайте что будет, если ваша form1 уже будет уничтожена, а вторая полезет в query ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39609863&tid=2041167]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 520ms |

| 0 / 0 |
