On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
Vlad04
постоянный участник


Пост 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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


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




Пост N: 1464
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.17 09:30. Заголовок: Петр Может смущает ..


Петр
Может смущает наличие многих параметров в блоках и функциях (это в основном для информации в MsgBox(...)), так в реальности, можно, практически, обойтись без них (oBrw1 Public\Private):
 
oBrw:bLDblClick := {|| oBrw1:PostMsg( WM_KEYDOWN, oBrw1:nFireKey, 0 ) }
oBrw:UserKeys(VK_RETURN, {|| oBrw1:PostMsg( WM_KEYDOWN, oBrw1:nFireKey, 0 ) }) или
oBrw:UserKeys(VK_RETURN, {|obr| obr:PostMsg( WM_KEYDOWN, obr:nFireKey, 0 ) })
:UserKeys('SetMode_1' , {|obr| Set_Mode(obr, 1)})
:UserKeys('SetMode_2' , {|obr| Set_Mode(obr, 2)}) или
:UserKeys('SetMode_1' , {|| Set_Mode(oBrw1, 1)})
:UserKeys('SetMode_2' , {|| Set_Mode(oBrw1, 2)}) или
:UserKeys('SetMode_1' , {|| Set_Mod1()}) // внутри функций
:UserKeys('SetMode_2' , {|| Set_Mod2()}) // используем oBrw1
...




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




Пост N: 1465
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.17 10:26. Заголовок: gfilatov2002 пишет ф..


gfilatov2002 пишет
 цитата:
функция hb_HGetDef() недоступна в xHarbour


Может вместо
 цитата:
#ifndef __XHARBOUR__
#define __EXT_USERKEYS__
#endif


сделать
 
#ifndef __XHARBOUR__
FUNC hb_HGetDef( hHash, xKey, xDef )
Local nPos := HGetPos( hHash, xKey )
Return iif( nPos > 0, HGetValuePos( hHash, nPos ), xDef )
#endif


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




Пост N: 1466
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.17 10:31. Заголовок: PS вернее #ifdef __X..


PS
вернее #ifdef __XHARBOUR__
...

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1104
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.05.17 11:45. Заголовок: SergKis пишет: верн..


SergKis пишет:

 цитата:
вернее #ifdef __XHARBOUR__


Заменил вызов HGetValuePos() на HGetValueAt() и добавил переопределение еще для двух функций

 цитата:
#ifdef __XHARBOUR__
/* Hash item functions */
#xtranslate hb_Hash( [<x,...>] ) => Hash( <x> )
#xtranslate hb_HSet( [<x,...>] ) => HSet( <x> )
#endif


теперь UserKeys работает и под xHarbour

Благодарю за помощь

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


Пост N: 1485
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 29.05.17 12:53. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может смущает наличие многих параметров в блоках и функциях


Вот как раз это меня не смущает
И даже наоборот, смущает то, что, например, в Events параметры не передаются в оконные события.

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




Пост N: 1468
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.05.17 07:49. Заголовок: gfilatov2002 Дополн..


gfilatov2002
Дополнительно, что бы было
#ifdef __XHARBOUR__
#xtranslate hb_HHasKey( h, k ) => HHasKey( h, k )
#xtranslate hb_HDel( h, k ) => HDel( h, k )


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


Пост N: 1488
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 30.05.17 08:20. Заголовок: SergKis пишет: Допо..


SergKis пишет:

 цитата:
Дополнительно, что бы было



Включите hbcompat.ch из contrib/hbxhb

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




Пост N: 5405
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.06.17 12:50. Заголовок: Вопрос по индексам в..


Вопрос по индексам в Tsbrowse.

К базе подключёны индексы. 3 индекс создан с ключом = "DESCEND(STR(KView))+UPPER(NAME)"
Добавляю запись в базу.
            nOrderTek := INDEXORD() 
DBSetOrder( 1 )
....
DBAppend()
nTekRec := (oBrw:cAlias)->(RecNo())
lAppend := .T.
DBSetOrder( nOrderTek )
....
IF lAppend // была добавлена запись
oBrw:Refresh(.T.)
oBrw:GoToRec(nTekRec)
ENDIF
Form_1.oBrw.Setfocus
RETURN Nil

После добавления курсор НЕ становиться на добавленной записи, а становиться на первую запись по индексу.

Как нужно правильно сделать установку на добавленную запись ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6446
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.17 13:05. Заголовок: Andrey пишет: nOrd..


Andrey пишет:

 цитата:
nOrderTek := INDEXORD()
DBSetOrder( 1 )
....
DBAppend()
nTekRec := (oBrw:cAlias)->(RecNo())
lAppend := .T.
DBSetOrder( nOrderTek )



А так ?

 
nOrderTek := (oBrw:cAlias)->(INDEXORD())
(oBrw:cAlias)->(DBSetOrder( 1 ))
....
(oBrw:cAlias)->(DBAppend())
nTekRec := (oBrw:cAlias)->(RecNo())
lAppend := .T.
(oBrw:cAlias)->(DBSetOrder( nOrderTek ))


PS
Вместо INDEXORD() лучше юзать ordsetfocus() ежели это CDX

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




Пост N: 5406
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.06.17 13:12. Заголовок: Dima пишет: А так ?..


Dima пишет:

 цитата:
А так ?


Равнозначно. Можно и так написать. С обычным порядком в индексе у меня всё работает.
А если поставить другой индекс с обратным порядком в ключе = "DESCEND(STR(KView))+UPPER(NAME)"
То запись перестаёт вставать на правильное место.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6447
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.17 13:15. Заголовок: Была такая кака. При..


Была такая кака. Пришлось базу открывать 2 раза с разными алиас , добавление и смену ордера делаем
во вспомогательной базе и после в основной (бровс по ней живет) прыгаем куда надо , не меняя ордера естественно.
Такую "фигню" под консолью делать не нужно.....

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6448
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.17 13:22. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно и так написать


Я имел в виду OrdSetFocus по имени тега

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




Пост N: 1510
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.06.17 19:44. Заголовок: Anderey пишет С обы..


Anderey пишет
 цитата:
С обычным порядком в индексе у меня всё работает.


Dima пишет
 цитата:
Пришлось базу открывать 2 раза с разными алиас , добавление ...


По мне, это нормальная практика, т.е. просмотр[ы] по одной, а ввод, удаление, edit по вновь открываемой.
А учитывая "тонкости" TsBrowse, возможно, лучший вариант. Повторное открытие, для модификаций еще с s87 практикую.

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




Пост N: 5418
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.17 15:52. Заголовок: MiniGUI Extended Edi..


MiniGUI Extended Edition 17.05
У меня сделано так:
            oBrw:aColumns[nJ]:bPrevEdit := {|| nRecBuff := (oBrw:cAlias)->(RecNo()), ; 
MyFieldEdit( oBrw:aColumns[oBrw:nCell]:Cargo ) }

oBrw:aColumns[nI]:bPostEdit := {|| oBrw:GoToRec(nRecBuff), oBrw:Refresh(.T.) }

К базе подключёно 3 индекса.
Последний индекс типа: STR(KView)+STR(KFILI)+UPPER(FIO)

Всё работает отлично, но после редактирования поля входящее в индекс (например FIO) - курсор прыгает на 6 позиции вниз.
Правка столбцов полей KView и KFILI - происходит нормально.
Почему ?

В FUNCTION MyFieldEdit(aCargo) нет переходов по базе. Только редактирование поля в зависимости от условий:
            IF lEditField   
// сетевой захват записи
IF (oBrw:cAlias)->(RLock())
FieldPut( FIELDNUM( cPoleField ), cPoleEdit )
(oBrw:cAlias)->KOPERAT := M->nOperat
DBCommit()
DBUnlock()
ENDIF
ENDIF



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6456
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.17 16:46. Заголовок: Andrey пишет: Почем..


Andrey пишет:

 цитата:
Почему ?


Покажи скрин до и после редактирования поля FIO

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




Пост N: 5419
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.17 17:05. Заголовок: Dima пишет: Покажи ..


Dima пишет:

 цитата:
Покажи скрин до и после редактирования поля FIO



Вот:


Если редактировать последние записи в таблице, то курсор перескакивает НИЖЕ записей таблице и на экране становится дублирование записей... Совсем юзер пугается...

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6457
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.17 17:14. Заголовок: а если закоментить с..


а если закоментить строку
oBrw:aColumns[nI]:bPostEdit := {|| oBrw:GoToRec(nRecBuff), oBrw:Refresh(.T.) }

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6458
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.17 17:20. Заголовок: Andrey пишет: В FUN..


Andrey пишет:

 цитата:
В FUNCTION MyFieldEdit(aCargo) нет переходов по базе. Только редактирование поля в зависимости от условий:

IF lEditField
// сетевой захват записи
IF (oBrw:cAlias)->(RLock())
FieldPut( FIELDNUM( cPoleField ), cPoleEdit )
(oBrw:cAlias)->KOPERAT := M->nOperat
DBCommit()
DBUnlock()
ENDIF
ENDIF



Прикольно
Только RLOCK смотрит в правильный ALIAS , все что ниже х.... знает куда


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




Пост N: 5420
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.17 17:32. Заголовок: Dima пишет: а если ..


Dima пишет:

 цитата:
а если закоментить строку



Сделал так:
oBrw:aColumns[nI]:bPostEdit := {|| /*oBrw:GoToRec(nRecBuff)*/, oBrw:Refresh(.T.) }

Стало отлично ! Не перескакивает. НО ТЕПЕРЬ другой справочник не работает.
Если к базе подключаю только 2 индекса и 2-ой индекс типа: UPPER(NAME), то
при редактировании поля NAME и изменению его на другое значение (было: "ООО СтройСервис", стало "1ООО СтройСервис")
то КУРСОР остаётся на текущем месте, а отредактированная запись улетает вверх.

Как теперь быть ?

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




Пост N: 5421
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.17 17:34. Заголовок: Dima пишет: Только ..


Dima пишет:

 цитата:
Только RLOCK смотрит в правильный ALIAS , все что ниже х.... знает куда


Из терминалки перенёс. Как правильно сделать ?

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 185
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет