Автор | Сообщение |
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; - новые и обновленные старые примеры (как обычно ).
| |
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[см. все]
|
|
gfilatov2002
|
| moderator
|
Пост N: 2074
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.12.22 14:08. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ссылку на юникодную версию ? |
| Отравил ссылки в Л.С. Andrey пишет: цитата: | ссылку для компилятора Microsoft ? |
| Там ссылка на версию Unicode для компилятора MS VC 2022
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2075
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.12.22 12:10. Заголовок: Всем кому это интересно
Выложил 2-е обновление сборки 22.12 с учетом последних исправлений и дополнений click here Завершена адаптация библиотеки для работы с последней доступной 64-битной версией компилятора Borland/Embarcadero C++ 7.40, который основан на LLVM/Clang C 3.3.1 (36707.161adda.9a76976) (64-bit) Мои наилучшие поздравления и пожелания всем форумчанам с наступающими праздниками! Желаю всем здоровья и удачи в Новом году
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2077
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.01.23 17:45. Заголовок: Всем кому это интересно
Поздравляю всех с сочельником и Рождеством Христовым! Завершена адаптация библиотеки для работы с последней доступной 64-битной версией компилятора Pelles ISO C Compiler 11.0, который по скорости работы не уступает Embarcadero C++ 7.40 (64-bit) Моя искренняя благодарность Андрею Верченко за поддержку моей работы!
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2078
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.01.23 17:03. Заголовок: Всем кому это интересно
Подготовил 1-й релиз-кандидат новой сборки 23.01, которая планируется к выпуску через две недели. Что нового: Скрытый текст
цитата: | * Fixed: GETBOX: GetProperty( Form, Getbox, 'PICTURE' ) call always returns an empty value. Bug was reported by Hans Marc at the Minigui forum. Contributed by Grigory Filatov <gfilatov@gmail.com> * Enhanced: The Child window may manage the 'Parent' property. You can get this property at runtime: - function syntax: GetProperty ( ChildForm, 'Parent' ) --> cParent - pseudo-OOP syntax: ChildForm.Parent --> cParent Requested by Mario Rossi. Contributed by Grigory Filatov <gfilatov@gmail.com> * Enhanced: The Image control supports now a changing of the STRETCH property at runtime. You can set this property with: - function syntax: SetProperty ( Form, Image, 'Stretch', .T.|.F. ) - pseudo-OOP syntax: Form.Image.Stretch := .T.|.F. It was a postponed modification. Contributed by Grigory Filatov <gfilatov@gmail.com> * Modified: Revised a font management with DEFINE FONT <font> FONTNAME <name> ... command: - restored a previous behavior of the function GetFontList() with the default charset parameter. The issue was reported by Vagner Sanches. Contributed by Grigory Filatov <gfilatov@gmail.com> (see demo in folder \samples\Applications\WordScribe) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - added the useful functions (and appropriate properties) below: - TreeItemGetAllValues(); - TreeItemGetChildValues(); - TreeItemGetSiblingValues(). - GetProperty -> AllValue, ChildValue, SiblingValue. Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov (see demo in folder \samples\Advanced\DirTree_2) * Updated: Pacified the C-warnings in the MiniGUI core for compatibility with the Pelles ISO C Compiler 11.0 (64-bit). Contributed by Grigory Filatov <gfilatov@gmail.com> * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.40.1 (from 3.40.0). Contributed by Grigory Filatov <gfilatov@gmail.com> * Updated: Harbour Compiler 3.2.0dev (SVN 2023-01-15 11:17): * Updated libpng library to 1.6.39 (from 1.6.38); * bumped copyright year to 2023. Contributed by Grigory Filatov <gfilatov@gmail.com> (look at ReadMe.txt in folder \harbour) * Updated: 'Inter-application communication' sample: - fixed to use temp folder instead of "C:\" to avoid write permission issues. Suggested by Grzegorz Wojnarowski (see in folder \samples\Basic\COMM) * Updated: 'Console+GUI mixed mode' sample. Contributed by Grzegorz Wojnarowski (see in folder \samples\Basic\MixedMode) * Updated: 'Virtual Grid with sorted columns' sample: - added workaround for inserted checkboxes. Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Basic\ON_QUERYDATA) * Updated: 'Tree Menu' sample by Bicahi Esgici: - updated with the latest changes in the Minigui core. Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Basic\TreeMenu) * Updated: 'MySql Client' sample: - code cleaning for warnings with Harbour switch -w3. Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Advanced\MySqlClient) * Updated: 'Virtual Keyboard' sample. Contributed by Kristjan Zagar (see in folder \samples\Advanced\OnScreenKeyboard) * Updated: 'Volume Info' sample: - using the function wapi_GetVolumeInformation() instead of local implementation. Contributed by Grigory Filatov <gfilatov@gmail.com> (see demo.prg in folder \samples\Advanced\VOLUME_INFO) * Updated: 'Windows Version' sample: - fixed Windows 11 detection. Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Advanced\WinVersion) * Updated: 'WMI Service usage' sample: - fixed 'Memory Info' detection. Contributed by Grigory Filatov <gfilatov@gmail.com> (see demo2.prg in folder \samples\Advanced\WMI_Service) |
|
| Если у вас есть интересные дополнения или исправления, то я с удовольствием добавлю их в эту сборку Прошу откликнуться всех, кому это интересно...
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7272
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.23 17:11. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | * Updated libpng library to 1.6.39 (from 1.6.38); |
| А где эта библиотека сидит ? Картинки PNG будут лучше отображаться в ТСБ и на формах ? А то если картинку на форме увеличиваешь, то качество теряется, ребристая становиться...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4193
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.23 15:10. Заголовок: gfilatov2002 пишет Е..
gfilatov2002 пишет цитата: | Если у вас есть интересные дополнения или исправления |
| Небольшие отличия THmgData() в моей версии Скрытый текст
... _METHOD Set( xKey, xVal ) METHOD Get( KEY, Def ) INLINE iif( KEY == NIL, ::aKey, hb_HGetDef( ::aKey, ::Upp( Key ), Def ) ) METHOD Del( Key ) INLINE ( iif( ::Pos( Key ) > 0, hb_HDel( ::aKey, ::Upp( Key ) ), Nil ), Self ) METHOD Pos( Key ) INLINE hb_HPos( ::aKey, ::Upp( Key ) ) METHOD Upp( Key ) INLINE iif( HB_ISCHAR( Key ) .AND. ::lUpp, Upper( Key ), Key ) METHOD Len() INLINE Len( ::aKey ) METHOD Keys() INLINE hb_HKeys( ::aKey ) METHOD Values() INLINE hb_HValues( ::aKey ) METHOD CloneHash() INLINE hb_HClone( ::aKey ) METHOD Json( cJ, lJ ) INLINE iif( HB_ISCHAR(cJ), ( cJ := SubS( cJ, At ("{", cJ) ), ; cJ := Left( cJ, RAt("}", cJ) ), ; ::Set(hb_jsonDecode( cJ ), ! Empty(lJ)) ), ; hb_jsonEncode( ::aKey, ! Empty(lJ) ) ) _METHOD GetAll( lAll ) _METHOD Eval( Block ) ERROR HANDLER ControlAssign ENDCLASS *-----------------------------------------------------------------------------* METHOD Set( xKey, xVal ) CLASS THmgData LOCAL k, v IF pCount() > 0 IF HB_ISHASH( xKey ) IF HB_ISLOGICAL(xVal) .and. xVal FOR EACH k, v IN hb_HKeys( xKey ), hb_HValues( xKey ) hb_HSet ( ::aKey, ::Upp( k ), v ) NEXT ELSE ::aKey := xKey ENDIF ELSE hb_HSet ( ::aKey, ::Upp( xKey ), xVal ) ENDIF ENDIF RETURN Self ...
| Хотя, METHOD Json( cJ, lJ ) не обязателен - для информации
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2079
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.01.23 17:47. Заголовок: SergKis пишет: Небо..
SergKis пишет: цитата: | Небольшие отличия THmgData() |
| Спасибо Поправил, конечно, но без необязательного метода.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7273
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.23 23:34. Заголовок: Ранее было в 2019 го..
Ранее было в 2019 году - SergKis пишет: цитата: | Может добавить функцию (по аналогии с HMG_GetFormControls()) ? K примеру FUNCTION HMG_GetForms( cTyp, lObj ) |
| А как узнать окно скрыто на экране или нет ? Т.е. получить признак окна Show/Hide у себя в функции: FUNCTION myGetWinList() LOCAL i, cS, aForm := HMG_GetForms() cS := "" FOR i := 1 TO LEN(aForm) cS += STR(i) + ", " + aForm + ", " + _HMG_aFormType[ i ] + ", " cS += HB_NtoS(_HMG_aFormHandles[ i ]) + CRLF NEXT MsgInfo(cS) Return NIL
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2080
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.23 15:12. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как узнать окно скрыто на экране или нет ? |
| Для этого можно использовать вызов функции цитата: | GetProperty( "Form1", "Visible" ) |
| Рабочий пример для проверки см. ниже Скрытый текст
#include <hmg.ch> Declare window form1 Declare window form2 Declare window form3 Function Main() DEFINE WINDOW MAIN AT 218, 380 WIDTH 237 HEIGHT 286 TITLE "" MAIN DEFINE BUTTON oButton1 ACTION (formOff(),FormON(1)) CAPTION "Form1" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 20 WIDTH 96 END BUTTON DEFINE BUTTON oButton2 ACTION (formOff(),FormON(2)) CAPTION "Form2" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 51 WIDTH 96 END BUTTON DEFINE BUTTON oButton3 ACTION (formOff(),FormON(3)) CAPTION "Form3" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 82 WIDTH 96 END BUTTON DEFINE BUTTON oButton4 ACTION MsgDebug( HMG_GetForms( "S" ) ) CAPTION "Form List" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 130 WIDTH 96 END BUTTON DEFINE BUTTON oButton5 ACTION ( SetProperty( "Form1", "Visible", .F. ), ; MsgDebug( GetProperty( HMG_GetForms( "S" )[1], "Visible" ) ) ) CAPTION "Is Form1 visible?" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 160 WIDTH 96 END BUTTON DEFINE BUTTON oButton6 ACTION RenameForms() CAPTION "Rename Forms" TRANSPARENT .T. COL 53 HEIGHT 26 ROW 186 WIDTH 96 END BUTTON END WINDOW CreateForm("Form1") CreateForm("Form2") CreateForm("Form3") activate window Form1,Form2,Form3,Main REturn .T. ********************************************************************************************************************************************** Procedure CreateForm(cForm) DEFINE WINDOW &(cForm) AT 286, 717 WIDTH 385 HEIGHT 351 TITLE "" //CHILD DEFINE LABEL oLabel1 VALUE cForm AUTOSIZE TRUE FONTBOLD TRUE VCENTERALIGN TRUE COL 123 FONTSIZE 30.00 HEIGHT 46.00 ROW 109 WIDTH 132 END LABEL END WINDOW Procedure FormON(nForm) switch nForm case 1 Form1.TopMost := .t. ; exit case 2 Form2.TopMost := .t. ; exit case 3 Form3.TopMost := .t. end Procedure FormOff Form1.TopMost := .f. ; Form2.TopMost := .f. ; Form3.TopMost := .f. Procedure RenameForms() LOCAL form FOR EACH form IN HMG_GetForms( "S" ) SetProperty(form,"title",form) NEXT
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4194
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.01.23 16:54. Заголовок: gfilatov2002 пишет Д..
gfilatov2002 пишет цитата: | Для этого можно использовать вызов функции GetProperty( "Form1", "Visible" ) |
| может исп. такие варианты #translate _IsWindowVisible( cForm ) => IsWindowVisible( GetFormHandle( cForm ) ) #translate IsFormVisible( FormName ) => IsWindowVisible( GetFormHandle( "FormName" ) )
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2081
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.23 17:15. Заголовок: SergKis пишет: исп...
SergKis пишет: Да, так можно сделать. Но все же предпочтительным в Минигуи является использование функций GetProperty()/SetProperty(). К вызову именно этих функций сводится использование псевдо-ООП в библиотеке.
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4195
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.01.23 17:49. Заголовок: gfilatov2002 пишет К..
gfilatov2002 пишет цитата: | К вызову именно этих функций сводится использование псевдо-ООП в библиотеке |
| + DoMetod() и больше ничего не надо , но мнемоника параметров и их позиции для окон и конторлов при исп. этих ф-ий тоже требует усилий. Не зря же целый каталог для препроцессора существует, что бы win api напрямую не использовать.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7274
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.23 22:25. Заголовок: Спасибо БОЛЬШОЕ ! По..
Спасибо БОЛЬШОЕ ! Получилось ! Только чуток не работает функции: FOR nI := 1 TO Len(aForm) cForm := aForm[nI] ? nI, cForm, _HMG_aFormType[nI], _HMG_aFormHandles[nI] ?? "Visible=", IsWindowVisible( GetFormHandle( cForm ) ) ?? GetProperty( cForm, "Visible" ) .... 1 Form_Main A 460206 Visible= .T. .T. 2 Form_Win1 S 1049612 Visible= .F. .F. 3 Form_Win2 S 393928 Visible= .F. .F. 4 Form_Win3 S 67248 Visible= .F. .F. 5 Form_Table_Dog '' 0 Visible= .T. .T. 6 Form_Table_Abon S 132806 Visible= .T. .T. Почему нет значения Form_Table_Dog '' 0 ? Форма на экране есть, а значения в логе нет ! т.е. не работает - _HMG_aFormType[nI], _HMG_aFormHandles[nI]
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4196
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.01.23 22:54. Заголовок: Andrey пишет т.е. не..
Andrey пишет цитата: | т.е. не работает - _HMG_aFormType[nI], _HMG_aFormHandles[nI] |
| посмотри значение _HMG_aFormDeleted[nI] для Form_Table_Dog (выведи для всех)
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7275
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.23 23:57. Заголовок: SergKis пишет: посм..
SergKis пишет: цитата: | посмотри значение _HMG_aFormDeleted[nI] для Form_Table_Dog |
| Вот так: 1 Form_Main A 2426566 .F. Visible= .T. .T. 2 Form_Win1 S 198358 .F. Visible= .F. .F. 3 Form_Win2 S 198356 .F. Visible= .F. .F. 4 Form_Win3 S 1115148 .F. Visible= .F. .F. 5 Form_Table_Dog '' 0 .T. Visible= .T. .T. 6 Form_Table_Abon S 983678 .F. Visible= .T. .T. 7 Form_Table_Zaivk S 852104 .F. Visible= .T. .T. Окно Form_Table_Dog с таблицей на экране есть ! Если сразу после главного окна открывать другое окно, то тогда оно = 0 !!! Вот открытие окон в другом порядке: 1 Form_Main A 3344120 .F. Visible= .T. .T. 2 Form_Win1 S 722656 .F. Visible= .F. .F. 3 Form_Win2 S 1311898 .F. Visible= .F. .F. 4 Form_Win3 S 788088 .F. Visible= .F. .F. 5 Form_Table_Zaivk '' 0 .T. Visible= .T. .T. 6 Form_Table_Abon S 395016 .F. Visible= .T. .T. 7 Form_Table_Dog S 592490 .F. Visible= .T. .T.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4197
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.01.23 15:43. Заголовок: gfilatov2002 Сделал..
gfilatov2002 Сделал правки небольшие (управление клавишами на Preview HbPrinter) Проверял SAMPLES\Advanced\REPORT_GENERATOR_2\demo2.prg Скрытый текст
... #define WM_VSCROLL 0x0115 #define SB_LINEUP 0 #define SB_LINEDOWN 1 ... METHOD Preview() CLASS HBPrinter ... DEFINE WINDOW HBPREVIEW ; AT ahs[ 1, 1 ], ahs[ 1, 2 ] ; WIDTH ahs[ 1, 6 ] HEIGHT ahs[ 1, 5 ] ; TITLE aopisy[ 1 ] ICON 'zzz_Printicon' ; MODAL NOSIZE ; FONT 'Arial' SIZE 9 ; ON INIT ( DoMethod("HBPREVIEW1", "SetFocus") ) ... BUTTON B1 CAPTION aopisy[ 2 ] PICTURE 'hbprint_close' ACTION {|| ::PrevClose( .T. ) } SEPARATOR BUTTON B10 CAPTION aopisy[ 11 ] PICTURE 'hbprint_option' ACTION {|| ::PrintOption() } SEPARATOR BUTTON B8 CAPTION aopisy[ 9 ] PICTURE 'hbprint_zoomin' ACTION {|| scale := scale * 1.25, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } BUTTON B9 CAPTION aopisy[ 10 ] PICTURE 'hbprint_zoomout' ACTION {|| scale := scale / 1.25, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } SEPARATOR IF iloscstron > 1 BUTTON B4 CAPTION aopisy[ 5 ] PICTURE 'hbprint_top' ACTION {|| page := ::CurPage := 1, HBPREVIEW.combo_1.VALUE := page, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } BUTTON B5 CAPTION aopisy[ 6 ] PICTURE 'hbprint_back' ACTION {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } BUTTON B6 CAPTION aopisy[ 7 ] PICTURE 'hbprint_next' ACTION {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } BUTTON B7 CAPTION aopisy[ 8 ] PICTURE 'hbprint_end' ACTION {|| page := ::CurPage := iloscstron, HBPREVIEW.combo_1.VALUE := page, ::PrevShow(), DoMethod("HBPREVIEW1", "SetFocus") } SEPARATOR ENDIF ... DEFINE WINDOW HBPREVIEW1 ; ... IF iloscstron > 1 _DefineHotKey( "HBPREVIEW1", 0, VK_PRIOR, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // back _DefineHotKey( "HBPREVIEW1", 0, VK_NEXT, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // next[ _DefineHotKey( "HBPREVIEW1", 0, VK_END, {|| page := ::CurPage := iloscstron, HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // end _DefineHotKey( "HBPREVIEW1", 0, VK_HOME, {|| page := ::CurPage := 1, HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // home _DefineHotKey( "HBPREVIEW1", 0, VK_LEFT, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // Left // _DefineHotKey( "HBPREVIEW1", 0, VK_UP, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // up _DefineHotKey( "HBPREVIEW1", 0, VK_RIGHT, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // right // _DefineHotKey( "HBPREVIEW1", 0, VK_DOWN, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // down ENDIF _DefineHotKey( "HBPREVIEW1", 0, VK_UP , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEUP , 0 ) } ) _DefineHotKey( "HBPREVIEW1", 0, VK_DOWN , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEDOWN, 0 ) } ) _DefineHotKey( "HBPREVIEW1", 0, VK_INSERT, {|| scale := scale * 1.25, ::PrevShow() } ) _DefineHotKey( "HBPREVIEW1", 0, VK_DELETE, {|| scale := scale / 1.25, ::PrevShow() } ) ...
| т.е. 1. фокус на окно отображения листов 2. Insert\Delete - zoom +\- листа 3. стрелки вверх, вниз перемещают строки листа вверх, вниз (PgUp, PgDown перемещают листы, как раньше) Наверно, надо для zoom задействовать еше левую\правую кнопки мыши и scroll на колесико, но не помню как на окно задействовать эти события Может это, вообще, лишнее ? PS. Поправил выше текст, вынес назначения клавиш за ENDIF (выделил цветом и bold) это с учетом 1 листа
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2082
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.01.23 14:07. Заголовок: Как и обещал, выложи..
Как и обещал, выложил финальную сборку 23.01 click here Также обновил Unicode версию библиотеки по старому адресу для Сергея Ваши комментарии приветствуются...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4198
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.01.23 20:18. Заголовок: gfilatov2002 пишет Т..
gfilatov2002 пишет цитата: | Также обновил Unicode версию библиотеки по старому адресу для Сергея |
| Спасибо Покрутил еще HbPrinter-Preview, вот что вышло Скрытый текст
METHOD Preview() CLASS HBPrinter ... DEFINE WINDOW HBPREVIEW ; ... END TOOLBAR _DefineHotKey( "HBPREVIEW", 0, VK_UP , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEUP , 0 ) } ) _DefineHotKey( "HBPREVIEW", 0, VK_DOWN , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEDOWN, 0 ) } ) _DefineHotKey( "HBPREVIEW", 0, VK_INSERT, {|| scale := scale * 1.25, ::PrevShow() } ) _DefineHotKey( "HBPREVIEW", 0, VK_DELETE, {|| scale := scale / 1.25, ::PrevShow() } ) AAdd( ahs, { 0, 0, 0, 0, 0, 0, GetFormHandle( "hbpreview" ) } ) ... DEFINE WINDOW HBPREVIEW1 ; WIDTH ahs[ 2, 6 ] - 15 HEIGHT ahs[ 2, 5 ] - ahs[ 3, 5 ] - ahs[ 4, 5 ] - 10 ; VIRTUAL WIDTH ahs[ 2, 6 ] - 5 ; VIRTUAL HEIGHT ahs[ 2, 5 ] - ahs[ 3, 5 ] - ahs[ 4, 5 ] ; TITLE aopisy[ 13 ] SPLITCHILD GRIPPERTEXT ".." _HMG_aFormClickProcedure [ GetFormIndex("HBPREVIEW1") ] := {|| IF _HMG_MouseState == 1 // WM_LBUTTONDOWN scale := scale * 1.25 ::PrevShow() ELSEIF _HMG_MouseState == 2 // WM_RBUTTONDOWN scale := scale / 1.25 ::PrevShow() ELSEIF _HMG_MouseState == 3 // WM_MBUTTONDOWN ENDIF DoMethod("HBPREVIEW", "SetFocus") Return Nil } AAdd( ahs, { 0, 0, 0, 0, 0, 0, GetFormHandle( "hbpreview1" ) } ) ... IF iloscstron > 1 _DefineHotKey( "HBPREVIEW1", 0, VK_PRIOR, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // back _DefineHotKey( "HBPREVIEW1", 0, VK_NEXT, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // next _DefineHotKey( "HBPREVIEW1", 0, VK_END, {|| page := ::CurPage := iloscstron, HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // end _DefineHotKey( "HBPREVIEW1", 0, VK_HOME, {|| page := ::CurPage := 1, HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // home _DefineHotKey( "HBPREVIEW1", 0, VK_LEFT, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // Left // _DefineHotKey( "HBPREVIEW1", 0, VK_UP, {|| page := ::CurPage := iif( page == 1, 1, page - 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // up _DefineHotKey( "HBPREVIEW1", 0, VK_RIGHT, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // right // _DefineHotKey( "HBPREVIEW1", 0, VK_DOWN, {|| page := ::CurPage := iif( page == iloscstron, page, page + 1 ), HBPREVIEW.combo_1.VALUE := page, ::PrevShow() } ) // down ENDIF _DefineHotKey( "HBPREVIEW1", 0, VK_UP , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEUP , 0 ), DoMethod("HBPREVIEW", "SetFocus") } ) _DefineHotKey( "HBPREVIEW1", 0, VK_DOWN , {|| SendMessage( GetFormHandle("HBPREVIEW1"), WM_VSCROLL, SB_LINEDOWN, 0 ), DoMethod("HBPREVIEW", "SetFocus") } ) _DefineHotKey( "HBPREVIEW1", 0, VK_INSERT, {|| scale := scale * 1.25, ::PrevShow(), DoMethod("HBPREVIEW", "SetFocus") } ) _DefineHotKey( "HBPREVIEW1", 0, VK_DELETE, {|| scale := scale / 1.25, ::PrevShow(), DoMethod("HBPREVIEW", "SetFocus") } ) _HMG_ShowContextMenus := .F. END WINDOW ...
| Работает как хотелось (кроме прокрутки строк колесом)
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2083
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.01.23 22:29. Заголовок: SergKis пишет: Покр..
SergKis пишет: цитата: | Покрутил еще HbPrinter-Preview |
| Неплохо, но как-то привычнее менять масштаб с помощью серых клавиш +/- вместо Ins/Del. SergKis пишет: цитата: | кроме прокрутки строк колесом |
| Можно попробовать задействовать такой код в обработчике события окна WM_MOUSEWHEEL IF HiWord ( wParam ) == WHEEL_DELTA IF GetScrollPos ( hwnd , SB_VERT ) < 25 SendMessage ( hwnd , WM_VSCROLL , SB_TOP , 0 ) ELSE SendMessage ( hwnd , WM_VSCROLL , SB_PAGEUP , 0 ) ENDIF ELSE IF GetScrollPos ( hwnd , SB_VERT ) >= GetScrollRangeMax ( hwnd , SB_VERT ) - 10 SendMessage ( hwnd , WM_VSCROLL , SB_BOTTOM , 0 ) ELSE SendMessage ( hwnd , WM_VSCROLL , SB_PAGEDOWN , 0 ) ENDIF ENDIF ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4199
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.01.23 22:50. Заголовок: gfilatov2002 пишет к..
gfilatov2002 пишет цитата: | как-то привычнее менять масштаб с помощью серых клавиш +/- вместо Ins/Del |
| На ноутах нет серых клавиш +/-, а у клиентов их уже больше чем стационарных, но добавить дополнительно можно. цитата: | задействовать такой код в обработчике события окна WM_MOUSEWHEEL |
| Хотелось что то цивильное, как блок в _HMG_aFormClickProcedure[...], колесико всегда есть на окнах
| |
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[см. все]
|
|
|