Автор | Сообщение |
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; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Haz
|
| |
Пост N: 1353
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 12:26. Заголовок: Haz пишет: Давай ка..
Haz пишет: цитата: | Давай какой нить флажок добавим для этого ? |
| сделать то легко , нужно оговорить логику . Где-то удобнее сохранять RowPos , где-то нужно перескочить на RowCount()
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2071
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 13:09. Заголовок: Haz пишет: Давай как..
Haz пишет: цитата: | Давай какой нить флажок добавим для этого ? |
| Трудно сказать. От ввода\корректировки на самом тсб практически отказался (полей много и осталось в некоторых справочниках и по мелочи) в основном с диалог. окна, тсб в качестве индикатора перерисовывает (с окна вводим много строк сразу не выходя, да прямой GetBox побогаче с рюшечками). Даже для удаления исп. тоже окно но с readonly GetBox-ами, показывая значения их. цитата: | сделать то легко , нужно оговорить логику |
| По идее, по умолчанию, работать как раньше со сменой позиции, где нельзя удержать nRowPos, но полное заполнение тсб. При жестком удержании :nRowPos - иметь флаг. Или просто иметь два метода :GotoRow и :GoRow, если трудности с выше сказанным
|
|
|
Haz
|
| |
Пост N: 1354
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 13:48. Заголовок: SergKis пишет: По и..
SergKis пишет: цитата: | По идее, по умолчанию, работать как раньше со сменой позиции, где нельзя удержать nRowPos, но полное заполнение тсб. При жестком удержании :nRowPos - иметь флаг. |
| Надо осмыслить. Иногда записи в силу индекса или сортировки добавляются сверху тогда нужно перескакивать на первую строку. Это вроде реализуемо вторым параметром метода. Полное заполнение последней страницы сделаю сегодня чуть позже.
|
|
|
Haz
|
| |
Пост N: 1355
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 13:54. Заголовок: Haz пишет: Полное з..
Haz пишет: цитата: | Полное заполнение последней страницы сделаю сегодня чуть позже. |
| уже if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() end
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2072
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 13:58. Заголовок: Haz пишет Иногда зап..
Haz пишет цитата: | Иногда записи в силу индекса или сортировки добавляются сверху тогда нужно перескакивать на первую строку. |
| Tsb_sek__2 имеет индекс и поведение нового метода по жесткому удержанию nRowPos вполне хорошее, кроме последнего экрана, на позицию выше он может перескакивать только на 1ом экране и не возможности удержать nRowPos
|
|
|
Haz
|
| |
Пост N: 1356
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 14:08. Заголовок: в итоге 2 варианта п..
в итоге 2 варианта по последней странице первый if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() end второй if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() -nSkip + 1 end
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2073
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 14:11. Заголовок: Haz пишет уже не то...
Haz пишет не то. nRowPos становится просто последней, а должно было быть цитата: | В данной ситуации 14 стр. должна стать 25 и :nRowPos -> 12, т.е перепрыг курсора неизбежен |
| т.е. последняя строка -> :nRowCount(), :nRowPos та что нашлась\ввелась выше последней
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2074
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 19:38. Заголовок: Haz пишет второй ..
Haz пишет цитата: | второй if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() - nSkip + 1 end |
| Этот вариант работает, жестко держит запись и последний лист. Немного не привычно по первому листу или вставке выше - подтягивает инф. к курсору (но так и хотелось). Гонял пример tsb_seek__2 с разными вариантами вставки F2 (oBrw:cAlias)->( FieldPut( 1, ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'AL_'+ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'W_'+ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'Y_'+ProcName()+": "+strzero(nRec, 7) ) ) ... все ok На всякий случай, что вышло по методу Скрытый текст
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse LOCAL cAlias LOCAL nSkip := 0 LOCAL lMore := .T. LOCAL lSkip := .F. LOCAL lRet := .F. LOCAL lReCount := .F. If ::lIsDbf lRet := .T. cAlias := ::cAlias ::SetFocus() ::nLastPos := (cAlias)->( RecNo() ) hb_default( @nRowPos, ::nRowPos ) (cAlias)->( dbGoto(nRec) ) DO WHILE (cAlias)->( !EOF() ) .and. nSkip < ( ::nRowCount() - nRowPos ) (cAlias)->( dbSkip(1) ) nSkip ++ ENDDO If (cAlias)->( EOF() ) lReCount := .T. nRowPos := ::nRowCount() - nSkip + 1 EndIf (cAlias)->( dbGoto(nRec) ) nSkip := 0 ::nRowPos := 1 DO WHILE lMore (cAlias)->( dbSkip(-1) ) nSkip ++ lMore := !(cAlias)->(BOF()) .and. nSkip < (nRowPos) lSkip := !(cAlias)->(BOF()) ENDDO ::Refresh(lReCount, lReCount) If lSkip ::Skip(nSkip) EndIf ::nRowPos := nSkip ::nAt := ::nLogicPos() ::ResetVScroll() If ::bChange != Nil Eval( ::bChange, Self, 0 ) EndIf ::lHitTop := ::lHitBottom := .F. DO EVENTS EndIf RETURN lRet
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2075
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 19:58. Заголовок: PS Пересобрал свой п..
PS Пересобрал свой проект - все аналогично работает
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1359
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.09.18 20:04. Заголовок: SergKis пишет: Этот..
SergKis пишет: Да, у меня 2-й вариант тоже отработал нормально Думаю, что в следующей сборке он заменит старый метод GotoRec()
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1360
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.09.18 09:34. Заголовок: Выпущена новая сборк..
Выпущена новая сборка 18.09 для BCC 5.51 и компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.09-setup.exe Рекомендуется к использованию Также имеются следующие сборки для Си-компиляторов: - MinGW 8.1.0 32-bit для Harbour 3.2.0dev; (есть в наличии) - MinGW 8.1.0 64-bit для Harbour 3.4.0dev; (есть в наличии) - MS VisualC 2017 32-bit для Harbour 3.2.0dev; (под заказ) - Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev. (под заказ)
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2080
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.10.18 23:33. Заголовок: SergKis пишет Такое ..
SergKis пишет цитата: | Такое проделывал, давая отметить все или выборочно (строки тсб) в переменной (по кнопке\space,dblclick,...) Схема по памяти |
| Порихтовал пример Tsb_Basic (demo.prg -> demo3.prg) на предмет RecnoClone с учетом установленных меток, что бы была не схема, а пример. Пример тут https://my-files.ru/u10mq0
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1361
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.10.18 10:03. Заголовок: SergKis пишет: Пори..
SergKis пишет: цитата: | Порихтовал пример Tsb_Basic |
| Благодарю за помощь Уже добавил этот пример в новую бету для следующей сборки.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2081
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.10.18 15:58. Заголовок: gfilatov2002 пишет У..
gfilatov2002 пишет Может имеет смысл такая правка в пример (цветом выделены строки для генерации ошибки) Скрытый текст
STATIC FUNCTION RecnoClone(oBrw, lMsg) LOCAL oRec, nRec, aRec, nCnt := 0 LOCAL aClone, lClone := .F., nClone := 0 LOCAL cAls := oBrw:cAlias LOCAL oMetka := This.Button_Clone.Cargo LOCAL cMsg := "Clone line (^) and insert record in a database ?" If Empty( aClone := oMetka:GetAll(.F.) ) aClone := {{ (cAls)->( RecNo() ), (cAls)->( RecGet() ) }} EndIf If !Empty(lMsg) cMsg := StrTran( cMsg, '^', hb_ntos(Len(aClone)) ) lClone := MsgYesNo( cMsg, "Сonfirmation", .f. ) EndIf If ! lClone oBrw:SetFocus() RETURN .F. EndIf // oBrw:bAddBefore := {|ob| oRec := (ob:cAlias)->( RecGet() ) } // все поля oBrw:bAddAfter := {|ob,ladd| iif( ladd, (ob:cAlias)->( RecPut(oRec) ), ) } // все поля FOR EACH aRec IN aClone nCnt ++ If nCnt == 2; LOOP EndIf nRec := aRec[1] oRec := aRec[2] // можно удалить поля (не нужные при clone) или заполнить new значениями // oRec:Del('F1') // oRec:Del('F4') // oRec:Set('F4', .T.) // oRec:Set('F1', Date()) If oBrw:AppendRow(.T.) nClone++ oMetka:Del(nRec) // убираем метку ? "Clone=", nRec, "==>" , (cAls)->( RecNo() ) EndIf NEXT (cAls)->(DbCommit()) oBrw:bAddBefore := Nil oBrw:bAddAfter := Nil oBrw:nCell := 3 If nClone != Len(aClone) MsgStop('Selected line (' + hb_ntos(Len(aClone)) + ').' + CRLF + ; 'Insert record in a database (' + hb_ntos(nClone) + ')', 'ERROR') EndIf oBrw:SetFocus() RETURN .T.
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1362
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.10.18 16:59. Заголовок: SergKis пишет: така..
SergKis пишет: Принято с благодарностью
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2082
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.10.18 17:57. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет Код, выделенный цветом, наверно, не надо в пример, он показывает, что метки и :AppendRow() работают и при сбое, отработав возврат из метода
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1363
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.10.18 19:59. Заголовок: SergKis пишет: Код,..
SergKis пишет: цитата: | Код, выделенный цветом, наверно, не надо в пример |
| OK
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2083
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.10.18 14:07. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse ... ::nColSpecHd := 0 If ValType( ::bDataEval( ::aColumns[ nCol ] ) ) == "L" .and. ; ::aColumns[ nCol ]:lCheckBox .and. ! ::lNoKeyChar // virtual checkbox ::PostMsg( WM_CHAR, VK_SPACE, 0 ) ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1364
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.10.18 15:34. Заголовок: SergKis пишет: Небо..
SergKis пишет: Добавил Благодарю за внимание
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1365
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.10.18 10:48. Заголовок: Подготовил перед отп..
Подготовил перед отпуском уже 5-ю бету для новой сборки библиотеки Ключевые изменения в этой сборке следующие Скрытый текст
* Fixed: Wrong row position of a WHOLEDROPDOWN menu of a ToolButton which was placed into a HORIZONTAL SplitBox control. Bug was reported by Natali Almeida. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: Missed a TabPage's hotkeys management in the functions _AddTabPage() and _DeleteTabPage() in a TAB control. It exists in the official version too. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\Tab) * Fixed: Problem with a ToolButton's hotkey assigning after a changing of the ToolButton 'Caption' property at runtime. It exists in the official version too. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo1.prg in folder \samples\Basic\CONTAINERS\TOOLBAR) * Enhanced: Added the set/get 'Visible' property for the forms: - ThisWindow|<FormName>.Visible [ := | --> ] lBoolean Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\NOTIFYICON) * Modified: The new Harbour function __mvGetDef() was used instead of the combination of the __mvExist()/__mvGet() in the MiniGUI core. Note: It is required a latest Harbour version for a correct work. The compatibility with xHarbour compiler and Harbour version 3.4 is provided. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Modified: The function WaitWindow() was improved for masking of a hidden border on form's top at Windows 10. Problem was reported by Pierpaolo Martinello. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\WAIT_WINDOW) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - New: Draw GRAPH in Bitmap is based upon the BosTaurus library. Added the new command GRAPH BITMAP for PIE|BARS|LINES|POINTS graph. An algorithm of 'Graph Bitmap' was updated for compatibility with a graphic module in the MiniGUI core. Note: It is highly recommended to use Graph Bitmap instead of Graph Command because the painting is much more efficient and does not produce a flicker. Based upon a contribution of S. Rathinagiri <srgiri/at/dataone.in>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\BTGraph) - New: Added an alternative syntax for the following controls: - SplitBox; - Tab; - Tree. (see into the appropriate header's files) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new method FilterData( cFilter, lFocus ) in the TSBrowse class. Contributed by Sergej Kiselev (see demo in folder \samples\Advanced\Tsb_ListBox) - modified the method GotoRec( nRec [, nRowPos ] ) in the TSBrowse class. Contributed by Igor Nazarov (see demo in folder \samples\Advanced\Tsb_GotoRec)
| Для этой сборки оставил компилятор BCC 5.51 с учетом мнения заинтересованных лиц Для последующих сборок выбираю бесплатный компилятор из - Embarcadero C++ 10.1 (32-bit) - MS Visual C++ 2017 compiler (32-bit и 64-bit) но все же склоняюсь к первому варианту Что посоветуете - есть ли смысл в изменении компилятора или "старое болото" лучше
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|