Форум » GUI » Форма, BtnTextBox, TextBox и DatePicker » Ответить

Форма, BtnTextBox, TextBox и DatePicker

Vlad04: На форме есть объекты разные, речь идет о BtnTextBox, TextBox и DatePicker, т.е объектах , имеющих свойство Field. 1)Действительно, если это поле заполнить ссылкой на символьное поле, к примеру - dogovor->NR_DOG, то при открытии формы НОМЕР договора отображается. Если поле числовое, к примеру - dogovor->SUMM , то при попытке открыть форму программа вываливается. 2) При закрытии формы, внесенные изменения никак в базе не сохраняются. Commit не помогает. Или нужно Replace выполнять ? Форма строится в Дизайнере.

Ответов - 38, стр: 1 2 All

Haz: Vlad04 пишет: Commit не помогает. Commit тут не поможет , эти контролы не осуществляют прямое редактирование базы. Они всего лишь читают символьное поле в массив и дальше работа идет с массивом. Во всяком случае так Combo работает, думаю и другие контролы тоже так. Чтобы сохранить изменения в базе нужно это делать самостоятельно , читая значение из контрола и выполняя Replace Поправлюсь ! Выше это не списочные контролы , работают не с массивом а с простым значением которое читают из базы. Для TextBox это символьное, для DatePicker - Data В остальном все так ЗЫ TextBox понимает числа если ему указать что он NUMERIC

gfilatov2002: Vlad04 пишет: объектах , имеющих свойство Field. Рекомендую для начала изучить базовый пример в папке samples\Basic\DATA_BOUND Думаю, что после этого изучения, станет понятно, как работать с такими обьектами

Vlad04: gfilatov2002 Пример изучил. Построил аналогичный в IDE DATA_BOUND, IDE, сравнил. 1) Если поле NUMERIC, то в дизайнере DataType NUMERIC НЕ присваивается ! С Ошибкой вылетает


Vlad04: И ещё Win_1.Text_1.Save Win_1.Text_2.Save Win_1.Text_3.Save Win_1.Date_4.Save Win_1.Check_5.Save Win_1.Edit_6.Save Наверно, можно как-то в цикле сделать по объектам

Haz: Vlad04 пишет: 1) Если поле NUMERIC, то в дизайнере DataType NUMERIC НЕ присваивается ! С Ошибкой вылетает открыл в дизайнере пример TEXTBOX - все присваивается http://shot.qip.ru/00QkpQ-2Myy9DUE8/

Vlad04: И даже в том примере, что я выложил ? Присваивается.Но если форму сохранить , а потом снова открыть , то тип поля CHARACTER Компилируется, но при запуске вот такой лог Error BASE/1100 Argument error: TRIM</p><BR> Called from RTRIM(0) Called from _SETVALUE(399) Called from _DATATEXTBOXREFRESH(1069) Called from _REFRESH(5246) Called from _REFRESHDATACONTROLS(1466) Called from _ACTIVATEWINDOW(1381) Called from DOMETHOD(4654) Called from MAIN(9)

Haz: Vlad04 пишет: Наверно, можно как-то в цикле сделать по объектам Можно конечно, пару недель назад на форуме было "все контролы на форме" . только нужно быть уверенным что все контролы на форме имеют метод Save

Haz: Vlad04 пишет: Присваивается.Но если форму сохранить , а потом снова открыть , то тип поля CHARACTER К Проверил - есть такой косяк в дизайнере поскольку им не пользуюсь - не сразу сообразил как протетсть. PS. не пользуюсь по причине жутких тормозов при редактировании большой формы и ее перемещении по экрану, настолько жутких , что невозможно пользоваться дизайнером. Ситуация немного улучшается если в исходниках дизайнера закоментить прорисовку сетки, но все равно есть тормоза при перемещении формы - идет перезаполнение пропертей контролов. По уму все прорисовки надо выполнять один раз - при отпускании левой кнопки мыши , а не по событию MOVE окна. Еще давно попытался переделать, сразу не вышло , так и забросил дизайнер, все прописываю руками.

Vlad04: Проверил - есть такой косяк в дизайнере Печально. В данном конкретном случае я это обойду.Насчет тормозов дизайнера- есть конечно, но для меня не критично. Не надо создавать слишком сложные формы

gfilatov2002: Haz пишет: есть такой косяк в дизайнере Уже поправил код Ide с учетом Ваших замечаний, добавил также пример DATA_BOUND для проверки Можно обновиться через меню Help->Update Haz пишет: все прописываю руками Я также практически не использую дизайнер форм, но все же рекомендую посмотреть простую утилиту xForm, которая имеет очень компактный код и будет обновлена в следующей сборке

Vlad04: gfilatov2002 Огромное спасибо за оперативность.

Haz: gfilatov2002 пишет: рекомендую посмотреть простую утилиту xForm, Григорий , я ее смотрю постоянно , возможно со временем будет достойная замена дизайнеру. Идеи там заложены удобные. Кстати в ней та же болячка присутствует - при таскании окна по экрану идет попытка постоянного рисования сетки, а процесс этот не быстрый Хотя в xForm это прорисовка значительно быстрее, да и точки там отключаемые ))

gfilatov2002: Haz пишет: при таскании окна по экрану идет попытка постоянного рисования сетки Прорисовку сетки в этой утилите можно отменить (сейчас по нажатию кнопки, а в следующей версии это будет checkbutton)

Haz: gfilatov2002 пишет: Прорисовку сетки в этой утилите можно отменить (сейчас по нажатию кнопки, а в следующей версии это будет checkbutton) Да есть такое - забыл сразу написать

Haz: gfilatov2002 пишет: а в следующей версии это будет checkbutton) Можно в настройки вынести шаг сетки ? На некоторых формах у меня 10 это много, использую 5

gfilatov2002: Haz пишет: Можно в настройки вынести шаг сетки ? Добавил два недокументированных параметра в файл настройки setup.ini: VertDotsStep=5 HorzDotsStep=5

Haz: gfilatov2002 пишет: Добавил два недокументированных параметра в файл настройки setup.ini: Может интересный инструмент получиться

Vlad04: xForm А примеры с xForm ?

Haz: Vlad04 пишет: А примеры с xForm ? А нету

Vlad04: Haz А нету Посмеялся от души . На мой взгляд у xForm, кроме тех, что вы указали есть следующие недостатки : Формат сохранения данных формы не совсем удобный - вручную его редактировать сложно, легко ошибиться.

gfilatov2002: Vlad04 пишет: А примеры с xForm ? Добавил небольшой пример для тестирования xForm Vlad04 пишет: Формат сохранения данных формы не совсем удобный - вручную его редактировать сложно Этот недостаток иногда может быть достоинством, поскольку редактирование формы будет осуществляться только средствами этой утилиты

Vlad04: Как правильно выражение Win_1.Text_1.Save записать через проперти SetProperty( "Win_1", "Text_1",.....

SergKis: Vlad04 пишет:Как правильно ... записать DoMethod("Win_1", "Text_1", "Save")

Vlad04: Ок Не понимаю я ещё это. Когда , что и почему

SergKis: Vlad04 см. MiniGui.chm в конце каждого описания есть PROPERTIES, EVENTS, METHOD

Vlad04: gfilatov2002 Добавил небольшой пример для тестирования xForm С созданием формы в утилите проблем нет. А как встроить эту форму в программу ?

fokinal21: Ткните, пожалуйста носом в вышеупомянутую утилиту xForm!!! Где она обитает? И в пример тоже...

Dima: fokinal21 Лезем в C:\MiniGUI\Doc\ChangeLog.txt там поиск по XFORM и далее видим дорогу типа C:\MiniGUI\UTILS\xForm\

SergKis: Vlad04 пишет:С созданием формы в утилите проблем нет. А как встроить эту форму в программу ? есть кнопочка 010101, которая создает myform.prg - из набранных контролов формы

Vlad04: Пример тот же. Контрол DATEPICKER подключен к базе. И если в базе поле не заполнено, он все равно кукую-то дату отображает(или текущую или предыдущей записи) . Так же нельзя почистить дату , т.е просто сделать пустой. Есть ли какие решения?

Haz: Vlad04 пишет: ак же нельзя почистить дату , т.е просто сделать пустой. Есть ли какие решения? [pre2] DEFINE DATEPICKER <ControlName> [ ID <nId> ] [ PARENT <ParentWindowName> ] COL <nCol> ROW <nRow> [ VALUE <dValue> ] [ FIELD <FieldName> ] [ WIDTH <nWidth> ] [ FONTNAME <cFontName> ] [ FONTSIZE <nFontSize> ] [ FONTBOLD < .T. | .F.> ] [ FONTITALIC < .T. | .F.> ] [ FONTUNDERLINE < .T. | .F.> ] [ FONTSTRIKEOUT < .T. | .F.> ] [ TOOLTIP <cToolTipText> ] [ BACKCOLOR <anBackColor> ] [ FONTCOLOR <anFontColor> ] [ TITLEBACKCOLOR <anTitleBackColor> ] [ TITLEFONTCOLOR <anTitleFontColor> ] [ TRAILINGFONTCOLOR <trlFontColor> ] [ RANGEMIN <dRangeMin> ] [ RANGEMAX <dRangeMax> ] [ SHOWNONE < .T. | .F.> ] [ UPDOWN < .T. | .F.> ] [ RIGHTALIGN < .T. | .F.> ] [ DATEFORMAT <cDateFormat> ] [ ONGOTFOCUS <OnGotFocusProcedure> | <bBlock> ] [ ONCHANGE <OnChangeProcedure> | <bBlock> ] [ ONLOSTFOCUS <OnLostFocusProcedure> | <bBlock> ] [ ONENTER <OnEnterProcedure> | <bBlock> ] [ HELPID <nHelpId> ] [ INVISIBLE < .T. | .F.> ] [ NOTABSTOP < .T. | .F.> ] END DATEPICKER [/pre2]

Vlad04: Понятно, но не превычно как-то

Vlad04: ComboBox Работает с Базой. DEFINE COMBOBOX Combo_OSNOVANIE ROW 400 COL 140 WIDTH 150 HEIGHT 100 ITEMS {" Устава"," от себя лично "} FONTNAME 'Arial' TOOLTIP "Основание, на котором руководит Организацией" END COMBOBOX Хотелось бы в базе сохранять значение ITEMS ( а не Value) и из базы считывать при открытии. Свойства VALUESOURCE , ITEMSOURCE вроде бы не подходят

Vlad04: Домучил Combo. Может и не все правильно - но работает с базой. 2 варианта 1-й в базе сохраняется Value 2-й - DisPlayValue Combo

Vlad04: Menu Построено в дизайнере. При загрузке программы для некоторых пользователей надо скрыть некоторые строки основного меню. Но параметры, влияющие на меню, программа получает уже после загрузки. Как нибудь можно переопределить некоторые элементы уже созданного меню?

Andrey: Vlad04 пишет: Как нибудь можно переопределить некоторые элементы уже созданного меню? Поставь в ON INIT формы функцию, а в этой функции делай что хочешь: SetProperty( ThisWindow.Name, "ЭлементМеню", "Enabled" , .F.) // блокировать объект SetProperty( ThisWindow.Name, "ЭлементМеню", "Enabled" , .T.) // разблокировать объект

Vlad04: Немного не понятно как правильно писать? Элемент меню у меня такой DEFINE POPUP "Сервис" MENUITEM "Индексы" ACTION {|| dbSelect('DBLIST'),CreaTBrows('dbList.UKS',0)} MENUITEM "Пользователи" ACTION {|| dbSelect('USERLIST'),CreaTBrows('USERList.UKS',0)} END POPUP Я хочу заблокировать ВТОРУЮ строку - MENUITEM "Пользователи"

SergKis: Vlad04 Для управления меню надо использовать свойство NAME[pre2] DEFINE MAIN MENU [ OF<ParentWindowName> ] [ DEFINE ] [ MENU ] POPUP <cPopupCaption> [ NAME <cPopupName> ] [ IMAGE <cImage> ] [ FONT <cFont> ] MENUITEM <cItemCaption> ACTION <ActionProcedureName> | <bBlock> [ NAME <MenuItemName>] [ IMAGE <cImageName> ] [ CHECKMARK <cImage> ] [ FONT <cFont> ] [ CHECKED ] [ DISABLED ] [ MESSAGE <cMessage> ] [ BREAKMENU ] .... и управлять #command ENABLE MENUITEM <control> OF <form>; => ; _EnableMenuItem ( <"control"> , <"form"> ) #command DISABLE MENUITEM <control> OF <form>; => ; _DisableMenuItem ( <"control"> , <"form"> ) #command CHECK MENUITEM <control> OF <form>; => ; _CheckMenuItem ( <"control"> , <"form"> ) #command UNCHECK MENUITEM <control> OF <form>; => ; _UnCheckMenuItem ( <"control"> , <"form"> ) где <control> значение NAME [/pre2]



полная версия страницы