:: Курилка
Нужно-ли такое? Если да, то милости просим...
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Есть предложение - публиковать штучки, которые могут пригодится.
Что называется база данных удобств в две, три строки, как, например, первый tip
отсюда:
www.hot.ee

В базу данных FoxClub'a такие вещи заносить наверное громоздко...




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Равиль

Сообщений: 6555
Откуда: Уфа
Дата регистрации: 01.08.2003
Всем привет. Хорошая идея. Может сделать раздел типа "Полезные штучки".




------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Уж года четыре как пользую Scatter MEMO Name oRecord
Плюс пользую прибабмас именуемый у меня неправильныйм термином TypeDef тоже на ходу делаю объект с нужными мне свойствами типа
oMyObject=TypeDef("DATEMIN","DATEMAX","OwnerID","CleintID")
потом этот oMyOBJECT пихал куда хотел



[i][small][color=Gray]Отредактировано (08.12.04 09:44)


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Чего-то запамятовал - для vfp8-9 можно юзать объект Empty c функциями ADDPROPERTY и REMOVEPROPERTY - а то у меня этот typedef тянулся с vfp6 и пока еще много чего на vfp7




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Равиль

Сообщений: 6555
Откуда: Уфа
Дата регистрации: 01.08.2003
Да, помнится, Вадим ты говорил об этом свойстве для формы-редактора.
Для случая одной записи из одной таблицы это нормально, но если форма для нескольких таблиц, причем одна-ко-многим, то тут Scatter Name отдыхает




------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Равиль - Юрий как раз хотел показать способ передачи и возврата множественных значений в форму. Я именно таким способом из отчетов передаю параметры в окно формирования запроса и потом использю их в отчетах и запросах. А то что я использую для редактирования данных - это мои проблемы и я их никому не навязываю. Тут показыватся способ формирования объекта с небходимыми свойствами и передачи их между формами и объектами




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
По поводу SCATTER NAME

А не проще посмотреть в окне Debugger список Locals. Будет виден объект lu_Record, а развернув его можно увидеть список и значение свойств. Там и содержание массивов смотреть удобно.

Если уж речь идет о программном коде, то возможно пригодится такое:

Если поле таблицы или переменная памяти может принимать значение NULL и требуется сравнить значение этой переменной с неким значением, то обычно пишут что-то вроде:

IF IsNull(MyVar) = .F. AND MyVar = (искомое значение)
...
ENDIF

Используя функцию NVL() это выражение можно сократить

IF NVL(MyVar,(пустое значение)) = (искомое значение)
...
ENDIF

Здесь (пустое значение) - это именно пустое значение для данного типа данных. Смысл в том, что значение NULL невозможно сравнить ни с какими значением (вернет NULL), но вот (пустое значение) вполне поддается сравнению.


Кстати, высказывалась идея списка комбинаций горячих клавишь в FoxPro. Ну, например,

***************************
Ctrl+Alt+Shift - скрывает ВСЕ открытые окна открывая основное окно FoxPro

***************************
Находясь в командом окне (CTRL+F2) можно переходить к любой записи
в текущей рабочей области просто введя ее номер и нажав ENTER:

use mytable
123<ENTER>
? recno()

***************************
Находясь в окне Tools->Options не отпуская клавиши Shift нажать кнопку "Ok"

В командное окно будут выведены все текущие настройки




------------------
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Aijik

Сообщений: 2145
Откуда: Ростов-на-Дону
Дата регистрации: 08.01.2002
Дык.. эта.. что там со штучками? Есть предложение сюда постить или я не понял...
Считаю тему актуальной. Улучшайзерами/кастомайзерами и прочими фенечками для работы в IDE было бы полезно посмотреть/обменяться

Для затравки:
Просмотр массива в виде BROWSE. Очень удобная фишка - уже миллион лет не смотрю массивы в дебаггере, а в рантайме так ваще счастье Автор - не я (Sergey Berezniker).. где-то выкачал

ALANGUAGE(MyArray,2)
Browarr(@MyArray)

Для того, чтобы быстро это дело вставлять в код написал макрос вот такого соодержания

{CTRL+X}Browarr(@{CTRL+V}){ENTER}

Подключаем по SET PROCEDURE при загрузке IDE, пишем имя массива, выделяем, жмем клавиатурную комбинацию, повешенную на макрос, и он нам сам генерит готовое выражение. Можно заранее скопировать имя массива в буфер обмена, встать на нужное место и нажать комбинацию - результат тот же. Пoд IDE эту штуку классно в Command Window выдавать - она сама еще и ENTER нажмет - сразу смотрим массив... лепота

*
* Name : Array Browser
* : This is a development tool that allows to view an array in the Browse window
*
* Note 1 : The colum Name format : <T>_<C>_<L>
* T - Column type, V if there are diff types of values in the column
* C - Column Number
* L - Max len requered to represent value in this column
*
* Note 2 : The BrowseArrayCursor cursor isn't closed to allow BROWSE NOWAIT
*
* Author : Sergey Berezniker
* : Version 1.0.2 08/28/2001
* Email : ''.phorum_html_encode('sergeyb@isgcom.com').''
* : This program is placed into Public domain. Comments and suggestions are welcome.
****************
* Что-то я в нем переправлял, но чё - я не помню... По-моему эту строку добавил EXTERNAL ARRAY TAARRAY
* (Aijik)
****************
LPARAMETERS taArray
EXTERNAL ARRAY TAARRAY
Local lcTalkOld, lcOldArea
lcTalkOld = SET("TALK")
SET TALK OFF
lcOldArea = SELECT()
* Make sure that parameter passed is an array
IF TYPE("taArray[1]") = "U"
MessageBox("Please pass array by reference!", 48, PROGRAM() + " - Array Browser")
SET TALK &lcTalkOld
RETURN .F.
ENDIF
* Makes a cursor out of a one or two-dimensional array and browses it
LOCAL lnRows, lnCols, laStru, lnI, lnJ, lcType, lnSize
LOCAL lnDec, lcRow, llAddSize, lvValue, laStru[1], ll1d
* Controls if the MAX size of the value in the column is added
* to the column name
llAddSize = .T.
* Figure out the size of an array
lnRows = ALEN(taArray,1)
lnCols = MAX( ALEN(taArray,2), 1 )
ll1d = (lnCols = 1) && Is array 1D?
DIMENSION laStru(lnCols+1, 16)
lcRow = ""
laStru = ""
* Create an array with cursor structure definition
FOR lnI = 1 TO lnCols
lcCol = Transform(lnI)
lvValue = taArray( 1, lni )
laStru[ lnI, 1 ] = VARTYPE(lvValue )
laStru[ lnI, 2 ] = "C"
lnSize = 1
FOR lnJ = 1 TO lnRows
IF ll1d
lvValue = taArray( lnJ )
ELSE
lvValue = taArray( lnJ, lnI )
ENDIF
IF laStru[ lnI, 1 ] <> TYPE( "lvValue" )
laStru[ lnI, 1 ] = "V"
ENDIF
lnSize = MAX( lnSize, LEN( Transform( lvValue)))
ENDFOR
laStru[ lnI, 1 ] = laStru[ lnI, 1 ] + "_" + lcCol
IF llAddSize
laStru[ lnI, 1 ] = laStru[ lnI, 1 ] + "_" + Transform(lnSize)
ENDIF
lnSize = MIN( 254, lnSize)
laStru[ lnI, 3 ] = lnSize
laStru[ lnI, 4 ] = 0
laStru[ lnI, 5 ] = .F.
laStru[ lnI, 6 ] = .F.
* Create "insert into" values clause
lcRow = lcRow + IIF(EMPTY( lcRow ), "", ", ") + ;
"Transform( taArray[lnI" + IIF(ll1d, "", "," +lcCol) + "] )"
*lcRow = lcRow + IIF(EMPTY( lcRow ), "", ", ") + ;
"Transform( taArray[lnI,"+lcCol+"] )"
ENDFOR
*=AINSERT(laStru[1])
*DIMENSION laStru[ALEN(laStru,1)+1, ALEN(laStru,2)]
lnI = ALEN(laStru,1)
laStru[ lnI, 1 ] = "Row_______"
laStru[ lnI, 2 ] = "N"
laStru[ lnI, 3 ] = 7
laStru[ lnI, 4 ] = 0
laStru[ lnI, 5 ] = .F.
laStru[ lnI, 6 ] = .F.
lcRow = lcRow + ", 0"
* Make a cursor with fields defined by laStru
CREATE CURSOR BrowseArrayCursor FROM ARRAY laStru
* Add rows into cursor
FOR lnI = 1 TO lnRows
INSERT INTO BrowseArrayCursor VALUES ( &lcRow )
ENDFOR
REPLACE ALL Row_______ WITH RECNO()
GO TOP
*KEYBOARD "{CTRL+F10}" CLEAR
***** Aijik *****
*!* BROWSE
BROWSE NORMAL
***** Aijik *****
SELECT (lcOldArea)
SET TALK &lcTalkOld
RETURN




------------------
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Блин - чего-то я раньше не дотумкал показывать массив в Browse - просто на экран выкидывал - тогда хватало - оставалось-то ...




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Привет всем!

Выпал тут из общей жизни в связи с некоторыми проблемами со здоровьем.
Надо бы как-то организовать собррание "советов и трюков", так как большая
часть в Базу знаний как-то не подходит, а иногда забываешь какие-то удачные
короткие решения. Все свою базу просто не запихнуть - более 6Gb.
(правда там очень много документации).

По-поводу первого - просмотр массива через amembers().
Я это использую в своей программе модернизации таблиц и формировании новых
баз, на основе данных существующих таблиц.
То есть, так работает гораздо быстрее, чем перебор полей через функции
работы с полями, запись в переменную "объекта записи", далее члены
в массив и далее - список полей в лист-бокс, где массив источник данных,
и наконец - то что планировалось по ходу задачи через запрос свойств конкретного поля.

Чужие решения могу публиковать и на своем сайте, с гаранией соблюдения авторских прав.

P.S. Ребята! Будьте внимательны к своему организму - поменьше курить и пить кофе,
а то может получиться очень больно... в прямом смысле.




[i][small][color=Gray]Отредактировано (10.12.04 14:24)


------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
2JS
Мотор шалит?
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Во вторник пошел камень из правой почки - думал труба...
Кофе и сигареты немеряно - теперь отняли...




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Дааа, попал .

Отняли , почти последнии радости в жизни, сочувствую.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Юра, крепись!
А что такое камни посебе знаю, тоже время от времени досаждают.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Да вроде выгнали - хорошо хоть без операции...




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Piva_As_Guest
Я тоже раньше кофе пил немерянно и крепкий - с прибалтики привычка осталась - давление как скакануло - сразу пыл умерил - дома теперь вообще кофе нет - и курить стал поменьше - только с пивом не получается Это все бравада юнности теперь боком выходит
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
выходил у меня камень 1 раз - думал сдохну
А насчет кофе - немцы его в-основном и пьют, вот и таскаю на работу чай в термосе
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
V_l_a_d

Сообщений: 42
Дата регистрации: 04.12.2003
У меня написано больше 10 вставок к класс браузеру.
Большую часть можно найти через сайт Блэка.
(Хотелось бы, малой кровью, скорость загрузки
класса у AddInfoX увеличить...)
ShowPem(), на мой взгляд, отличная штука.
На сайте Стива тема не создается, а то бы я
поместил последний вариант.
Здесь, в главном толковище, есть предпоследний.
(если соврал, то в есть в русском фидо)

В части array browser: эта идея, в коде,
реализована в начале 90х Хентценом (бывший с фокстока).
Там еще учавствовал народ, из известных ныне - Страхл.
Ratings: 0 negative/0 positive
Re: Нужно-ли такое? Если да, то милости просим...
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Владимир!

Цитата:
Ctrl+Alt+Shift - скрывает ВСЕ открытые окна открывая основное окно
FoxPro
Если тока OUTSHOW=OFF в конфиге нету
Цитата:
Находясь в командом окне (CTRL+F2) можно переходить к любой записи в
текущей рабочей области просто введя ее номер и нажав ENTER:
Почему тока в командном? Везде можно - это правда недокументированно - в
смысле что в GO/GOTO ... можно собственно само GO и пропустить




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 19 (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика