On-line: Haz, Мирослав, гостей 0. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)



TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

DEFINE TBROWSE oBrw2 ;
AT 60,450 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH 330 ;
HEIGHT 340 ;
FONT "Verdana" ;
SIZE 9 ;
ON DBLCLICK CopyRec();
ON GOTFOCUS fModelo_Hab(2) ;
AUTOFILTER ;
CELLED EDIT;
VALUE nRec;
GRID


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 148 , стр: 1 2 3 4 5 6 7 8 All [только новые]


постоянный участник




Пост N: 468
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.01.15 19:29. Заголовок: Andrey AEval(array(..


Andrey
AEval(array(50), {|x,e| iif( (e)->( used() ), aAdd(a, (e)->( alias() )), nil) })

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 422
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 20:37. Заголовок: SergKis пишет: Т.е...


пишет:

 цитата:
Т.е. АЛИАС по всей задачи ALIAS() = "" - убит !!! Кем ?



не убит, где-то сработал Select(0) вот и стал текущим пустой алиас. На 99% уверен что если твой RecLock() вызывать из алиасного выражения STREET->(RecLock()) то ошибка уйдет. Но это костыль, а не исправление ошибки. По уму надо найти "виновника"

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3932
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 21:00. Заголовок: Haz пишет: MYFIELDE..


Haz пишет:

 цитата:
MYFIELDEDIT в студию



Да вот она, с терминалки перетащил, еще не вычищал...
Скрытый текст


Только до редактирования же НЕ ДОХОДИТ !!! Я колёсиком вверх-вниз и алиас уже слетает !!!
Т.е. стоя на 5-7 записях в справочнике уже видно что база отвалилась !!!

Andrey пишет:

 цитата:
Сделал новый тест в функции MyFieldEdit() до начала редактирования при слёте базы:

MsgDebug(oBrw_1:nLen, ALIAS(), oBrw_1:cAlias )
MsgDebug( "RLock()=", (oBrw_1:cAlias)->(RLock()) )

Т.е. колёсиком подергал вверх-вниз на 5 записях, функция MyChangeBrowse(cAlias) показывает 0/0
начинаю редактировать:
1. MsgDebug показывает 5, "", "STREET"
2. MsgDebug показывает "RLock()=" .T.

Т.е. АЛИАС по всей задачи ALIAS() = "" - убит !!! Кем ?
На экране таблица есть (в объекте) а все связи разорваны !



А вот еще облом, если записей много колёсиком-мышки нужно подергать вверх-вниз (просто на экране, не на всю длину) и то же вылетает .... 0/0 записей....


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3933
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 21:28. Заголовок: Haz пишет: в bPrev..


Haz пишет:

 цитата:
в bPrevEdit тыкни MsgDebug( Alias() )


Где поставить проверку ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 423
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 21:54. Заголовок: Andrey пишет: Где п..


Andrey пишет:

 цитата:
Где поставить проверку ?



так уже поставил , выяснил что текущий алиас меняется .

поставь первой строкой в MyFieldEdit dbSelectArea("STREET")


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3934
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 23:08. Заголовок: Haz пишет: поставь ..


Haz пишет:

 цитата:
поставь первой строкой в MyFieldEdit dbSelectArea("STREET")



Понял, СПАСИБО БОЛЬШОЕ !

Только я через статик переменную это поставил в MyChangeBrowse() и в MyFieldEdit()
IF LEN(ALIAS()) == 0
dbSelectArea( cStaticAliasMain )
ENDIF

Спасибо БОЛЬШОЕ всем кто помогал !!!

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 424
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.01.15 09:26. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только я через статик переменную



а лучше так
dbSelectArea( oBrw:cAlias ) ты ж бровс редактируешь а в нем алиас и так есть

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3939
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.15 18:01. Заголовок: Опять :sm183: Как..


Опять

Как создать колонку для показа/редактирования записей из массива ?
Т.е. в базе содержится поле KGROUP и взамен его значения нужно показывать значение из массива MyDimGroup()
ADD COLUMN TO oBrw9 HEADER CRLF + "Группа" SIZE 150 ;
ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ;
DATA FieldWBlock( "KGROUP", Select() ) ; // как здесь определить ?
EDITABLE
oBrw9:aColumns[6]:bPrevEdit := { || MyDimGroup(), FALSE } // как здесь сделать вызов ?


Если делаю напрямую, без oBrw9:aColumns[6]:bPrevEdit := ....
......
EDITABLE
MyDimGroup()

то справочник вызывается....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 455
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.02.15 18:29. Заголовок: Andrey пишет: Как с..


Andrey пишет:

 цитата:
Как создать колонку для показа/редактирования записей из массива



Вот стандартный из TSCOLUMN для понимания как работает

Function ArrayWBlock( oBrw, nEle )
Return {|x| If(PCount() > 0, oBrw:aArray[ oBrw:nAt, nEle ] := x, oBrw:aArray[ oBrw:nAt, nEle ] ) }

Вообще любой блок выборки записи упрощенно работает так
1. Если ему передают параметр - присваивает значение этого параметра ( запись)
2. Если не передают - читает ( выборка )


т.е. выборка должна быть типа aArray[ Ascan( aArray, (Alias())->KGROUP )] , при этом учитывать что если не найдет - будет вылет по ошибке aArray[0]

ЗЫ. Пример условный т.к. не ясно что за массив

ЗЫЫ Или опять тот же совет - смотреть как используется ::SetData() в исходниках tsBrowse - 100% твой случай

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3940
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.15 18:40. Заголовок: Haz пишет: Пример у..


Haz пишет:

 цитата:
Пример условный т.к. не ясно что за массив


Приблизительно так:
AADD( aDim, { 0 , "---" } )
AADD( aDim, { 1 , "Новичок" } )
AADD( aDim, { 2 , "Руководство" } )
AADD( aDim, { 3 , "Специалисты" } )
AADD( aDim, { 4 , "Опытные пользователи" } )
AADD( aDim, { 5 , "Администратор БД" } )
AADD( aDim, { 90, "Уволенные с фирмы" } )
AADD( aDim, { 99, "Удаленные записи" } )

FOR nI := 1 TO LEN(aDim)
AADD( aCod, aDim[nI,1] )
AADD( aNum, aDim[nI,2] )
NEXT


DATA FieldWBlock( "KGROUP", Select() ) ; // как здесь определить ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 456
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.02.15 18:48. Заголовок: для колонки 1 по пол..


для колонки 1 по полю KGROUP примерно так

oBrw:SetData( 1, ComboWBlock( oBrw, "KGROUP", 1, aArr ) )

в бровсе будет отображаться значение из массива только aArr := { aNom, aCod } нужно заменить на aArr := { aCod, aNom }

все ж есть в примерах



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3941
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.15 19:05. Заголовок: Haz пишет: все ж ес..


Haz пишет:

 цитата:
все ж есть в примерах


Спасибо БОЛЬШОЕ !
Кое что не получалось....

А как назначить блок выбора из массива ?
oBrw9:aColumns[6]:bPrevEdit := { || MyDimGroup(), FALSE } // как здесь сделать вызов ?

Если делаю напрямую, без oBrw9:aColumns[6]:bPrevEdit := ....
......
EDITABLE
MyDimGroup()
то справочник вызывается....


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 457
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.02.15 21:40. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как назначить блок выбора из массива ?
oBrw9:aColumns[6]:bPrevEdit := { || MyDimGroup(), FALSE } // как здесь сделать вызов ?



А какова цель этого ^^^ ?
При чем тут блок выбора и :bPrevEdit ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3942
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.15 23:40. Заголовок: Haz пишет: А какова..


Haz пишет:

 цитата:
А какова цель этого ^^^ ?


Хочу при нажатии на этой колонке, осуществлять выбор из справочника.
Я не понимаю как делать отдельный выбор (вызов функции обработки) по колонке.
Для мемо-поля (или другой отдельной функции) такой вариант проходит,
а для выбора из ComboWBlock( oBrw, "KGROUP", 1, aArr ) почему то нет.

Вот например эти функции нормально вызываются (по клавише ENTER):
oBrw9:aColumns[4]:bPostEdit := {|| SeekLogin(), FALSE } // проверка после ввода
oBrw9:aColumns[7]:bPrevEdit := { || SavePassword(), FALSE } // запись пароля


А так не вызывается: (почему ? )
ADD COLUMN TO oBrw9 HEADER "Группа" ;
ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ;
EDITABLE
oBrw9:aColumns[6]:bPrevEdit := { || MyDimGroup(), FALSE } // вызов справочника


Нужно делать только так (без блока):
......
EDITABLE
MyDimGroup()


Функция MyDimGroup() - переделана из примера \MiniGUI\SAMPLES\Advanced\Tsb_config
Скрытый текст





Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 458
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.02.15 10:40. Заголовок: Andrey пишет: Функц..


Andrey пишет:

 цитата:
Функция MyDimGroup() - переделана из примера



С этого и надо было начинать ... (с исходника)
Вот это тоже переделано от туда же -> oBrw9:aColumns[6]:bPrevEdit := { || MyDimGroup(), FALSE }
Тогда какого художника там делает FALSE ?

Читаем справку по TSBrowse из поставки Minigui

============== читаем ОТ сюда ========================
<bPrevEdit> ( OPTIONAL ) Code Block that will be evaluated before starting the bData editing. This Code Block combined with bPostEdit, will be of great help when need to update the variable used in the Footer of the column, without going through the entire database. It also conditions the editing during run time, if it returns a False value, then the cell editing does not take place.
TSBrowse passes as parameter to this Block the value of the variable before editing.
============== читаем ДО сюда ========================

И осмысливаем почему редактирования не происходит

Andrey пишет:

 цитата:
Для мемо-поля (или другой отдельной функции) такой вариант проходит,а для выбора из ComboWBlock( oBrw, "KGROUP", 1, aArr ) почему то нет.



Потому что там редактирование у тебя сделано не в самой ячейке а во внешней фунции, а непосредственного редактирования ячейки также не происходит.

PS. месье знает толк в извращениях. Сначала сам себе создает проблему на ровном месте, а потом трахается с ней неделю и тже сам


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3957
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 00:16. Заголовок: Всем привет ! Подска..


Всем привет !
Подскажите пожалуйста как сделать следующее:
1) Редактирование ячейки по формату (см.картинку)


2) При нажатие редактирования 8-строки сделать вызов отдельной функции, которая прописана в поле PICTURE ?


Файл программы 2DBF.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4507
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.02.15 10:08. Заголовок: picture "@R 9(99..


picture "@R 9(999) 999-999-99"
picture "@R 999.999.999.999.999"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3958
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 11:28. Заголовок: Dima пишет: picture..


Dima пишет:

 цитата:
picture "@R 9(999) 999-999-99"
picture "@R 999.999.999.999.999"


Не всё так просто. Если сразу добавить, то и отображаться так будет. А мне надо только при редактировании.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4508
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.02.15 11:33. Заголовок: Andrey пишет: А мне..


Andrey пишет:

 цитата:
А мне надо только при редактировании.


 
proc main
local a:=space(12)
local b:=space(15)
cls
@ 10,10 get a picture "@R 9(999) 999-999-99"
@ 11,10 get b picture "@R 999.999.999.999.999"
read


return


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3959
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 11:50. Заголовок: Dima пишет: @ 10,10..


Dima пишет:

 цитата:
@ 10,10 get a picture "@R 9(999) 999-999-99"
@ 11,10 get b picture "@R 999.999.999.999.999"


Dima это для терминалки подойдет. А для МиниГуи нет.
См. пример:
Файл программы 2DBF.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 148 , стр: 1 2 3 4 5 6 7 8 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 507
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет