Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
как сделать messagebox с вариантами действий "Да" и "Нет". чтобы при нажатии изменения сохранялись, а при нажатии нет не сохранялись?
22 сен 12, 14:24    [13206348]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Кристинка89,

+Help MESSAGEBOX
MESSAGEBOX(cMessageText [, nDialogBoxType [, cTitleBarText]])

Параметры

cMessageText

Задает текст, который должен появляться в диалоговом окне. Для переноса части сообщения на новую строку используйте в тексте cMessageText возврат каретки (CHR(13)). Высота и ширина диалогового окна будут соответствующим образом отрегулированы, чтобы вместить весь текст cMessageText.

nDialogBoxType

Определяет кнопки и значки диалогового окна, кнопку по умолчанию при появлении диалогового окна и поведение диалогового окна.
В приведенных ниже таблицах значения от 0 до 5 задают кнопки, отображаемые в диалоговом окне, а значения 16, 32, 48 и 64 ѕ значки диалогового окна. Значения 0, 256 и 512 определяют, какая кнопка в диалоговом окне используется по умолчанию, то есть изображается нажимаемой в открывающемся диалоговом окне.
Если аргумент nDialogBoxType опущен, это эквивалентно заданию значения 0.

Значение Кнопка диалогового окна
0 Только кнопка OK.
1 Кнопки OK и Cancel.
2 Кнопки Abort, Retry и Ignore.
3 Кнопки Yes, No и Cancel.
4 Кнопки Yes и No.
5 Кнопки Retry и Cancel.
Значение Значок
16 Знак останова.
32 Вопросительный знак.
48 Восклицательный знак.
64 Значок информации (i).
Значение Кнопка, принимаемая по умолчанию
0 Первая кнопка.
256 Вторая кнопка.
512 Третья кнопка.
Аргумент nDialogBoxType может представлять собой сумму трех значений ѕ по одному из каждой таблицы. Например, если nDialogBoxType равняется 290 (2+32+256), он задает диалоговое окно со следующими характеристиками:

· Кнопки Abort, Retry и Ignore.
· В качестве значка в окне сообщения используется вопросительный знак.
· Вторая кнопка, Retry, используется по умолчанию.

cTitleBarText

Задает текст для строки заголовка диалогового окна. Если аргумент cTitleBarText опущен, в строке заголовка будет стоять текст "Microsoft Visual FoxPro".

Результат

Числовой

Комментарии

Значение, возвращаемое функцией MESSAGEBOX( ), указывает, какая кнопка была выбрана в диалоговом окне. Если в диалоговом окне с кнопкой Cancel для выхода из него нажимается клавиша ESC, то возвращается то же значение (2), что и при нажатии кнопки Cancel.
Обратите внимание, что самая короткая аббревиатура данной функции ѕ MESSAGEB( ).
В следующей таблице перечислены значения, возвращаемые функцией MESSAGEBOX( ) для каждой кнопки.

Возвращаемое значение Кнопка
1 OK
2 Cancel
3 Abort
4 Retry
5 Ignore
6 Yes
7 No
22 сен 12, 14:33    [13206366]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
Jonny540, спасибо, а кнопки YES И NO русскими сделать нельзя?
22 сен 12, 14:49    [13206402]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
и как можно проверить есть ли в таблице например в поле field1 значение или нету? обычным селектом?
22 сен 12, 14:51    [13206410]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Кристинка89
Jonny540, спасибо, а кнопки YES И NO русскими сделать нельзя?

Если библиотеки русские, то и кнопки будут русские.
22 сен 12, 15:18    [13206475]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Кристинка89
и как можно проверить есть ли в таблице например в поле field1 значение или нету? обычным селектом?
см. ISBLANK(), _TALLY.
22 сен 12, 15:20    [13206476]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
Уважаемый Jonny540, я пишу такой код чтобы проверить значение поля, но пишет синтаксическая ошибка. смотрела пример использования, но не поняла как использовать данную функцию для своего случая. мне нужно сделать так: проверить пустое ли поле field1 в таблице polsovatel, если пустое то обновить таблицу, если не пустое поле field1 то выдать вопрос что поле содержат данные и потом обновить. пишу такой код:

автор
cMessageTitle = 'Ввод кода'
cMessageText = 'В поле "КОД" данного пациента уже введено значение другим регистратором, Вы уверены, что хотите изменить значение?'
nDialogType = 4 + 32 + 256
* 4 = Yes and No buttons
* 32 = Question mark icon
* 256 = Second button is default
MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)

IF ?ISBLANK(polsovatel.field1)
SELECT curs1
REPLACE field1 WITH kody.field1
UPDATE polsovatel SET polsovatel.field1=curs1.field1 from curs1 WHERE polsovatel.field2=curs1.field2
ELSE
IF ISBLANK(polsovatel.polsovatel)
SELECT curs1
REPLACE field1 WITH kody.field1
MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)
UPDATE polsovatel SET polsovatel.field1=curs1.field1 from curs1 WHERE polsovatel.field2=curs1.field2
ENDIF
ENDIF
22 сен 12, 15:36    [13206519]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
если не трудно напишите простой пример:
Если в таблице ТАБ поле ПОЛ пустое то действия ИНАЧЕ если ЕСЛИ в ТАБ поле ПОЛ=чему-то то выдать сообщение
22 сен 12, 15:38    [13206524]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
ВСЕ ПОЛУЧИЛОСЬ! СПАСИБО!
22 сен 12, 15:43    [13206539]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
Когда поле FIELD1 пустое оно тоже выдает оповещение. Напишите пожалуйста небольшой пример: Если в таблице ТАБ поле ПОЛ пустое то действия ИНАЧЕ если ЕСЛИ в ТАБ поле ПОЛ=чему-то то выдать сообщение
22 сен 12, 16:02    [13206583]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Это как понимать?
Кристинка89
IF ?ISBLANK(polsovatel.field1)
А это?
Кристинка89
ВСЕ ПОЛУЧИЛОСЬ! СПАСИБО!

Кристинка89
Когда поле FIELD1 пустое оно тоже выдает оповещение. Напишите пожалуйста небольшой пример: Если в таблице ТАБ поле ПОЛ пустое то действия ИНАЧЕ если ЕСЛИ в ТАБ поле ПОЛ=чему-то то выдать сообщение
Все уже написано:
Кристинка89
IF ISBLANK(ТАБ.ПОЛ)
* действия
ELSE
* сообщение
ENDIF
22 сен 12, 16:53    [13206669]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Jonny540
Member

Откуда:
Сообщений: 727
Кристинка89
MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)

А, вон в чем дело...
IF MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)=6 && YES (ДА)
ELSE
ENDIF
22 сен 12, 16:59    [13206685]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
Jonny540, что-то я не поняла вас. написала такой код: но не работает так как нужно. если поле smocod не пустое оно когда первый раз меняю значение не выдает сообщение, потом выдает, и второе, если поле пустое и заносится значение то тоже выдает оповещение хотя не должно

автор
IF ISBLANK(pacient.smocod)
SELECT curs1
REPLACE smocod WITH smo.smocod
UPDATE pacient SET pacient.smocod=curs1.smocod from curs1 WHERE pacient.polis=curs1.polis
thisform.grid1.refresh()
ELSE
IF MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)=6 && YES (ДА)
SELECT curs1
REPLACE smocod WITH smo.smocod
*MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)

UPDATE pacient SET pacient.smocod=curs1.smocod from curs1 WHERE pacient.polis=curs1.polis
thisform.grid1.refresh()
ENDIF
ENDIF
22 сен 12, 17:34    [13206777]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Кристинка89
Member

Откуда:
Сообщений: 37
Jonny540, написала код который приведу ниже. если поле пустое вроде работает как надо, а если в поле ранее были внесены изменения ну там есть значение, то выдается сообщение и когда нажимаю НЕТ все равно меняется значение в combobox. Как исправить это, чтобы если нажали НЕТ в combobox ничего не менялось. Если несложно подскажите где что нужно менять в моем коде

автор
IF EMPTY(ALLTRIM(curs1.smocod))
SELECT curs1
REPLACE smocod WITH smo.smocod
UPDATE pacient SET pacient.smocod=curs1.smocod from curs1 WHERE pacient.polis=curs1.polis
thisform.grid1.refresh()
ELSE
IF !EMPTY(ALLTRIM(curs1.smocod))
IF MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)=6 && YES (ДА)
SELECT curs1
REPLACE smocod WITH smo.smocod
UPDATE pacient SET pacient.smocod=curs1.smocod from curs1 WHERE pacient.polis=curs1.polis
thisform.grid1.refresh()
ELSE
MESSAGEBOX=2 && YES (ДА)
ENDIF
ENDIF
ENDIF
22 сен 12, 18:38    [13206980]     Ответить | Цитировать Сообщить модератору
 Re: Выдача вопроса  [new]
Станислав С...кий
Guest
Кристинка89,
Отладчиками (дебаггерами) Вас учили пользоваться? Запустите форму под отладчиком и смотрите почему Ваш код отрабатывает не так, как Вам нужно.... А дальше - решайте, что и как надо менять, чтобы все работало "как надо"...
24 сен 12, 11:13    [13211443]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить