![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() необходимо передавать значение переменной из формы в форму, причем в каждой форме значение может меняться.
|
#2
|
||||
|
||||
![]() Варианта 2:
1. Объявление переменной в описании класса. 2. Использовать модуль где будут объявлены глобальные переменные. Хорошо написанная программа не требует документации ICQ 9-184-668. |
#3
|
|||
|
|||
![]() я пробовал через такой модуль но при каждом вызове переменная инициализируется. как сделать чтобы такого не было ?
можно пример кода ? |
#4
|
|||
|
|||
![]() Тоже интересует этот вопрос... Желательно пример кода =) Помогите срочно нудно, пишу курсач
|
#5
|
|||
|
|||
![]() Если объявлять переменную в описании класса, то при создании экземпляра класса такая переменная обязательно инициализируется и для выше приведенных целей не годится.
В общем виде надо делать по Thrasher, п. 2. В отдельном модуле объявляется переменная, значение которой из формы 1 будет изменяться, а отображаться в форме 2. Если кто-то думает, что все это просто, то сильно заблуждается. Реализация зависит от конкретных задач. - нужно ли чтобы при изменении значения нашей переменной в ф.1 тут же отображалось и в ф.2 (или не сразу и по каким-то условиям); - нужно ли чтобы изменения значения этой переменной в ф.2 отображалось в ф.1 (или только односторонняя связь - от ф.1 к ф.2, т.е. если изменили значение в ф.1, то в ф.2 отображалось изменение, а если изменили эту переменную в ф.2, то ф.1 оставалась в неведении относительно изменений); Ну, право, хлопцы, давайте же конкретные условия и все будет хорошо. Да, еще. Создается ли ф.2 каждый раз при ее вызове из ф.1 или она при запуске приложения создается один раз. Это тоже немаловажно. Последний раз редактировалось san-46, 18.05.2008 в 19:16. |
#6
|
|||
|
|||
![]() Нужно прочесть заначение переменной из ф1, когда запущена форма ф2.
|
#7
|
|||
|
|||
![]() Маленький пример прилагается.
А вообще вот вам шуточный стишек из раздела "вредные советы". Переменные глобально Ты используй неприменно Раз напишешь и используй Где захочешь их потом. Только тот кто не умеет Мыслить смело и глобально Пишет множество локальный, Не понять им гений твой. По возможности нужно продумывать программу, чтобы избежать использование глобальных переменных. |
#8
|
|||
|
|||
![]() Цитата:
В первом случае считывать значение переменной нужно в событии формы OnCreate. Во втором, в событии формы OnShow. |
#9
|
|||
|
|||
![]() Цитата:
|
#10
|
|||
|
|||
![]() Цитата:
![]() |
#11
|
|||
|
|||
![]() Ну что ж, пасую, брат. Тебе и карты в руки.
|
#12
|
|||
|
|||
![]() вопрос был из области написания простенького теста - т.е. надо было в каждой форме увеличивать счетчик если ответ правильный.
спасибо за пример - очень помог. если еще что-нибудь посоветуете, более правильное с точки зрения ООП - буду только рад :-) Последний раз редактировалось VilR, 19.05.2008 в 08:21. |
#13
|
|||
|
|||
![]() Более правильно передавать сообщение.
Объявляется константа, определяющая ваше собственное сообщение, которую необходимо разместить в каком-нибудь общедоступном модуле, чтобы она была доступна для модулей, где предполагается ее использовать: WM_TESTVALUECHANGE = WM_USER+1; (принято начинать с WM_, далее свое наименование; все сообщения до WM_USER зарезервированы Windows). После изменения значения в форме 1 посылаете сообщение второй форме: SendMessage(Form2.Handle, WM_TESTVALUECHANGE, 0, T); где "Т" - передаваемое значение. Во второй форме надо объявить это сообщение и сделать его реализацию. Код:
Form2 = class(TForm) ... procedure TestValueChange(var Message : TMessage); message WM_TESTVALUECHANGE; ... end; implementation ... procedure TestValueChange(var Message : TMessage); begin T := Message.LParam; //где "Т" - переменная в этом классе и которая будет отображаться //в форме 2 end; Последний раз редактировалось san-46, 19.05.2008 в 09:40. |
#14
|
|||
|
|||
![]() Цитата:
![]() |
#15
|
|||
|
|||
![]() мне надо чтобы в 1-й форме значение переменной передавалось в другую каждую секунду я это смог сделать в примере Global но не могу у себя т.к. оно или не передаёться или постоянно возвращает значение
вот текст 1-я: procedure Tcarnage1.hpmptTimer(Sender: TObject); begin heal:=100; if i<50 then begin i:=i+50; hpmpt.interval := i; end else i:= i-50; globheal:= heal; 2-я: procedure Tcarnage1.FormCreate(Sender: TObject); begin heal:=globheal; end; procedure Tcarnage1.hpmptTimer(Sender: TObject); if i<50 then begin i:=i+50; hpmpt.interval := i; end else i:= i-50; globheal:= heal; |