Автор | Сообщение |
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
[только новые]
|
|
Dima
|
| |
Пост N: 7256
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.12.20 19:16. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выложил декабрьскую сборку по адресу: |
| Спасибо , я так понял это последняя.... Может и под MINGW выложите ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1823
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.12.20 19:37. Заголовок: Dima пишет: Может и..
Dima пишет: цитата: | Может и под MINGW выложите ? |
| Посмотри в личке...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6855
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.12.20 08:41. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выложил декабрьскую сборку по адресу: |
| * New: 'Get Text Width Test' sample. Based upon a contribution at official HMG forum. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\GetTextWidth) Давно использую функции Сергея: FUNCTION GetTxtWidth( cText, nFontSize, cFontName, lBold ) // получить Width текста LOCAL hFont, nWidth DEFAULT cText := REPL('A', 2) , ; cFontName := _HMG_DefaultFontName, ; // из MiniGUI.Init() nFontSize := _HMG_DefaultFontSize, ; // из MiniGUI.Init() lBold := .F. IF Valtype(cText) == 'N' cText := repl('A', cText) ENDIF hFont := InitFont(cFontName, nFontSize, lBold) nWidth := GetTextWidth(0, cText, hFont) // ширина текста DeleteObject (hFont) RETURN nWidth FUNCTION GetTxtHeight( cText, nFontSize, cFontName, lBold ) // получить Height текста LOCAL hFont, nHeight DEFAULT cText := "B" , ; cFontName := _HMG_DefaultFontName, ; // из MiniGUI.Init() nFontSize := _HMG_DefaultFontSize, ; // из MiniGUI.Init() lBold := .F. hFont := InitFont( cFontName, nFontSize, lBold ) nHeight := GetTextHeight( 0, cText , hFont ) // высота шрифта DeleteObject( hFont ) RETURN nHeight Григорий, можно сделать совместить функции Сергея и новых функции ?
|
|
|
Dima
|
| |
Пост N: 7257
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.12.20 10:55. Заголовок: Andrey пишет: Давно..
Andrey пишет: цитата: | Давно использую функции Сергея |
| Юзай и дальше Andrey пишет: цитата: | Григорий, можно сделать совместить функции Сергея и новых функции ? |
| Новые функции не в ядре а в примерах , зачем совмещать что то ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6856
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.12.20 12:05. Заголовок: Хотелось бы иметь эт..
Хотелось бы иметь эти функции в ядре ! Замучился таскать их из проекта в проект. Да и маленькие примеры если делаешь, то опять нужно тащить эту функцию в пример. Dima пишет: цитата: | Новые функции не в ядре а в примерах , зачем совмещать что то ? |
| Да в ядре уже - смотри C:\MiniGUI\SOURCE\c_controlmisc.c
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3540
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.12.20 12:54. Заголовок: Andrey пишет Замучил..
Andrey пишет цитата: | Замучился таскать их из проекта в проект. |
| Используй, например, такой вариант. Сделай свой ch file в Include каталоге i_MySets.ch -------------- /* my ch */ #xtranslate IsFile( <f> ) => hb_FileExists( <f> ) FUNCTION GetTxtWidth( cText, nFontSize, cFontName, lBold ) // получить Width текста LOCAL hFont, nWidth DEFAULT cText := REPL('A', 2) , ; cFontName := _HMG_DefaultFontName, ; // из MiniGUI.Init() nFontSize := _HMG_DefaultFontSize, ; // из MiniGUI.Init() lBold := .F. IF Valtype(cText) == 'N' cText := repl('A', cText) ENDIF hFont := InitFont(cFontName, nFontSize, lBold) nWidth := GetTextWidth(0, cText, hFont) // ширина текста DeleteObject (hFont) RETURN nWidth FUNCTION GetTxtHeight( cText, nFontSize, cFontName, lBold ) // получить Height текста LOCAL hFont, nHeight DEFAULT cText := "B" , ; cFontName := _HMG_DefaultFontName, ; // из MiniGUI.Init() nFontSize := _HMG_DefaultFontSize, ; // из MiniGUI.Init() lBold := .F. hFont := InitFont( cFontName, nFontSize, lBold ) nHeight := GetTextHeight( 0, cText , hFont ) // высота шрифта DeleteObject( hFont ) RETURN nHeight А в prg делай #include <hmg.ch> #include <i_MySets.ch> ... Можно в hmg.ch добавить такую строку
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3541
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.12.20 13:34. Заголовок: PS Т.к. это крайняя ..
PS Т.к. это крайняя версия hmg (если и будет меняться, то редко) можешь смело в h_tbrowse.prg добавить #include <i_MySets.ch> // без стр. #xtranslate ... и пересобрать только tsbrowse.lib можешь еще свои доп. ф-ии определить в ch file. Если будет new версия, установишь и снова добавишь в h_tbrowse.prg #include <i_MySets.ch>
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 842
Зарегистрирован: 13.10.05
|
|
Отправлено: 13.12.20 21:05. Заголовок: gfilatov2002 Было з..
gfilatov2002 Было заявлено цитата: | исходники HMG-IDE Роберто Лопеза, которые я адаптировал для Минигуи |
| Где искать ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1824
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.12.20 15:23. Заголовок: Vlad04 пишет: Где и..
Vlad04 пишет: Посмотри в папке \samples\Advanced\hmgide
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 843
Зарегистрирован: 13.10.05
|
|
Отправлено: 17.12.20 11:51. Заголовок: BtnTextBox естествен..
BtnTextBox естественно нет ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1825
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.01.21 11:09. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Снова пересмотрел свои планы, и решил выпустить январскую сборку (с учетом последних исправлений ). Кратко, что нового: Скрытый текст
* Fixed: The symbol fonts were abandoned in the internal function _DefineFont() (introduced in the build 16.12). * Fixed: An Image index assigning was ignored in the Grid control with 'ColumnControls' property defined as NIL (introduced in the build 20.06). * The command DEFINE FONT <font> FONTNAME <name> ... will delete automatically a previous font definition instead of the error message. * Adaptation of MiniGUI core for compatibility with Borland/ Embarcadero C++ 7.20 64-bit compiler. * Added the Harbour contrib library for Cabinet file (*.CAB) compression and extraction. * Added the binary of HMG IDE tool of Roberto Lopez. * Updated SQLite3 library and the some examples.
|
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6872
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.01.21 11:35. Заголовок: Отличная новость ! ..
Отличная новость ! Поздравляю всех с Рождеством !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1826
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.01.21 11:47. Заголовок: Всем кому это интересно 8-)
Всем кому это интересно Завершена подготовка новой сборки 21.01 для BCC 5.8.2 и компиляторов Harbour и xHarbour, которая будет опубликована послезавтра. В основном сборка содержит исправления для обнаруженных недоработок, но есть и новое - добавлена библиотека HbCab для сжатия информации в формате CAB.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1827
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.21 10:29. Заголовок: Опубликована январск..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6873
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.01.21 12:46. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Опубликована январская сборка библиотеки |
| Отличная новость! Пере собрал свою прогу, вроде работает !
|
|
|
Haz
|
| |
Пост N: 1675
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.01.21 22:47. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Опубликована январская сборка |
| Григорий, спасибо.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6888
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.02.21 16:35. Заголовок: Небольшой баг, и я с..
Небольшой баг, и я с ним уже сталкивался. На форму положили большой LABEL1, далее если второй LABEL2 (меньшего размера) положить на первый, то нет показа. Второй LABEL2 беру из другого *.prg Если положить GETBOX - показ есть, всякие FRAME или CHECKLABEL есть. Странно... Если из другого *.prg ставлю так: @ aWin[1], aWin[2] LABEL Label_2 PARENT &cForm WIDTH aWin[3] HEIGHT nHLbl VALUE "text defect" ; SIZE 14 BOLD FONTCOLOR BLACK BACKCOLOR RED .... FORM_MyDefect(cForm,aTabWin,aBClr,aFont) .... FUNCTION FORM_MyDefect() ... DEFINE TAB Tab_ZDef OF &cForm ; ..... @ nRow1, nCol LABEL Label_3 .... // этот LABEL-3 показывается без PARENT &cForm Почему LABEL_2 не показывается, а LABEL-3 показывается ? И у объекта DEFINE TAB Tab_ZDef OF &cForm ; AT nTabRow, nTabCol WIDTH nTabWidth HEIGHT nTabHeight ; VALUE nPgValue BACKCOLOR aTabBColor ; FONT cPgFont SIZE nPgFSize BOLD ; HOTTRACK HTFORECOLOR BLACK HTINACTIVECOLOR GRAY Не показываются вкладки !!! Стоит убрать большой LABEL1 с формы все работает, показ всех объектов есть.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3563
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.02.21 17:12. Заголовок: gfilatov2002 Поправ..
gfilatov2002 Поправил в c_controlmisc.c HB_FUNC( INSERTVKEY ) { if( hb_parni( 2 ) != NULL ) { keybd_event ( ( BYTE ) hb_parni( 2 ), // virtual-key code 0, // hardware scan code 0, // flags specifying various function options 0 // additional data associated with keystroke ); } if( hb_parni( 1 ) != NULL ) { keybd_event ( ( BYTE ) hb_parni( 1 ), // virtual-key code 0, 0, 0 ); } if( hb_parni( 2 ) != NULL ) { keybd_event ( ( BYTE ) hb_parni( 2 ), // virtual-key code 0, // hardware scan code KEYEVENTF_KEYUP, // flags specifying various function options 0 // additional data associated with keystroke ); } } для использования с VK_MENU, VK_SHIFT, VK_CONTROL клавишами InsertVKey( , VK_MENU) // активация строки main menu InsertVKey(VK_V, VK_CONTROL) // Ctrl+V ... Включил в lib из примеров ф-ии HB_FUNC( SHELLEXECUTEEX ), HB_FUNC( TERMINATEPROCESS ) Скрытый текст
#pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> HB_FUNC( SHELLEXECUTEEX ) { SHELLEXECUTEINFO SHExecInfo; ZeroMemory(&SHExecInfo, sizeof(SHExecInfo)); SHExecInfo.cbSize = sizeof(SHExecInfo); SHExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; SHExecInfo.hwnd = HB_ISNIL( 1 ) ? GetActiveWindow() : (HWND) hb_parnl( 1 ); SHExecInfo.lpVerb = (LPCSTR) hb_parc( 2 ); SHExecInfo.lpFile = (LPCSTR) hb_parc( 3 ); SHExecInfo.lpParameters = (LPCSTR) hb_parc( 4 ); SHExecInfo.lpDirectory = (LPCSTR) hb_parc( 5 ); SHExecInfo.nShow = hb_parni( 6 ); if( ShellExecuteEx(&SHExecInfo) ) hb_retnl( (LONG) SHExecInfo.hProcess ); else hb_retnl( NULL ); } HB_FUNC( TERMINATEPROCESS ) { hb_retl( (BOOL) TerminateProcess( (HANDLE) hb_parnl( 1 ), 0 ) ); } #pragma ENDDUMP
| и сделал аналог _Execute(...) *-----------------------------------------------------------------------------* FUNCTION _ExecuteEx( hWnd , cOperation , cFile , cParameters , cDirectory , nState ) *-----------------------------------------------------------------------------* RETURN ShellExecuteEx( hb_defaultValue( hWnd, GetActiveWindow() ) , ; cOperation /* possible values are 'edit', 'explore', 'find', 'open', 'print' */ , ; hb_defaultValue( cFile, "" ) , cParameters , cDirectory , hb_defaultValue( nState, SW_SHOWNORMAL ) ) То есть: если PID есть, то приложение уже запустилось, если не сработал PostMessage(hWnd, WM_CLOSE, 0, 0) для внешнего приложения, делаем TerminateProcess( hPid ), если это не помогло, то запускаем cRun := %windir%/System32/taskkill.exe /T /IM <AppName.exe> через _ExecuteEx( 0, "runas", cRun, , , SW_HIDE ) С этими изменениями стало проще бороться с внешними приложениями
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1828
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.02.21 11:55. Заголовок: SergKis пишет: для ..
SergKis пишет: цитата: | для использования с VK_MENU, VK_SHIFT, VK_CONTROL клавишами |
| Благодарю за помощь, но для этих целей у нас уже есть специальная функция HMG_PressKey() Пример использования для эмуляции нажатия Ctrl + Shift + A: цитата: | HMG_PressKey( VK_CONTROL, VK_SHIFT, VK_A ) |
| Остальные функции для выгрузки сторонних приложений есть в примерах и библиотеке ProcInfo
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3564
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.02.21 12:19. Заголовок: gfilatov2002 пишет д..
gfilatov2002 пишет цитата: | для этих целей у нас уже есть специальная функция HMG_PressKey() |
| Эта ф-я нажимает и отпускает клавиши списком, как аналог AEval({ VK_CONTROL, VK_SHIFT, VK_A }, {|n| _PushKey( n ) }) совместно нажать VK_CONTROL + VK_V + отпустить VK_CONTROL не получится ShellExecuteEx(...) удобней исп., чем ShellExecute(...) может тогда заменить, а не таскать из примеров, если не добавлять
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|