~~~~~~~~~Вопрос по FoxPro***********************

Старый ламер 01.04.2004 - 08:41 | Давненько не программил а теперь натолкнулся на вот такое. К колонкам GRID добавляю на стадии выполнения программы элемент управления(Textbox или Checkbox к слову). Устанавливаем Column.CurrentControl = cObjName на этот элемент, Column.Sparce = .T. Т.к Addobject() добавляет невидимый объект то устанавливаем Column.cObjName.Visible = .T. Устанавливаем Column.ControlSource = table.cFieldName(или lFieldName). И тут начинается ЁПРСТ! Все работает ОК но добавленный элемент становится виден только тогда, когда на него устанавливается фокус, при перемещении элемент визуально исчезает и появляется следующий. Как с этим бороться?
Big Duck 1 - 01.04.2004 - 09:57 | for i = 1 to oGrid.ColumnCount oGrid.Columns(i).RemoveObject('Text1') oGrid.Columns(i).AddObject('myCheck', CheckBox) oGrid.Columns(i).myCheck.visible = .t. endfor --------- вот собсно и все..... - все по-чесному показывает.....
Старый ламер 2 - 01.04.2004 - 10:28 | Ну не такой я уж тупой, чтоб не попробовать RemoveObject(), пробовал и с Forecolor и BackStyle экспериментировать, комбинировать варианты. Потом все эти строчки грохнул ввиду нулевого результата. Кстати, GRID не CreateObject()-ом создавался, а в конструкторе форм со всеми колонками, если это имеет значение. На стадии выполнения добавляются к Column-ам только эл-ты управления(CheckBox и EditBox). В указанном коде вижу отличие от кода сабжа только RemoveObJect(), но этот вариант я уже пробовал ранее и он НЕ РАБОТАЕТ.
Big Duck 3 - 01.04.2004 - 10:34 | Вот это я вставляю в Init Event грида, и не важно, как он создавался - в дизайтайме или программно.... а вообще, по FoxPro гораздо более подробно ответят тут: http://forum.foxclub.ru/list.php?f=5 а именно твой вопрос рассматривался тут: http://forum.foxclub.ru/read.php?f=5&i=80210&t=80048#reply_80210
Старый ламер 4 - 01.04.2004 - 11:19 | Thank's. Посмотрим, чего пишут.:o)
Старый ламер 5 - 01.04.2004 - 11:58 | И ничего все равно не работает.:( Big Duck, пожалуйста, на мыло какой-нибудь работающий пример скинь.
Старый ламер 6 - 01.04.2004 - 12:15 | И еще одно. При выборке большого числа записей(попытался на 15000 записей тестировать) выдает на строчке AddObject для Checkbox : Data type mismatch, при небольших количествах записей все хоккей. Таблица является курсором, если это имеет значение.
Big Duck 7 - 01.04.2004 - 12:21 | Вообще-то объем влиять не должен.... я в примере ошибся - тип oGrid.Columns(i).AddObject('myCheck', 'CheckBox') CheckBox надо в кавычках писать. а то он будет искать переменную CheckBox, не найдет и присвоит .f. - так ессесно упадет! Пример (прям щас) кинуть не могу, ибо под рукой нет.... вечером, как домой доберусь скину
Big Duck 8 - 01.04.2004 - 12:22 | И еще обрати внимание на поле, которое отражается в этой колонке - если оно не Logical, то тоже будет Datatype Mismatch
Старый ламер 9 - 01.04.2004 - 12:26 | И на Debage(строчка addobject()) показывает, что тип checkboxa - Numeric, а Value = 0. Как такое вообще может быть??? Глазам своим не верю!!!
Старый ламер 10 - 01.04.2004 - 12:30 | Ковычки, естессно есть, поле курсора - Logical(но до связи грида с таблицей прога еще не дошла: Recordsource="") Мистика какая-то! Повторяю, на небольшом числе записей эта ошибка не выводится, только проблема с визуализацией.
Старый ламер 11 - 01.04.2004 - 12:42 | Блин, поставил addobject после установки RecordSource для Grida и ControlSource для Column - и DataType mismatch исчез. Ну кто-нибудь, когда-нибудь Гейтса застрелит!? Разве можно так над людьми издеваться?? А с визуализацией все равно что-то не то. Код уже слямзил с форума http://forum.foxclub.ru/read.php?f=5&i=80210&t=80048#reply_80210(хотя у меня код по смыслу точно такой же), так все равно та же дурь.
FWP 12 - 01.04.2004 - 12:49 | " Ну кто-нибудь, когда-нибудь Гейтса застрелит!? Разве можно так над людьми издеваться??" Никогда. Есть масса людей, готовых заслонить его собственной грудью. К, примеру, на RSDN.
Старый ламер 13 - 01.04.2004 - 12:58 | FWP :-)
Старый ламер 14 - 01.04.2004 - 13:19 | И еще одна проблема в том же Grid-e, причем с "родными" TextBox-ами, за которыми закреплены текстовые поля курсора: некоторые записи содержат .NULL. значения, NullDisplay = "неизвестно", но на экран выводится все равно .NULL., а надпись "неизвестно" в любой ячейке появляется, только если установить курсор именно на эту ячейку Grid-а, и снова появляется .NULL. при потере фокуса. :( По сути та же самая проблема, что и с CheckBox-ами.
Big Duck 15 - 01.04.2004 - 14:24 | Эту проблему я обошел так: написал функцию типа такую: fucntion c parameters cString if isnull(cString) RetValue = '' else RetValue = Alltrim(cString) endif return RetValue endfunc -------- а потом, когда пишу запрос, то текстовое поле, которое предполагается NULL, пропускаю через функцию: select c(myField) from myTable так все работает
Старый ламер 16 - 01.04.2004 - 14:35 | Big Duck №15,с пасибо! Все гениальное как всегда просто. Так и сделаю! FUNCTION c LParameters tcString RETURN IIF(ISNULL(tcString),"",tcString) ENDFUNC Чуть-чуть побыстрее для большой выборки будет :). А ALLTRIM, наверное, лучше убрать. *** С вижуализацией помогииииите!!!!!
Старый ламер 17 - 01.04.2004 - 14:39 | Можно и так: FUNCTION c LParameters tcString, tcNullMessage RETURN IIF(ISNULL(tcString),tcNullMessage,tcString) ENDFUNC
Big Duck 18 - 01.04.2004 - 15:36 | Кинь на почту свои формы, посмотрю, как ты это делаешь...........
Старый ламер 19 - 01.04.2004 - 16:07 | У меня все формы на библиотеки классов завязаны, которых уже куча набралась и мути полно. Все никак не доберусь до компоновки библиотек, так что вычленить эти классы быстро не смогу, а если скопом архивы отправлять, то конторная проксятина завернет либо по объему, либо по кол-ву писем. :((
Старый ламер 20 - 05.04.2004 - 09:34 | Big Duck, сделал пример небольшой, выслал. Вопрос еще очень актуален. АП!
Big Duck 21 - 05.04.2004 - 09:55 | Так шо ж ты мне EXE выслал? че я с ним делать буду? :)
Старый ламер 22 - 05.04.2004 - 10:07 | Распаковывать :-)))))))))))))))))))) WinRaR SFX
Старый ламер 23 - 05.04.2004 - 10:13 | Неужели Column.Sparse = .F.?????????????
Big Duck 24 - 05.04.2004 - 10:18 | Пустая форма с гридом без кода.... Column.Sparse - specifies if the CurrentControl property affects all or only the active cell in the Column object Так ты шо, это сразу не выставил? А вообще, если че, давай лучше в асю пиши - 159960088
Старый ламер 25 - 05.04.2004 - 10:21 | ЗЫ. Так по описанию думал, что .T. надо выставлять. Об этом и в субже написал. :(( Как до аськи доберусь, так постучусь. :)

>>