On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
gfilatov
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


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




Пост N: 4209
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 16:05. Заголовок: PS SergKis пишет Пер..


PS
SergKis пишет
 цитата:
Переписать на клиента в mem:File (или на диск) поля ключи для Relation на осн. базу


Забыл, что LetoDb (в отличии от LetoDbF) не имеет механизма SET RELATION ..., потому кроме ключевых и др. полей для локальной индикации, надо сохранять в выборке RecNo() записи на сервере и тогда исп. механизм TsBrowse блок кода oBrw:bOnDrawLine где делать переход на запись сервера, т.е. что то типа
oBrw:bOnDrawLine := {|ob,nrow| nrow := (ob:cAlias)->REC_NO, ("ALS_SERVERA")->( dbGoto(nrow) ) }

3. Сделать выборку полностью на сервере ф-ей сервера, написав ее (автономный аналог :FilerFTS(...) или только для этого запроса). Выполнением этой ф-ии на сервере должен быть рез. файл, который можно показывать на клиенте открыв TsBrowse.

Из за отсутсвия механизма Relation я перешел на LetoDbF - переход оч. простой получается - код почти не отличается от clipper. Т.к. осн. сервером исторически остался LetoDb (создание, модификация, ...), причем еще старый 2-х поточный, то LetoDbF пошел дополнением к LetoDb. Т.е. оба запущены одновременно (как daemon, а не сервисы), запускаются менеджером (простым на AutoIt 3 давно написанным) и менеджеры следят за наличием программ LetoDb и LetoDbf в памяти. Обе сборки серверов свои и в LetoDbf сделаны изменения по ini и log файлам, их названия LetoDbF.ini и LetoDbF.log. Тогда оба сервера лежат рядом и не конфликтуют по именам файлов. В ini для серверов исп. Share_Tables = 1 и разные порты

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




Пост N: 200
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 14.02.23 16:28. Заголовок: Спасибо за ответ!


Спасибо за ответ Сергей!

Попытаюсь написать функцию со стороны сервера, как вы рекомендовали. Если будут вопросы
буду задавать :)

Я еще не пробовал LetoDBf. Надо найти время попробовать!
А он наверное лучше, раз вы на нем перешли!

Всего доброго Всем!

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




Пост N: 4211
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 16:50. Заголовок: sashaBG Вот код, ка..


sashaBG
Вот код, как есть, по выборке (за период, клиенты, объекты, ...) событий (охрана) с сервера, показываем ее, связывая со спр. объектов на сервере Скрытый текст

код не отличается от обычной локальной работы. Есть одно правило SetRddDefault("LETO"), локальные как "DBFCDX", т.е.
 
IF ! mDbUse(cFile, cAlias, .T., "DBFCDX")
(cAlsO)->( dbCloseArea() )
//MsgStop("File not used !"+CRLF+cFile+".dbf", "ERROR")
RETURN Nil
ENDIF


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




Пост N: 7293
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.23 17:25. Заголовок: SergKis пишет: Дове..


SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции:


Пример ОЧЕНЬ классный...
Чуток бы цвета исправить...


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




Пост N: 4212
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 18:27. Заголовок: Andrey пишет Чуток б..


Andrey пишет
 цитата:
Чуток бы цвета исправить...


Посмотри строки
 
oTsb:bBefore := {|obrw| // before END TSBROWSE
Local oCol, oTsb
oTsb := obrw:Cargo
oCol := obrw:GetColumn("KOD")
oCol:Cargo := oHmgData()
oCol:Cargo:oColor := oTsb:oKod // keys unique
oCol:Cargo:lColor := Len(obrw:aArray) > 1
oCol:Cargo:nColor := GetSysColor( COLOR_BTNFACE )
// Test_Window_2() исп. CLR_HGRAY
oCol:bDrawCell := oTsb:bKodCell
Return Nil
}
и в этих строках исп. obrw:SetColor(...) никто не мешает (я использовал по минимуму для курсора, см. Test_Window_2() )
oTsb:bAfter := {|obrw| // after END TSBROWSE
Local oTsb, cWnd, nWnd, cTmp, lMsg, nMode, cMain
oTsb := obrw:Cargo
cWnd := obrw:cParentWnd
nWnd := oTsb:nForm
lMsg := oTsb:lPostMsg
nMode := oTsb:nMode
cMain := oMain:Name
oMain:Cargo:aForm[ nMode ] := cWnd
// ...
obrw:AdjColumns()
obrw:Refresh(.T.)
SetProperty( cWnd, "Topmost", .F. )

IF lMsg
cTmp := 'my_OnInit_SBrowse(' + hb_ntos(nMode) + ', "'+cWnd+'")'
SetProperty( cWnd, "ONINIT", hb_MacroBlock(cTmp) )
ENDIF
DO EVENTS
Return Nil
}

блоки кода
oTsb:bAfter := {|obrw| // after END TSBROWSE
oTsb:bBefore := {|obrw| // before END TSBROWSE
они твои, на выполнение подключаются как написано, уточнить можешь в SBrowse_Viewer(...)
В блоке кода oTsb:bBefore не все колонки, только реальные, объявленные
В блоке кода oTsb:bAfter уже все колонки SLECTOR и ORDKEYNO или ARRAYNO
это надо помнить при написании
PS. Дополнить код SBrowse_Viewer(...) предложениями\решениями - я только ЗА

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




Пост N: 7294
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.23 19:28. Заголовок: Григорий ! В примере..


Григорий !
В примере
SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции:


Не работают кнопки Печать и Эксель. Там же стандартный вызов
SBrowse( uAlias, {oTsb:cTitle, oTsb}, oTsb:bSetUp, , nW, nH, , oTsb:lModal, oTsb:lNumber, oTsb:lCenter )

Работать должно сразу или нет ?

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




Пост N: 4213
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 12:07. Заголовок: gfilatov2002 Посмот..


gfilatov2002
Посмотрел примеры Tsb_Export, Tsb_Export_2.
Все режимы с Excel ole у меня падают.
Подключил к примеру hbxlsxml.lib - работает
Пример https://TransFiles.ru/ag8zw

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




Пост N: 4214
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 18:43. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая добавка
 
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse
...
SysRefresh()

ELSEIF ::lIsArr

hb_default( @nRowPos, ::nRowPos )
::Gotop()
::Skip( nRec - 1 )
::nRowPos := nRowPos
::Refresh()
SysRefresh()

ENDIF
...


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




Пост N: 2097
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.02.23 19:49. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшая добавка


Благодарю за предложение!
Попробовал эту добавку в примере из папки samples\Advanced\Tsb_array_3 (повесил на клавишу F2 переход на конкретную позицию в массиве, например на 50-ю строку).
Но результат перехода получился неудовлетворительным: блокируется движение вверх по клавише <стрелка вверх>, а также происходит в некоторых случаях "залипание" последней строки.

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




Пост N: 4215
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 21:47. Заголовок: gfilatov2002 Получи..


gfilatov2002
Получился такой вариант (вроде не глючит у меня)
 
ELSEIF ::lIsArr

hb_default( @nRowPos, ::nRowPos )
IF nRec > ::nLen
nRec := ::nLen
ENDIF
IF nRec == ::nLen
::GoBottom()
ELSE
::GoPos( nRec )
::nAt := nRec
::nRowPos := iif( nRowPos > ::nRowCount(), ::nRowCount(), nRowPos )
::lHitTop := ::lHitBottom := .F.
ENDIF
::Refresh( ::nRowCount() < ::nLen )
IF ::bChange != NIL
Eval( ::bChange, Self, 0 )
ENDIF
SysRefresh()

ENDIF


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




Пост N: 4216
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 01:00. Заголовок: gfilatov2002 Не зна..


gfilatov2002
Не знаю, что рыть, с ole не работал никогда, но это примеры hmg выдают Tsb_Export и Tsb_Export_2. Offis\Excel 2016 раньше было Ok!
Логи ошибок тут https://TransFiles.ru/mnoow

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




Пост N: 1878
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 11:39. Заголовок: SergKis пишет: Не з..


SergKis пишет:

 цитата:
Не знаю, что рыть, с ole не работал никогда, но это примеры hmg выдают Tsb_Export и Tsb_Export_2. Offis\Excel 2016 раньше было Ok!

Если актуально будет после обеда посмотрю. Работа с оле всегда непредсказуемая. А Что автор примеров на эту тему думает?

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




Пост N: 2098
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.02.23 11:55. Заголовок: Как и обещал, выложи..


Как и обещал, выложил финальную сборку 23.02

click here

Также обновил Unicode версию библиотеки по старому адресу для Сергея

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




Пост N: 4217
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 13:06. Заголовок: Haz пишет Если актуа..


Haz пишет
 цитата:
Если актуально будет после обеда посмотрю.


Не могу сказать об актуальности, но не так давно, на этой же PC все работало, валится у меня одного или у кого то еще ?
У меня исп. hbxlsxml.lib для форм. xml\xls и libXL для чтения данных.
С xml Excel работает, с libXL тоже.

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




Пост N: 1879
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 13:14. Заголовок: :sm17: SergKis пишет..


SergKis пишет:

 цитата:
валится у меня одного или у кого то еще


Запустил Tsb_Export все работает, никаких ошибок тоже Excel 2016. Правда с уже успел обновиться на сборку 23.02
Не пойму куда смотреть

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




Пост N: 7295
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.02.23 14:26. Заголовок: Haz пишет: Не пойму..


Haz пишет:

 цитата:
Не пойму куда смотреть


Пример ниже который свалиться если нажать на кнопке Эксель...

SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции: https://TransFiles.ru/ottjz
- смена типа окон S\C и немного управления
- смена вида курсора
- подсветка одинаковых ключей (группы) в просмотре

Мои предположения - если 1 поле в бровсе логическое, то при вызове Эксель - оля падает...



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




Пост N: 4218
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 14:53. Заголовок: Andrey пишет если 1..


Andrey пишет
 цитата:
если 1 поле в бровсе логическое, то при вызове Эксель - оля падает...


Всегда делаю так
aYesNo := {"Yes", "No"}
всегда можно параметром или еще как поменять
aYesNo := {"Да", "Нет"}
aYesNo := {"М", "Ж"}
aYesNo := {"Открыто", "Закрыто"}
...
для лог. колонки меняю .T. - aYesNo[1], .F. - aYesNo[2], самый простой вариант cValToChsr(...)

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




Пост N: 4219
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 15:19. Заголовок: Haz пишет Запустил T..


Haz пишет
 цитата:
Запустил Tsb_Export все работает, никаких ошибок тоже Excel 2016. Правда с уже успел обновиться на сборку 23.02
Не пойму куда смотреть


Игорь, никуда не смотри, на обновленной версии у меня так же валится Буду считать, что крякнулся Excel у меня, с Word работает Ok!

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




Пост N: 1880
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 15:47. Заголовок: Andrey пишет: Приме..


Andrey пишет:

 цитата:
Пример ниже который свалиться если нажать на кнопке Эксель...


Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку
 
# Keys compile
#-prgflag=-w0 -es1
-prgflag=-w2 -es1

# Enable multi/single-thread Harbour VM
-mt

# Incremental-compilation mode
-inc

# folder where are all * .obj
-workdir=OBJ

# Name EXE-module
-odemo

# to list all * .prg
demo.prg
h_tbrowse.prg
# paths to the main and extension *.Lib
-lminigui
#-lhbmemio



Все становится видно.

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




Пост N: 1881
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 15:51. Заголовок: Haz пишет: Проблема..


Haz пишет:

 цитата:
Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку


в исходниках метода METHOD ExcelOle() есть строки
 
IF ::lDrawSuperHd

FOR nCol := 1 TO Len( ::aSuperHead )
nVar := iif( lSelector, 1, 0 )
uData := iif( ValType( ::aSuperhead[ nCol, 3 ] ) == "B", Eval( ::aSuperhead[ nCol, 3 ] ), ;
::aSuperhead[ nCol, 3 ] )
oSheet:Cells( nLine, ::aSuperHead[ nCol, 1 ] - nVar ):Value := uData
cRange := HeadXls( ::aSuperHead[ nCol, 1 ] - nVar ) + LTrim( Str( nLine ) ) + ":" + ;
HeadXls( ::aSuperHead[ nCol, 2 ] - nVar ) + LTrim( Str( nLine ) )
oSheet:Range( cRange ):Borders():LineStyle := xlContinuous
oSheet:Range( cRange ):HorizontalAlignment := xlHAlignCenterAcrossSelection
oRange := oSheet:Range( cRange )
IF hFont != NIL
aFont := GetFontParam( hFont )
oRange:Font:Name := aFont[ 1 ]
oRange:Font:Size := aFont[ 2 ]
oRange:Font:Bold := aFont[ 3 ]
ENDIF
NEXT

nStart := nLine++
ENDIF




вот тут и идет обращение к oSheet:Cells() где номер колонки равен 0 из за этого ОЛЕ и валится
как быстрая правка вместо nVar := iif( lSelector, 1, 0 ) сделать nVar := 0 тогда все работает корректно.
Ну а дальше разбираться с ::lSelector ( осознанием его практической бесполезности ) и правкой метода.

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