Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №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: 4360
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.12.14 23:27. Заголовок: Andrey пишет: Высла..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 699
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.12.14 23:53. Заголовок: Andrey пишет: Выс..
Andrey пишет: цитата: | Выслал членский взнос на развитие библиотеки |
| Благодарю за поддержку Просто к сведению. Выпустил сегодня первую бету для следующей сборки. Кратко, что нового: - функции WinAPI, создающие визуальные эффекты, перенесены из примеров в ядро библиотеки. Соответственно, добавлены следующие команды: цитата: | - SET WINDOW cFormName TRANSPARENT TO nAlphaBlend - SET WINDOW cFormName [ TRANSPARENT ] TO OPAQUE - SET WINDOW cFormName TRANSPARENT TO COLOR aColor - FLASH WINDOW cFormName CAPTION COUNT nTimes INTERVAL nMilliseconds - FLASH WINDOW cFormName TASKBAR COUNT nTimes INTERVAL nMilliseconds - FLASH WINDOW cFormName [ ALL ] COUNT nTimes INTERVAL nMilliseconds - ANIMATE WINDOW cFormName MODE nFlags INTERVAL nMilliseconds - ANIMATE WINDOW cFormName MODE nFlags |
| - обновлена сборка Харбора: Пржемек добавил оптимизацию создания массивов, которая существенно уменьшает генерируемый код. - выполнена проверка работы библиотеки с компилятором MinGW свежей версии 4.9.2, который будет использован в следующей сборке вместо текущей версии 4.6.1; - добавлен пример простой телефонной книги с сортировкой по группе или по имени абонента; - обновлены два примера: Framework и утилита Sqlite browser Пока все
|
|
|
Softlog86
|
| |
Пост N: 200
Зарегистрирован: 03.12.08
|
|
Отправлено: 16.12.14 12:11. Заголовок: каким образом можно ..
каким образом можно отблагодарить (в денежной форме) ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 700
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.12.14 12:27. Заголовок: Softlog86 пишет: ка..
Softlog86 пишет: цитата: | каким образом можно отблагодарить |
| Мои персональные данные (для перевода) есть у Андрея. Также принимаю пожертвования через систему PayPal на почтовый адрес: buran1985@gmail.com P.S. Курс гривны к доллару на черном рынке уже 20,50 Слов нет...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3844
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.12.14 13:02. Заголовок: Dima пишет: Координ..
Dima пишет: Не знаю как у вас, а у нас в России это (перевод) просто сделать. Идешь в любой салон сотовой связи "Связной", говоришь что нужно перевести деньги на Украину. Говоришь ФИО кому переводишь, отдаешь деньги и получаешь чек. Перевод идет через систему "Золотая Корона". Отправляешь смс-ку с кодом перевода из чека и получатель может получить деньги. Как и где получают, я не знаю, еще ни разу не получал...
|
|
|
marrinass
|
| |
Пост N: 5
Зарегистрирован: 07.02.13
|
|
Отправлено: 16.12.14 16:43. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Мои персональные данные (для перевода) есть у Андрея. |
| А зачем Андрею лишние телодвижения? Тут, что то не чисто - мужики ...
|
|
|
Softlog86
|
| |
Пост N: 201
Зарегистрирован: 03.12.08
|
|
Отправлено: 18.12.14 22:33. Заголовок: Да не ..... PayPal д..
Да не ..... PayPal для меня проще ...... Лет пять уже всё покупаю через Ebay/Paypal .....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 706
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.01.15 13:41. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил RC 3 для следующей сборки. Финальный релиз запланирован через неделю, на день, когда Microsoft представит новую сборку Windows 10, которая цитата: | станет «новой главой Windows 10». |
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 707
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.15 11:22. Заголовок: Новый релиз библиоте..
|
|
|
Softlog86
|
| |
Пост N: 209
Зарегистрирован: 03.12.08
|
|
Отправлено: 21.01.15 12:17. Заголовок: Если можно вкратце -..
Если можно вкратце - что новенького ? :)
|
|
|
Haz
|
| |
Пост N: 414
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.01.15 13:29. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Новый релиз библиотеки для компилятора BCC выложил, как и обещал, на официальном сайте библиотеки по адресу: |
| Григорий , СПАСИБО ! Softlog86 пишет: цитата: | Если можно вкратце - что новенького ? :) |
| 2015/01/21: HMG Extended Edition 2.4.3 Published. * Fixed: Windows problem of overlap between ToolBar with 'Bottom' clause and StatusBar. This correction was moved to MiniGUI core from a sample (introduced in the build 2.3.6). * Modified: A default font size was changed to 9pt for WinVista or upper. It is Microsoft default value of Dialog font size for above systems. - New: Added C-function GetSystemFont() for accurately detect of the system default font name and font size. Added also the separate pseudo-functions GetDefaultFontName() and GetDefaultFontSize() for convenient access to these parameters. Note: This setting may be override with using of SET FONT TO command. * Updated: Synchronized Extended HMG for compatibility with Official HMG: - New: Added Visual Effects on Windows - SET WINDOW cFormName TRANSPARENT TO nAlphaBlend where nAlphaBlend is from 0 to 255 (completely transparent = 0, opaque = 255) - SET WINDOW cFormName [ TRANSPARENT ] TO OPAQUE - SET WINDOW cFormName TRANSPARENT TO COLOR aColor (see demos in folder \samples\Advanced\Transparency) - FLASH WINDOW cFormName CAPTION COUNT nTimes INTERVAL nMilliseconds - FLASH WINDOW cFormName TASKBAR COUNT nTimes INTERVAL nMilliseconds - FLASH WINDOW cFormName [ ALL ] COUNT nTimes INTERVAL nMilliseconds (see demo in folder \samples\Advanced\FlashWindow) - ANIMATE WINDOW cFormName MODE nFlags INTERVAL nMilliseconds - ANIMATE WINDOW cFormName MODE nFlags (see demo in folder \samples\Basic\AnimateWindow) * Updated: Header file i_hmgcompat.ch for compatibility with Official HMG: - added pseudo-functions DoEvents() and SetCursorSystem(). * Updated: Harbour function HB_SETCODEPAGE() guarded as HMG_LEGACY_OFF in Minigui core. This obsolete function was removed in Harbour 3.0 and superseded by hb_cdpSelect(). * Updated: Added codepages setting for Dutch, Turkish and Swedish languages at minigui initialization. It's needed for proper file system actions with national symbols. * Updated: Minigui EXTERN list was generated automatically with using hbmk2 utility. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.8 (from 3.8.8dev). * Updated: Harbour Compiler 3.2.0dev (SVN 2015-01-19 13:24). * New: 'Simple Phone Book' sample. Based upon a contribution of Dragan Cizmarevic <dragancesu(at)gmail.com> * Updated: 'Internet Explorer ActiveX' sample: - silent script errors at loading of the internet pages. * Updated: 'Framework for SDI application' sample. * Updated: 'Clipbrd Clear' sample: added an internal Clipboard Viewer. * Updated: 'Resize It' sample. * Updated: 'Uninstall Editor' sample. * Updated: 'Sqlite browser' utility: minor correction.
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 708
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.15 13:46. Заголовок: Softlog86 пишет: чт..
Softlog86 пишет: 1) исправление конфликта местоположения ToolBar с классом Bottom и статусной строки перенесено из примера в ядро библиотеки; 2) модифицировано определение имени и размера шрифта по умолчанию в зависимости от используемой OS на основе новой функции GetSystemFont(); 3) добавлены команды для создания визуальных эффектов для окон и управления их "прозрачностью"; 4) добавлена установка коловой страницы при старте программы для голландского, турецкого и шведского языка в дополнение к уже имеющимся языкам. Это требуется Харбору для правильной работы с файловой системой, использующей национальные символы; 5) обновлена сборка Харбора и библиотека SQLITE3 до актуальных свежих версий; 6) добавлен один новый и обновлены некоторые старые примеры; 7) другие мелкие изменения в коде ядра. Также для MinGW-сборки использована свежая версия С-компилятора 4.9.2, датированная декабрем 2014, которая взята на сайте http://tdm-gcc.tdragon.net
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 162
Зарегистрирован: 15.09.05
|
|
Отправлено: 29.01.15 10:56. Заголовок: Обычный BROWSE
Обычный BROWSE "Сильно Моргает" , наверное исполняются слишком много REFRESH ? даже и при такой команде. FORM_1.BROWSE_1.VALUE := FILE1->( RECNO() ) И в примерах тоже замечается при передвижении в верх и в низ курсора . Если есть способ подавить етот еффект , поделитесь пожалуйста !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 709
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.01.15 11:16. Заголовок: sashaBG пишет: Если..
sashaBG пишет: цитата: | Если есть способ подавить етот еффект |
| Да, это возможно за счет замедления перерисовки Listview путем добавления стиля LVS_EX_DOUBLEBUFFER. #define LVS_EX_DOUBLEBUFFER 0x10000 ListView_ChangeExtendedStyle ( GetControlHandle('GridName','FormName'), LVS_EX_DOUBLEBUFFER, NIL ) где используется новая С-функция // ListView_ChangeExtendedStyle ( hWnd, [ nAddStyle ], [ nRemoveStyle ] ) HB_FUNC( LISTVIEW_CHANGEEXTENDEDSTYLE ) { HWND hWnd = (HWND) hb_parnl (1); DWORD Add = (DWORD) hb_parnl (2); DWORD Remove = (DWORD) hb_parnl (3); DWORD OldStyle, NewStyle, Style; OldStyle = ListView_GetExtendedListViewStyle (hWnd); NewStyle = (OldStyle | Add) & ( ~Remove ); Style = ListView_SetExtendedListViewStyle ( hWnd, NewStyle ); hb_retnl ((LONG) Style); } Предупреждение. При использовании этого стиля наблюдается общее замедление работы Browse Благодарю за Вашу поддержку
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 163
Зарегистрирован: 15.09.05
|
|
Отправлено: 29.01.15 15:13. Заголовок: Компилятор не находит последних двух функции
Компилятор не находит последних двух функции ListView_GetExtendedListViewStyle ListView_SetExtendedListViewStyle Я чегото не добавляю в проект наверно !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 710
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.01.15 16:02. Заголовок: sashaBG пишет: List..
sashaBG пишет: цитата: | ListView_GetExtendedListViewStyle ListView_SetExtendedListViewStyle |
| Это макросы, которые д.б. определены в файле bcc55\include\commctrl.h следующим образом цитата: | #define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s)) #define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) |
| sashaBG пишет: цитата: | Я чегото не добавляю в проект |
| #include <commctrl.h>
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 164
Зарегистрирован: 15.09.05
|
|
Отправлено: 29.01.15 19:11. Заголовок: Спасибо Григорий !
Спасибо Григорий ! Так гораздо лучше , но только BORLAND-ом через MINGW не компилируется ccw.prg:1210:1: warning: implicit declaration of function 'ListView_GetExtendedListViewStyle' [-Wimplicit-function-declaration] ccw.prg:1212:1: warning: implicit declaration of function 'ListView_SetExtendedListViewStyle' [-Wimplicit-function-declaration] hbmk2: Linking... ccw.exe .hbmk/win/mingw/ccw.o:ccw.c:(.text+0x40d): undefined reference to `ListView_GetExtendedListViewStyle' .hbmk/win/mingw/ccw.o:ccw.c:(.text+0x41f): undefined reference to `ListView_SetExtendedListViewStyle' Я заметил что такое моргание в более старых версий не наблюдалось например 2.3.4 , 2.3.5
|
|
|
Dima
|
| |
Пост N: 4439
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.01.15 21:15. Заголовок: sashaBG в Mingw тож..
sashaBG в Mingw тоже есть commctrl.h gfilatov2002 пишет: цитата: | #define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s)) #define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) |
| там это один в один
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 711
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.01.15 11:42. Заголовок: sashaBG пишет: Так ..
sashaBG пишет: Ниже рабочий пример, построенный на тестовой базе с 32 полями из поставки минигуи Скрытый текст
#include "minigui.ch" #define LVS_EX_DOUBLEBUFFER 0x10000 Function Main SET MULTIPLE OFF WARNING SET PROGRAMMATICCHANGE OFF SET NAVIGATION EXTENDED SET BROWSESYNC ON DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'MiniGUI Browse Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTables() ; ON RELEASE CloseTables() DEFINE MAIN MENU POPUP 'File' ITEM 'Set Browse Value' ACTION Form_1.Browse_1.Value := 10 ITEM 'Get Browse Value' ACTION MsgInfo ( Form_1.Browse_1.Value ) ITEM 'Refresh Browse' ACTION Form_1.Browse_1.Refresh() SEPARATOR ITEM 'Exit' ACTION Form_1.Release() END POPUP POPUP 'Help' ITEM 'About' ACTION MsgInfo ("MiniGUI Browse Demo") END POPUP END MENU DEFINE STATUSBAR STATUSITEM 'HMG Power Ready' STATUSITEM '<Enter> / Double Click To Edit' WIDTH 200 STATUSITEM 'Alt+A: Append' WIDTH 120 END STATUSBAR DEFINE BROWSE Browse_1 ROW 10 COL 10 WIDTH 610 HEIGHT 390 HEADERS { 'Field 1' , 'Field 2' , 'Field 3', 'Field 4', 'Field 5' , 'Field 6' , 'Field 7', 'Field 8' , 'Field 9' , 'Field 10' , 'Field 11' , 'Field 12' , 'Field 13' , 'Field 14' , 'Field 15' , 'Field 16' , 'Field 17' , 'Field 18' , 'Field 19' , 'Field 20' , 'Field 21' , 'Field 22' , 'Field 23' , 'Field 24' , 'Field 25' , 'Field 26' , 'Field 27' , 'Field 28' , 'Field 29' , 'Field 30' , 'Field 31' , 'Field 32' } WIDTHS { 100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 ,100 } WORKAREA MuchFields FIELDS { 'c1','c2','c3','c4','c5','c6','c7','c8','c9','c10','c11','c12','c13','c14','c15','c16','c17','c18','c19','c20','c21','c22','c23','c24','c25','c26','c27','c28','c29','c30','c31','c32' } VALUE 1 LOCK .T. ALLOWEDIT .T. ALLOWAPPEND .T. INPLACEEDIT .T. END BROWSE END WINDOW ListView_ChangeExtendedStyle ( GetControlHandle('Browse_1','Form_1'), LVS_EX_DOUBLEBUFFER, NIL ) CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Procedure OpenTables() Use MuchFields Shared Return Procedure CloseTables() Use Return #pragma BEGINDUMP #include <windows.h> #include <commctrl.h> #include "hbapi.h" // ListView_ChangeExtendedStyle ( hWnd, [ nAddStyle ], [ nRemoveStyle ] ) HB_FUNC( LISTVIEW_CHANGEEXTENDEDSTYLE ) { HWND hWnd = (HWND) hb_parnl( 1 ); DWORD Add = (DWORD) hb_parnl( 2 ); DWORD Remove = (DWORD) hb_parnl( 3 ); DWORD OldStyle, NewStyle, Style; OldStyle = ListView_GetExtendedListViewStyle( hWnd ); NewStyle = ( OldStyle | Add) & ( ~Remove ); Style = ListView_SetExtendedListViewStyle( hWnd, NewStyle ); hb_retnl ((LONG) Style); } #pragma ENDDUMP
| Как говорится, почувствуйте разницу. Ваши комментарии приветствуются...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 469
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.01.15 12:49. Заголовок: gfilatov2002 пишет:К..
gfilatov2002 пишет: цитата: | Как говорится, почувствуйте разницу |
| Так очень даже хорошо. А так даже Header убирать можно: #define LVS_EX_DOUBLEBUFFER 0x10000 #define LVS_NOCOLUMNHEADER 0x00004000 ... ListView_ChangeExtendedStyle ( GetControlHandle('Browse_1','Form_1'), LVS_EX_DOUBLEBUFFER, NIL ) SetWindowStyle ( GetControlHandle('Browse_1','Form_1'), LVS_NOCOLUMNHEADER, .T. ) ... gfilatov2002
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 165
Зарегистрирован: 15.09.05
|
|
Отправлено: 01.02.15 21:16. Заголовок: Не справился с MINGW опять !
Не справился с MINGW опять ! Пример компилируется хорошо в MiniGUI с Borland для MINGW я использую build.bat из поставки что то видимо надо гдето прописать пробовал добавить в строчке HBMK2 i f:\hmg\mingw\include - результат тот же
|
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 166
Зарегистрирован: 15.09.05
|
|
Отправлено: 03.02.15 11:45. Заголовок: Получилось и под MINGW :)
Получилось и под MINGW ! Перенес функцию ListView_ChangeExtendedStyle в c_browse.c , перекомпилировал библиотеку и все заработало не знаю почему в секцию #pragma BEGINDUMP .... #pragma ENDDUMP компилятор не понимал наличие #include <commctrl.h>
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 712
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.02.15 12:43. Заголовок: sashaBG Добавил сле..
sashaBG Добавил следующую запись в текуший changelog: цитата: | * Enhanced: The Browse control supports the optional 'PaintDoubleBuffer' clause. The ListView will be painted via double-buffering, which reduces flicker considerably but a bit slows output. Requested by Sasha Savov <savovs/at/gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see browse6.prg in folder \samples\Basic\BROWSE_3) |
|
и проверил работу Browse под BCC и MINGW. Так что эта фича будет доступна в следующей сборке опционально.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3938
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.02.15 15:19. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | optional 'PaintDoubleBuffer' |
| А для TBROWSE тоже хотелось бы убрать мерцание при изменение размеров.... Попробуй менять размеры в примере MiniGUI\SAMPLES\Advanced\Tsb_config - сразу видно это мерцание.....
|
|
|
Dima
|
| |
Пост N: 4466
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.02.15 19:46. Заголовок: MiniGui работает в п..
MiniGui работает в потоках (в MT режиме) ?
|
|
|
Haz
|
| |
Пост N: 448
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.02.15 20:15. Заголовок: Работает :sm12: ..
Работает
|
|
|
Dima
|
| |
Пост N: 4467
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.02.15 20:24. Заголовок: Haz OK. Понял...
Haz OK. Понял.
|
|
|
Haz
|
| |
Пост N: 449
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.02.15 20:24. Заголовок: #include "minigu..
#include "minigui.ch" #include "common.ch" #include "fileio.ch" #include "hbthread.ch" Func Main() DEFINE WINDOW Form_0 ; AT 0,0 ; WIDTH 400 ; HEIGHT 200 ; TITLE 'Hello World!' ; MAIN ; ON INIT {|| hb_threadDetach( hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @P1() ) )} END WINDOW CENTER WINDOW Form_0 ACTIVATE WINDOW Form_0 return nil Func P1() DEFINE WINDOW Form_1 ; AT 100,100 ; WIDTH 400 ; HEIGHT 200 ; TITLE 'Hello World! ThRead' ; CHILD END WINDOW ACTIVATE WINDOW Form_1 Return nil
|
|
|
Dima
|
| |
Пост N: 4468
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.02.15 20:54. Заголовок: Haz Спасибо за прим..
Haz Спасибо за примерчик. Я наверное когда созрею , темку то отдельную создам. У меня там 5 потоков и вывод только в одном окне , но это так , детали.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 713
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.15 13:25. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил RC 3 для следующей сборки 2.4.4. Финальный релиз запланирован на следующей неделе цитата: | * Fixed: Splitboxed ToolBar with 'Bottom' clause and StatusBar reposition problem (introduced in the build 2.4.3). Reported by Pierpaolo Martinello <pier.martinello[at]alice.it>. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Enhanced: The Browse control supports the optional 'PaintDoubleBuffer' clause. The ListView will be painted via double-buffering, which reduces flicker considerably but a bit slows output. Requested by Sasha Savov <savovs/at/gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see browse6.prg in folder \samples\Basic\BROWSE_3) * Enhanced: The GRID control supports the optional ON CHECKBOXCLICKED event when the CHECKBOXES clause was used. Contributed by Dr. Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\CheckBox_Grid) * Enhanced: Added 'Increment' property for interior SPINNER at GRID control with the COLUMNCONTROLS clause. It accepts a fourth parameter, like this: { 'SPINNER', 1, 20, 5 }, where 1 is low value, 20 is high value and 5 is increment (default value is 1). Requested by Pablo Cesar at official HMG forum. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\Grid_3) * Modified: Added automatic calculation of buffer size in the C-function GetPrivateProfileString(). It is important for the proper loading of the long strings (f.e. arrays) from an ini file. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Grid_9) * Updated: DRAW GRAPH (no pie types) correction of a default title height and X-axes label's width for maximum DataMask "9,999,999.99". Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Charts) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.8.2 (from 3.8.8.1). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\SQLITE_2) * Updated: Harbour Compiler 3.2.0dev (SVN 2015-02-11 18:48). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Using of a colored Grid as Achoice' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com> (see demo3.prg in folder \samples\Basic\Grid_4) * New: 'Add a control on the specified Tab page at runtime' sample. Based upon a contribution of S.Rathinagiri <srgiri@dataone.in> (see demo2.prg in folder \samples\Basic\Tab_3) * Updated: 'AdoRDD' sample: added 'Append' test. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\ADORDD) * Updated: 'JPG Viewer' sample: minor change. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\JpgViewer) * Updated: 'Run Dialog Box' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Applications\RunCmd) |
|
|
|
|
Dima
|
| |
Пост N: 4477
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.02.15 13:32. Заголовок: gfilatov2002 А можн..
gfilatov2002 А можно сделать что б в StatusBar можно цвет и цвет фона менять ?
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3943
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 14:58. Заголовок: Dima пишет: А можно..
Dima пишет: цитата: | А можно сделать что б в StatusBar можно цвет и цвет фона менять ? |
| Присоединяюсь к пожеланию. Давно уже об этом писали....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 714
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.15 16:35. Заголовок: Dima пишет: можно с..
Dima пишет: цитата: | можно сделать что б в StatusBar можно цвет и цвет фона менять ? |
| С помощью WinAPI надо переопределить statusbar item как самописный ( ownerdraw), послав ему собщение SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ). В первом приближении это может выглядеть как в примере ниже Скрытый текст
#include "i_winuser.ch" #include "minigui.ch" #define APP_TITLE "Hello World!" #define SB_SETTEXT (WM_USER+1) #define SBT_OWNERDRAW 0x1000 #define IDS_STATUSBAR 0 /* */ Function Main SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE APP_TITLE ; MAIN DEFINE STATUSBAR FONT "Arial" SIZE 12 hwndSb := GetControlHandle ( _HMG_ActiveMessageBarname, _HMG_ActiveFormName ) STATUSITEM "New Value" STATUSITEM "Dummy" END STATUSBAR END WINDOW SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ) CENTER WINDOW Win_1 ACTIVATE WINDOW Win_1 Return Nil *----------------------------------------------------------* Function MyEvents ( hWnd, nMsg, wParam, lParam ) *----------------------------------------------------------* do case **************************************************** case nMsg == WM_DRAWITEM **************************************************** a := GETDRAWITEMRC(lParam) TextOut( a[1], a[2]+1, "New Value", GETDRAWITEMDC(lParam) ) otherwise Events( hWnd, nMsg, wParam, lParam ) endcase Return (0) *-----------------------------------------------------------------------------* #pragma BEGINDUMP #include "hbapi.h" #include "windows.h" #ifdef __XHARBOUR__ #define HB_STORNL( n, x, y ) hb_stornl( n, x, y ) #else #define HB_STORNL( n, x, y ) hb_storvnl( n, x, y ) #endif HB_FUNC( GETDRAWITEMDC ) { hb_retnl( ( LONG ) ( ( ( DRAWITEMSTRUCT FAR * ) hb_parnl( 1 ) )->hDC ) ); } HB_FUNC( GETDRAWITEMRC ) { RECT rcItem = ( ( DRAWITEMSTRUCT FAR * ) hb_parnl( 1 ) )->rcItem; hb_reta( 2 ); HB_STORNL( (LONG) rcItem.left, -1, 1 ); HB_STORNL( (LONG) rcItem.top, -1, 2 ); } HB_FUNC ( TEXTOUT ) { HDC hdc = (HDC) hb_parnl( 4 ); SetTextColor( hdc, RGB ( 0, 0, 255 ) ); SetBkMode( hdc, TRANSPARENT ); TextOut( hdc, hb_parni(1), hb_parni(2), hb_parc(3), strlen(hb_parc(3)) ) ; SetBkMode( hdc, OPAQUE ); DeleteDC( hdc ) ; } #pragma ENDDUMP
|
|
|
|
Dima
|
| |
Пост N: 4479
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.02.15 16:44. Заголовок: gfilatov2002 В прин..
gfilatov2002 В принципе ожидаемый ответ ;) Спасибо ! Просто хотелось что бы эта фича работала опционально
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 720
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.02.15 11:21. Заголовок: Новый релиз библиоте..
Новый релиз библиотеки для компилятора BCC выложил, как и обещал, на официальном сайте библиотеки по адресу: http://hmgextended.com/files/CONTRIB/hmg-2.4.4-setup.zip Также доступна полная сборка для компилятора MinGW по адресу: http://hmgextended.com/files/CONTRIB/hmg244-mingw.exe и компактный архив для свежей версии компилятора xHarbour http://hmgextended.com/files/CONTRIB/xhmg244_xhb10099.zip Что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс PaintDoubleBuffer для Browse; - новое событие ON CHECKBOXCLICKED для GRID с классом CHECKBOXES; - добавлено свойство Increment при редактировании ячейки SPINNER для GRID; - добавлена установка индивидуальных свойств BackColor и FontColor для каждого участка StatusBar; - обновлена библиотека SQLITE3 до финальной версии 3.8.8.2; - обновлен компилятор Harbour 3.2.0dev; - пересобрана Hmgs-IDE с текущей версией библиотеки; - добавлены новые и обновлены некоторые старые примеры Благодарю за внимание
|
|
|
krutoff
|
| |
Пост N: 168
Зарегистрирован: 17.10.05
|
|
Отправлено: 25.02.15 18:24. Заголовок: У меня перестала раб..
У меня перестала работать на xHarbour команда COPY FILE - на выходе получаю файл с нулевым объемом. Вместо этого попробовал функцию FileCopy - все проходит Ок.
|
|
|
Dima
|
| |
Пост N: 4537
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.02.15 19:16. Заголовок: krutoff пишет: У ме..
krutoff пишет: цитата: | У меня перестала работать на xHarbour команда COPY FILE |
| А если эту команду юзануть в консоли то работает ? Мне кажется Минигуи не при чем.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 727
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.02.15 21:12. Заголовок: krutoff пишет: пере..
krutoff пишет: цитата: | перестала работать на xHarbour команда COPY FILE |
| Эту проблему в xHarbour уже исправили, начиная со сборки 10110 цитата: | 2015-02-22 11:00 UTC-0300 Luiz Rafael Culik <luiz@xharbour.com.br> * source/rtl/copyfile.c ! minor fix for 0 byte file created |
|
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 169
Зарегистрирован: 15.09.05
|
|
Отправлено: 07.03.15 16:07. Заголовок: Возможно ли MiniGUI 64bit ?
Возможно ли MiniGUI 64bit ? на примере Оригинальной HMG
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 736
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.03.15 12:43. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил pre-release для следующей сборки 2.4.5. Финальный релиз запланирован на следующей неделе цитата: | * Modified: Added the extended style INFOTIP at Browse and Grid definition by default. When a listview displays an item that is too wide for its column the text gets truncated to fit. The Browse and Grid controls with above style will display a hint containing the full text when you hover the mouse over the item. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\ListViewEx) * Enhanced: The Grid control supports the optional 'NoSortHeaders' clause. This clause specifies that column headers do not work like buttons. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\ListViewEx) * Enhanced: The Grid control supports the optional 'PaintDoubleBuffer' clause. Requested by Alen Uzelac <alen@bbm.hr>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\ListViewEx) * Enhanced: The CheckBox control supports an optional ON ENTER clause now. Sample code: @ 10,10 CHECKBOX CheckBox_1 CAPTION "CheckBox_1" ; ON ENTER This.Value := !(This.Value) allows to use the <Enter> key similar to the <Space> key for switching of a checkbox value. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Revised the colored status item's handling: - Changed: using of the public _HMG_SYSDATA array was removed. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - New: Added TIMESTAMP type support (first attempt). Contributed by Janusz Pora <januszpora@onet.eu> - Changed: Minor correction in a handling of the GetBox 'Picture' property at an editing. Contributed by Igor Nazarov. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.8.3 (from 3.8.8.2). Upgrading from the previous release is optional. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: MPM utility: - update for compatibility with a recent change in a handling of harbour.exe command line. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \Utils\MPM) * Updated: Harbour Compiler 3.2.0dev (SVN 2015-03-11 16:23): * Updated: HbSqlDD library source code (see in folder \Source\HbSqlDD); * Updated: HbODBC library source code (see in folder \Source\HbODBC). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Charts SQLITE3' sample is based on 'Charts ADO' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Charts_2) * New: 'ListView with Extended styles' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\ListViewEx) * Updated: 'Show of icons from the system library shell32.dll': - added saving of the icon resources to disk. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\ExtractIcon) * Updated: 'Simple Phone Book' sample: misc bugfix. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Applications\PHONE_BOOK) * Updated: 'Data Base Assistant' utility: minor changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \Utils\DBA) |
| sashaBG пишет: цитата: | Возможно ли MiniGUI 64bit ? |
| В настоящий момент - нет, поскольку это требует переработки Си-кода на использование указателей вместо 32-разрядных чисел и, следовательно, длмтельного тестирования после таких серьезных изменений. Вторая причина заключается в том, что фирма Микрософт пока обеспечивает выполнение 32-разрядных приложений в среде 64-bit, т.к. не может игнорировать наличие сотен миллионов 32-разрядных систем в мире. Попросту говоря, 32-разрядных код будет выполняться в 64-разрядной среде, а вот наоборот - нет. Наконец, третья причина - в том, что переход на 64-bit рельсы однозначно потребует смены Си-компилятора на бесплатный MinGW со всей его громоздкостью и уменьшением скорости сборки приложений, что бывает критично на этапе отладки, когда требуетя после небольших изменений кода быстро посмотреть результат. В этом случае по скорости сборки приложений BCC далеко впереди...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 737
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.03.15 09:44. Заголовок: Новый релиз библиоте..
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4060
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.15 16:31. Заголовок: Спасибо ! :sm36: *..
Спасибо ! * Updated: 'Show of icons from the system library shell32.dll': - added saving of the icon resources to disk. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\ExtractIcon) А можно сделать запись иконок других форматов, кроме 16х16 и 32х32 ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 739
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.03.15 22:56. Заголовок: Andrey пишет: А мож..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4061
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.15 23:21. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Неа, я не осилю... и не сделаю...
|
|
|
alexandr11
|
| |
Пост N: 15
Зарегистрирован: 17.12.14
|
|
Отправлено: 21.03.15 08:15. Заголовок: Скажите пожалуйста -..
Скажите пожалуйста - как в MiniGUI обстоят дела с UNICODE? каковы перспективы?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 549
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.04.15 17:23. Заголовок: gfilatov2002 правил..
gfilatov2002 правильно, ли я понял, что используемые в меню image, подвисают в воздухе (утечка памяти), т.к. на них не делаются DeleteObject(...). c_menu.c (line 337): HB_FUNC( MENUITEM_SETBITMAPS ) хендлеры image: HBITMAP himage1; HBITMAP himage2; после LoadImage(...) не запоминаются в массивах MiniGui, чтобы освободится при разрушении окна. т.е. использовать main\context menu надо (лучше) без image ? или я что то не увидел\не так понял ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 742
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.04.15 20:37. Заголовок: SergKis Вы абсолютн..
SergKis Вы абсолютно правы. Видимо, оригинальный автор библиотеки посчитал, что главное меню приложения существует все время работы, и будет разрушаться автоматически, когда приложение закрывается. SergKis пишет: цитата: | использовать main\context menu надо (лучше) без image ? |
| Насколько я знаю, такой проблемы не существует при использовании MENUSTYLE EXTENDED При использовании стандартного меню надо учитывать следующее: цитата: | Значки выбора и сброса отметки должны быть одноцветными. Система использует Булев оператор И (AND), чтобы комбинировать значки меню так, чтобы белая часть стала прозрачной, а черная часть становилась цветом пункта меню. Если Вы используете цветные точечные рисунки (значки), результаты могут быть непредсказуемые. |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 550
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.04.15 23:33. Заголовок: gfilatov2002 пишет:...
gfilatov2002 пишет: цитата: | ... что главное меню приложения ... |
| с главным меню, действительно, неважно, основная утечка возникает на контексном меню по правому клику мыши. Спасибо за развернутый ответ. Пойду дальше ...
|
|
|
krutoff
|
| |
Пост N: 169
Зарегистрирован: 17.10.05
|
|
Отправлено: 14.04.15 11:27. Заголовок: Ошибка в xHarbour
После установки версии 2.4.5 xHarbour у меня появилась ошибка в h_tbrowse.prg. При компиляции примера из ..\miniGui\SAMPLES\Advanced\TsBrowse\Compile.bat: Error: Unresolved external '_HB_FUN_HB_HOUR' referenced from D:\MINIGUI\XLIB\TSBROWSE.LIB|h_tbrowse Error: Unresolved external '_HB_FUN_HB_MINUTE' referenced from D:\MINIGUI\XLIB\TSBROWSE.LIB|h_tbrowse Error: Unresolved external '_HB_FUN_HB_SEC' referenced from D:\MINIGUI\XLIB\TSBROWSE.LIB|h_tbrowse
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 743
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.04.15 11:37. Заголовок: krutoff пишет: появ..
krutoff пишет: цитата: | появилась ошибка в h_tbrowse.prg |
| Вы правы! Эта ошибка уже исправлена в новой сборке, которая выйдет на следующей неделе А пока рекомендую использовать библиотеку tsbrowse из предыдущей сборки (отличия минимальные).
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 574
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.15 19:07. Заголовок: SergKis пишет:правил..
SergKis пишет: цитата: | правильно, ли я понял, что используемые в меню image, подвисают в воздухе (утечка памяти), т.к. на них не делаются DeleteObject(...). |
| gfilatov2002 пишет: для исправления ситуации предлагаю: Скрытый текст
c_menu.c HB_FUNC( MENUITEM_SETBITMAPS ) { HBITMAP himage1=0; HBITMAP himage2=0; himage1 = ( HBITMAP ) LoadImage( GetModuleHandle(NULL), hb_parc_t(3), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR ); if( himage1 == NULL ) himage1 = ( HBITMAP ) LoadImage( 0, hb_parc_t(3), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTCOLOR ); if( !newStyle ) { // BAA 04.04.2015 HBITMAP himage2; himage2 = ( HBITMAP ) LoadImage( GetModuleHandle(NULL), hb_parc_t(4), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR ); if( himage2 == NULL ) himage2 = ( HBITMAP ) LoadImage( 0, hb_parc_t(4), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTCOLOR ); SetMenuItemBitmaps( ( HMENU ) hb_parnl(1), hb_parni(2), MF_BYCOMMAND, himage1, himage2 ); } else { MENUITEMINFO MenuItemInfo; MYMENUITEM *pmyMenuItem; MenuItemInfo.cbSize = sizeof( MENUITEMINFO ); MenuItemInfo.fMask = MIIM_DATA; GetMenuItemInfo( ( HMENU ) hb_parnl(1), hb_parni(2), FALSE, &MenuItemInfo ); pmyMenuItem = ( MYMENUITEM * ) MenuItemInfo.dwItemData; if( pmyMenuItem->hBitmap != NULL ) DeleteObject( pmyMenuItem->hBitmap ); pmyMenuItem->hBitmap = himage1; } hb_reta( 2 ); HB_STORNL( ( LONG ) himage1, -1, 1 ); HB_STORNL( ( LONG ) himage2, -1, 2 ); } h_menu.prg ... *-----------------------------------------------------------------------------* Procedure _DefineMenuItem ( caption , action , name , Image , checked , disabled , cMessage, font, check_image ) *-----------------------------------------------------------------------------* Local Controlhandle , mVar , k , id , ContextMenuHandle, ahImage:={0,0} ... If Valtype ( image ) != 'U' ahImage := MenuItem_SetBitMaps ( _HMG_xMenuPopuphandle [_HMG_xMenuPopupLevel ] , id , image , '' ) EndIf ... _HMG_aControlPicture [k] := "" _HMG_aControlContainerHandle [k] := ahImage _HMG_aControlFontName [k] := '' ... h_controlmisc.prg ... *-----------------------------------------------------------------------------* FUNCTION _EraseControl ( i, p ) *-----------------------------------------------------------------------------* ... в DO CASE добавить обработку CASE t == 'MENU' IF hb_IsArray( _HMG_aControlContainerHandle [ i ] ) .and. len( _HMG_aControlContainerHandle [ i ] ) == 2 IF ! empty( _HMG_aControlContainerHandle [ i ][ 1 ] ) DeleteObject ( _HMG_aControlContainerHandle [ i ][ 1 ] ) ENDIF IF ! empty( _HMG_aControlContainerHandle [ i ][ 2 ] ) DeleteObject ( _HMG_aControlContainerHandle [ i ][ 2 ] ) ENDIF ENDIF ...
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 744
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.04.15 10:10. Заголовок: SergKis пишет: для ..
SergKis пишет: цитата: | для исправления ситуации предлагаю |
| Благодарю за Ваше предложение! Я уже сделал подобные исправления для новой сборки (хотя немного упростил код с учетом того, что в качестве image2 передается пустая строка). Текущий changelog для справки можно посмотреть ниже Скрытый текст
* Fixed: Possible memory leak in the main/context/notify menu with 'Image' clause. Problem was reported by Russian user SergKis. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see menudemo.prg in folder \samples\Basic\Menu) * Enhanced: The ReadOnly property is supported in the function SetProperty() for the Spinner control. You can set/get this property at runtime: - function syntax: SetProperty ( Form, Control, 'ReadOnly', lState ) GetProperty ( Form, Control, 'ReadOnly' ) - pseudo-OOP syntax: Form.Spinner.ReadOnly := lState Form.Spinner.ReadOnly --> lState Contributed by Grigory Filatov <gfilatov@inbox.ru> * Enhanced: The ComboBox control with DisplayEdit clause supports a changing of the ReadOnly property at runtime: - function syntax: SetProperty ( Form, Control, 'ReadOnly', lState ) - pseudo-OOP syntax: Form.ComboBox.ReadOnly := lState Requested by Vianei Moreira de Lemos <vianeimoreira@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\COMBO_4) * Updated: DRAW GRAPH: correction of the default height of title and labels for the font's size more than 10. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Histogram) * Updated: Changed DEFAULT TO command in MiniGUI core to the functions hb_default()/__defaultNIL() and hb_defaultValue() for Harbour requiring compatibility. It will set the value to the default one even when the variable has any other type, not only NIL. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - updated for xHarbour compatibility after a recent change. Based upon a contribution of Ivanil Marcelino. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.9 (from 3.8.8.3). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-04-09 00:20). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Anchored Child window' sample. Based upon a contribution of Pablo Cesar. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\MoveWindow) * New: 'Read a text from an another application' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. Revised by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\ExternalApp_3) * Updated: 'Get DIR List' sample: pacified the warnings at prg level. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\DirList) * Updated: 'Histogram' sample: added a print graph routine. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Histogram) * Updated: 'Simple DBU' sample: minor changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Applications\MiDBU) * Updated: 'Process Killer' sample: minor changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Applications\PROCESS_KILLER) * Updated: 'Sqlite browser' utility: added column's metadata handling. Contributed by Janusz Pora <januszpora@onet.eu> (see in folder \Utils\SqlDBU)
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 745
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.04.15 10:53. Заголовок: Новый релиз библиоте..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4128
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.15 12:31. Заголовок: Пере собрал нескольк..
Пере собрал несколько программ. Полёт - нормальный...
|
|
|
Softlog86
|
| |
Пост N: 232
Зарегистрирован: 03.12.08
|
|
Отправлено: 24.04.15 16:28. Заголовок: Аналогично . Только ..
Аналогично . Только шрифт стал мельче ..... тот который по умолчанию (в GUI)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 747
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.04.15 12:01. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил beta 3 для следующей сборки 2.4.7. Финальный релиз запланирован на конец мая Скрытый текст
* Fixed: Old bug at the closing of Edit or Append splitboxed dialog in a Browse control with <Alt+F4> hotkey pressing. Problem was reported by Attila Kovacs <k1attila12@yahoo.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: Program crash at the modification of a column's header after adding a new column in the Grid control. Problem was reported by Gilbert Vaillancourt. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\ReadXLS) * Fixed: Problem with assigning of the RichEditBox 'FontColor' property. You can establish this propery at definition and modify at runtime: - function syntax: SetProperty ( Form, Control, 'FontColor', BLUE ) - pseudo-OOP syntax: Form.RichEditBox.FontColor := BLUE Bug was reported by Gilbert Vaillancourt. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Richedit) * Changed: The HMG_HPDF library was moved from samples to folder Source\HMG_HPDF. Based upon a contribution of S.Rathinagiri <srgiri@dataone.in>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\PDF_PRINT) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.10dev (from 3.8.9). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-04-27 17:21). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Check User Login in the transparent form' sample. Based upon a contribution of Bicahi Esgici <esgici@gmail.com>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Login_2) * New: 'Test a mouse click on the one picture which is divided into 3 parts' sample. Based upon a contribution of Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Basic\Picture_Coords) * New: 'ShellExecuteEx() function using' sample. Based upon a contribution of Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Advanced\ShellExec) * Updated: 'InterNet State Checker' sample: - using of a macro definition for calling of the DLL functions. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\INET_CHECKER)
| Поздравляю всех с наступающими праздниками!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4153
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.05.15 18:38. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Поздравляю всех с наступающими праздниками! |
| Присоединяюсь ! С прошедшими праздниками и наступающим 9-мая !!! Вопрос по ходу за одно (мож кто ответит...): у объекта LABEL после показа можно как то поменять TOOLTIP ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 748
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.05.15 14:42. Заголовок: Andrey пишет: у объ..
Andrey пишет: цитата: | у объекта LABEL после показа можно как то поменять TOOLTIP ? |
| Попробуй цитата: | Form_1.Label_1.Tooltip := "New tip !" |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4154
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.05.15 18:52. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Form_1.Label_1.Tooltip := "New tip !" |
| Не работает ! Form_1.Label_1.Tooltip := "New tip !" + CRLF + "stroka 2!" Или в подсказке не работает CRLF ? Определяю вначале формы, выполняется функция расчёта, пытаюсь заменить, что то меняется, но потом сообщение всё равно первоначальное !
|
|
|
Dima
|
| |
Пост N: 4786
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.05.15 19:09. Заголовок: Andrey пишет: Или в..
Andrey пишет: цитата: | Или в подсказке не работает CRLF ? |
| А без него пашет ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4155
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.05.15 20:15. Заголовок: Dima пишет: А без н..
Dima пишет: Да, сейчас проверил, пашет без него... Я сразу делал с CRLF, из-за этого и подумал что не работает...
|
|
|
Softlog86
|
| |
Пост N: 238
Зарегистрирован: 03.12.08
|
|
Отправлено: 12.05.15 13:09. Заголовок: После обновления Min..
После обновления MiniGUI обнаружил бяку : организовываю рамку (FRAME ) а размер шрифта для CAPTION - как не меняй - всё-равно мелкий - точек примерное 3-5 в высоту . PS: оказывается при инициализации указание высоты шрифта никак не учитывается , необходимо уже после инициализации принудительно задать : WIN1.FRAME_1.FONTSIZE:=10 ....
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 626
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.05.15 12:54. Заголовок: gfilatov2002 Можно ..
gfilatov2002 Можно ли добавить в TsBrowse ? h_tbrowse.prg: ... METHOD LButtonDown( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse // line 6485 ... ElseIf lFooter lMChange := ::lMChange ::lMChange := .F. If ::aColumns[ nAtCol ]:bFLClicked != Nil Eval( ::aColumns[ nAtCol ]:bFLClicked, uPar1, uPar2, ::nAt , Self ) // добавить If ::oWnd:hCtlFocus != Nil .and. ::oWnd:hCtlFocus != ::hWnd Return 0 EndIf EndIf ::lMChange := lMChange ::DrawFooters() ElseIf lSpecHd .and. ::lEditableHd lMChange := ::lMChange ::lMChange := .F. If ::aColumns[ nAtCol ]:bSLClicked != Nil Eval( ::aColumns[ nAtCol ]:bSLClicked, uPar1, uPar2, ::nAt , Self ) // добавить ... при lHeader есть Eval( ::aActions[ nAtCol ], Self, uPar1, uPar2 ) а в этих местах нет.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 750
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.05.15 12:27. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно ли добавить в TsBrowse ? |
| Благодарю за подсказку. Уже добавил эти изменения
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4179
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.15 12:42. Заголовок: Григорий ! А почему ..
Григорий ! А почему при использовании функции \MiniGUI\SAMPLES\Advanced\INET_CHECKER нужно обязательно указывать библиотеку calldll ? Если забудешь указать, программа всё равно собирается и функция IsConnected() всегда выдает F
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 752
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.05.15 12:54. Заголовок: Andrey пишет: функц..
Andrey пишет: цитата: | функции \MiniGUI\SAMPLES\Advanced\INET_CHECKER |
| Этот пример уже исправлен в новой сборке и больше не требует использования библиотеки calldll Новая сборка запланирована к выходу на следующей неделе...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 753
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.05.15 10:49. Заголовок: Новый релиз библиоте..
|
|
|
santy
|
| |
Пост N: 328
Зарегистрирован: 16.12.08
|
|
Отправлено: 27.05.15 12:35. Заголовок: Поздравляю Григорий,..
Поздравляю Григорий, а Вы переживали Всё что делается, делается к лучшему. Удачи в новом проэкте.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4207
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.05.15 14:01. Заголовок: santy пишет: Удачи ..
santy пишет: Присоединяюсь !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4241
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.06.15 11:36. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Этот пример уже исправлен в новой сборке и больше не требует использования библиотеки calldll |
| Не работает ! Собрал свой пример без calldll и пишет что инет не доступен. Подсоединил опять calldll - заработало. Григорий, посмотрите пожалуйста ещё MODAL окно, не работают ограничивающие размеры... Пост N: 4233 http://clipper.borda.ru/?1-1-0-00000427-000-220-0-1433857394
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 755
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.06.15 13:14. Заголовок: Andrey пишет: посмо..
Andrey пишет: цитата: | посмотрите пожалуйста ещё MODAL окно, не работают ограничивающие размеры |
| Посмлтрел пример в папке samples\Basic\MinMaxSize для MODAL окна - все работает нормально
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 756
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.06.15 13:17. Заголовок: Andrey пишет: Собра..
Andrey пишет: Речь шла о переработанном примере в папке INET_CHECKER, который сейчас не использует библиотеку calldll
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4245
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.06.15 13:30. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Речь шла о переработанном примере в папке INET_CHECKER, который сейчас не использует библиотеку calldll |
| Понял. Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4246
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.06.15 13:48. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Посмлтрел пример в папке samples\Basic\MinMaxSize для MODAL окна - все работает нормально |
| Пример работает. Я его модифицировал немножко... ... он перестал работать ... https://cloud.mail.ru/public/7oL2/QXYYUuyyu Что не так делаю ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 757
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.06.15 20:44. Заголовок: Andrey пишет: он пе..
Andrey пишет: Благодарю за пример - уже исправил старую опечатку при обработке модальных окон До выхода новой сборки с исправлением используйте присвоение, как это сделано в примере samples\Basic\MinMaxSize
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 758
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.06.15 22:41. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня beta 3 для следующей сборки 2.4.8. Финальный релиз запланирован на следующей неделе Скрытый текст
* Fixed: Bug at changing of a position of a Panel Window at runtime. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: Bug at changing of the font attributes of a Label control with 'Transparent' property at runtime. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Label) * Fixed: Old typo at the assigning of the MaxWidth and MaxHeight properties in a Modal window at his definition. Problem was reported by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\MinMaxSize) * Changed: The function ProcessMessages() is defined as pseudo-function. This function is wrapper for the new C-function DoEvents(). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\NoWait) * Changed: The C-functions GetComputerName() and GetUserName() are defined as pseudo-functions now. They are the wrappers for the corresponding [x]Harbour functions. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\GetUserName) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - the C-functions SysRefresh() and nMakeLong() are defined as pseudo-functions. They are the wrappers for the corresponding MiniGUI functions. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.11dev (from 3.8.10.2). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-06-02 13:31). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * Updated: HMGS-IDE v.1.3.0. Project Manager and Two-Way Visual Form Designer. This version is considered as Beta release. Contributed by Walter Formigoni <walter.formigoni@uol.com.br> (look for what's new at changelog.txt in folder \Ide) * Updated: 'Print Pie Graph' sample: - added a context menu for the pie graph. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\GraphPrint)
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4267
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.15 17:07. Заголовок: Григорий, подскажи п..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 759
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.06.15 17:19. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как изменить цвета для него ? |
| Для этого элемента управления используются только системные цвета, которые назначаются внутри Си-кода цитата: | SetTextColor( pdis->hDC, GetSysColor( COLOR_WINDOWTEXT ) ); SetBkColor( pdis->hDC, GetSysColor( COLOR_WINDOW ) ); |
| Использование пользовательских цветов не предусмотрено
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4268
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.15 18:13. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Использование пользовательских цветов не предусмотрено |
| Спасибо ! Хоть легче стало...
|
|
|
Dima
|
| |
Пост N: 4910
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.15 13:52. Заголовок: gfilatov2002 В упор..
gfilatov2002 В упор не вижу библы BosTaurus под MINGW , что делать ? PS Прикрутил сам.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 760
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.15 19:47. Заголовок: Dima пишет: не вижу..
|
|
|
Dima
|
| |
Пост N: 4911
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.15 21:32. Заголовок: gfilatov2002 Понял ..
gfilatov2002 Понял , не понял пока одного , для чего выкладывать обрезанную версию под MINGW если есть полная ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 762
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.15 23:01. Заголовок: Dima пишет: для чег..
Dima пишет: цитата: | для чего выкладывать обрезанную версию под MINGW |
| Библиотека BosTaurus является сопутствующей (не основной) для минигуи, поэтому для уменьшения установочного файла она не была включена в поставку для компилятора MINGW Добавление этой либы самостоятельно - довольно простая задача Но если есть потребность, я могу добавить ее в поставку на постоянной основе. Пишите...
|
|
|
Dima
|
| |
Пост N: 4915
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.15 23:15. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Но если есть потребность, я могу добавить ее в поставку на постоянной основе. |
| Вопрос не в этом Я просто ожидал что сборка под BCC и MINGW будет одинакова , по меньшей мере в плане библиотек. PS Xharbour сборку не копал но судя по тому что она "компактная" в ней тоже нет всего того что есть в сборке под BCC , о либах я. С примерами все ясно.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 763
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.06.15 10:05. Заголовок: Новый релиз библиоте..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4304
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.06.15 15:54. Заголовок: Пересобрал несколько..
Пересобрал несколько проектов. Полёт нормальный !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4305
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.06.15 10:31. Заголовок: Григорий, смотрю что..
Григорий, смотрю что в новом релизе нет примера из Прием-передача данных5.7z между программами ? Классный пример же, можно присоединить к любой программе и записывать действия пользователя или делать обмен между своими программами.
|
|
|
Dima
|
| |
Пост N: 5127
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.07.15 17:09. Заголовок: gfilatov2002 METHOD..
gfilatov2002 METHOD ReSize Для правильной установки автоширины было AEval( ::aColSizes, {|n| nTotPix += n } ) стало AEval( ::aColumns, {|n| IF( n:lVisible, nTotPix += n:nWidth, nil ) } ) do events ******************************************* Что бы курсор не мигал при достижении верхней/нижней видимой границы бровса. METHOD GoUp было If ! ::lHitTop If ! ::lAppendMode ::DrawLine() EndIf стало If ! ::lHitTop If ! ::lAppendMode .and. ::nRowPos > 1 ::DrawLine() EndIf METHOD GoDown было If ! ::lHitBottom If ! ::lAppendMode .and. ! ::lIsTxt ::DrawLine() EndIf стало If ! ::lHitBottom If ! ::lAppendMode .and. ! ::lIsTxt .and. ::nRowPos < nLines ::DrawLine() EndIf Сырец c_TBrowse.c HARBOUR HB_FUN_TSBRWSCROLL () было rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); стало rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); if( iRows > 0 ) rct.bottom -= nHeightCell; else rct.top += nHeightCell; ************************************************************ Тот же сырец. void DrawBitmap Что бы BMP был прозрачным в бровсе было dwRaster = SRCCOPY; стало dwRaster = SRCAND; ********************************************************** Теперь глюк , METHOD PageUp Поймать его сложно. Но если (кол-во записей-1) делится на цело на кол-во строк что помещаются на экран , то его видно. Пролистываем несколько страниц вниз а затем жмем и держим PageUP , глюк на лицо. было If nSkipped == 0 ::lHitTop := .T. Else If -nSkipped < nLines nRecNo := If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) стало If nSkipped == 0 ::lHitTop := .T. Else If -nSkipped < nLines .or. ::nAt == 1 nRecNo := If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) ********************************************************** правки от SergKis добавление символьного имени колонки для возможности обращения по нему TSCOLUMN DATA cName INIT "" // Имя колонки изменение метода GetColumn() TSBROWSE для поддержки символьного имени METHOD GetColumn( nCol ) CLASS TSBrowse Default nCol := 1 IF hb_IsString( nCol ) nCol := Max( AScan( ::aColumns, {|oCol| Upper(oCol:cName)==Upper(nCol) } ), 1) RETURN ::aColumns[ nCol ] // returns a Column object ENDIF If nCol < 1 nCol := 1 ElseIf nCol > Len( ::aColumns ) nCol := Len( ::aColumns ) EndIf Return ::aColumns[ nCol ] // returns a Column object изменение метода LoadFilds() TSBROWSE для автоматического назначения имен колонок по имени поля добавить в метод строку ATail( ::aColumns ):cName := FieldName( nE ) изменение метода SetColSize() - для понимания символьного имени METHOD SetColSize( nCol, nWidth ) CLASS TSBrowse Local nI, nSize If ValType( nCol ) == "A" For nI := 1 To Len( nCol ) nSize := If( ValType( nWidth ) == "A", nWidth[ nI ], nWidth ) ::aColumns[ nCol[ nI ] ]:nWidth := nSize ::aColSizes[ nCol[ nI ] ] := IF(::aColumns[ nCol[ nI ] ]:lVisible, ::aColumns[ nCol[ nI ] ]:nWidth, 0) Next Elseif ValType( nCol ) == "C" nI := ASCAN( ::aColumns, { |oCol| UPPER( oCol:cName ) == Upper(nCol) }) ::aColumns[ nI ]:nWidth := nWidth ::aColSizes[ nI ] := IF(::aColumns[ nI ]:lVisible, ::aColumns[ Ni ]:nWidth, 0) Else ::aColumns[ nCol ]:nWidth := nWidth ::aColSizes[ nCol ] := IF(::aColumns[ nCol ]:lVisible, ::aColumns[ nCol ]:nWidth, 0) EndIf If ::lPainted ::Refresh( .T. ) EndIf Return Self ************************************************************************************************* изменение метода KeyDown() добавиnm код перед Otherwise в основной do case чтобы по ENTER и SPACE вызывался код дабл клика мышкой Case !::lCellbrw .And. (nKey == 13 .Or. nKey == 32 ) If ::bLDblClick != Nil Eval( ::bLDblClick ) EndIf Otherwise -------------------------------------------------------------- PS С уважением Has , SergKis , Dima
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 770
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.07.15 21:26. Заголовок: Has ,SergKis , Dima ..
Has ,SergKis , Dima Благодарю за эти изменения Попробую включить эти правки в следующую сборку (под Вашу ответственность )
|
|
|
Dima
|
| |
Пост N: 5128
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.07.15 21:32. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробую включить эти правки в следующую сборку |
| хуже чем было не станет , плотно тестили )))
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 771
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.07.15 12:31. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня RC 3 для следующей сборки 2.4.9. Финальный релиз запланирован на следующей неделе Dima Не все изменения в TSBrowse были одобрены и вошли в новую сборку Скрытый текст
* Fixed: The wrong text color of a Label control which is placed on a Tab when 'FontColor' property of this Label is redefined at runtime. This happened in the themed OS only. Problem was reported by Henry Herrera <herrera.henry@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: The wrong StatusBar item's width handling in the function _SetStatusWidth(). Problem was reported by russian user. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Changed: The function GetProgramFilesFolder() is defined as pseudo- function. The definition is guarded by constant __WIN98__. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see i_pseudofunc.ch in folder \include) * Changed: ActiveX User Component was moved from the samples to MiniGUI core. A new property called 'Object' was added to manipulate the control. Syntax: @ <nRow>,<nCol> ACTIVEX <ControlName> [ OF | PARENT <ParentWindowName> ] WIDTH <nWidth> HEIGHT <nWidth> PROGID <cProgId> Or DEFINE ACTIVEX <ControlName> <PropertyName> <PropertyValue> <...> END ACTIVEX Based upon a contribution of Roberto Lopez <mail.box.hmg@gmail.com> (see demos in folder \samples\Basic\ActiveX) * Enhanced: Added possibility to modify a FontColor, BackColor and Align for the owner-draw colored status items at runtime. Requested by user on Russian HMG forum. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo4.prg in folder \samples\Basic\Status) * Enhanced: The OwnerDraw Horizontal top-level POPUP menu supports now an optional FONT clause. You can set/change the font of POPUP menu at runtime by function: _SetMenuItemFont( PopupName , FormName , GetFontHandle(FontName) ) Requested by Joe Fanucchi <drjoe@meditrax.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MenuEx) * Updated: Further replacing of 'DEFAULT TO' command in MiniGUI core with the functions hb_default()/__defaultNIL() and hb_defaultValue(). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - correction of calculation of total column width in the Method ReSize; - minor correction in the Method GoUp; - correction of a rare bug in the Method PageUp; - used SRCAND raster in the C-function DrawBitmap(); - added handling of <Enter>/<Space> keys similar to LDblClick action; - added the new TSColumn variable cName for optional column name. Contributed by users from the Russian HMG forum. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.11dev. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-06-26 14:50). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Console to GUI data exchange usage' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. (see in folder \samples\Basic\COMM_2) * New: 'WAIT WINDOW with an expectation' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. (see in folder \samples\Basic\WAIT_WINDOW_2) * New: 'NetIO Server and Client: usage of server's stored procedure' sample. Based upon a contribution of Roberto Lopez <mail.box.hmg@gmail.com> (see in folder \samples\Basic\NETIO)
|
|
|
|
Dima
|
| |
Пост N: 5129
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.07.15 12:40. Заголовок: gfilatov2002 Понял...
gfilatov2002 Понял. По поводу починки C модуля. Смотрю этого нет. Обратите внимание https://cloud.mail.ru/public/HtfA/HnzaTizqW в собранном EXE курсор при достижении верхней/нижней границы , когда ездим клавишами вверх/вниз то есть зажали и держим. В моем EXE мерцания курсора нет. В актуальной есть. А если колонок сделать больше то курсор будет мигать как мигалка у Гаи (© Has)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4382
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.07.15 16:08. Заголовок: Григорий, при больши..
Григорий, при больших разрешениях экрана 1680x900 ..... 1920x1080 Фонт на кнопках и еще кое где - очень мелкий. А в меню нормальный. Можно по умолчанию увеличить фонт на большое разрешение экрана ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 772
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.07.15 16:29. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно по умолчанию увеличить фонт на большое разрешение экрана ? |
| Попробуй менять размер шрифта при старте программы в зависимости от разрешения экрана с помощью команды SET FONT TO <имя шрифта> , <размер шрифта>
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4383
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.07.15 19:51. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй менять размер шрифта при старте программы |
| Это понятно. Просто меню само подстраивается под разрешение, его нормально видно. А кнопки и остальные объекты нет.
|
|
|
Dima
|
| |
Пост N: 5130
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.07.15 20:17. Заголовок: Andrey пишет: Прост..
Andrey пишет: цитата: | Просто меню само подстраивается под разрешение |
| Меню подстраивает сама Винда (о горизонтальном я) а не Minigui. Нет разве ? Ты же размер шрифта в горизонтальном меню средствами Минигуи не сменишь ;)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 773
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.07.15 20:54. Заголовок: Dima пишет: Ты же р..
Dima пишет: цитата: | Ты же размер шрифта в горизонтальном меню средствами Минигуи не сменишь |
| В следующей сборке такая возможность появится См. Пост N: 771 выше на этой странице
|
|
|
Dima
|
| |
Пост N: 5131
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.07.15 21:23. Заголовок: gfilatov2002 Ну нак..
gfilatov2002 Ну наконец то Давно пора.
|
|
|
Dima
|
| |
Пост N: 5132
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.07.15 21:53. Заголовок: Dima пишет: Сырец c..
Dima пишет: цитата: | Сырец c_TBrowse.c HARBOUR HB_FUN_TSBRWSCROLL () было rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); стало rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); if( iRows > 0 ) rct.bottom -= nHeightCell; else rct.top += nHeightCell; |
| Григорий я не хочу быть назойливым , просто сделайте ну скажем 100-200 колонок (не шибко широких) и курсор на всю строку и увидите мерцание как на елочной гирлянде :) Исключительно о езде вниз / вверх говорю (GoUP/ GoDown) при достижении видимых границ бровса нижнего или верхнего. Уже пол форума это увидело , что мерцать будет и после сборки RC3))) Там лишнее скролится в окне , отсюда и мерцание.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 774
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.07.15 22:53. Заголовок: Dima пишет: Исключи..
Dima пишет: цитата: | Исключительно о езде вниз / вверх говорю (GoUP/ GoDown) при достижении видимых границ бровса |
| Да, мерцание становится меньше, но обрати внимание после этого изменения на отображение восьмой колонки " без доставки" в твоем примере ниже #include "minigui.ch" //#include "common.ch" #include "TSBrowse.ch" //REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN //REQUEST HB_LANG_RUWIN //REQUEST HB_LANG_RU866 //SET CODEPAGE TO RUSSIAN //HB_LANGSELECT( "RU" ) Proc main Public HighWindow_MyApl:=GETDESKTOPREALHEIGHT() Public WidthWindow_MyApl:=GETDESKTOPREALWIDTH() Public aFont := {} set date to german DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 14 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 11 AADD( aFont, GetFontHandle( "Font_1" ) ) AADD( aFont, GetFontHandle( "Font_2" ) ) DEFINE WINDOW MAGAZIN AT GetDesktopRealTop(),GetDesktopRealLeft() ; WIDTH WidthWindow_MyApl ; HEIGHT HighWindow_MyApl ; TITLE "TEST" ; MAIN ; NOMAXIMIZE NOSIZE DEFINE STATUSBAR OF MAGAZIN STATUSITEM "1" WIDTH 0 FONTCOLOR BLACK STATUSITEM "2" WIDTH 230 FONTCOLOR BLACK STATUSITEM "3" WIDTH 230 FONTCOLOR BLACK STATUSITEM "4" WIDTH 230 FONTCOLOR BLACK DATE WIDTH 80 CLOCK WIDTH 75 KEYBOARD WIDTH 80 END STATUSBAR //ON KEY ESCAPE OF MAGAZIN ACTION DoMethod("MAGAZIN","Release") Magaz_po("MAGAZIN") //ON KEY ESCAPE OF MAGAZIN ACTION DoMethod("MAGAZIN","Release") END WINDOW DoMethod("MAGAZIN","Activate") return ************************ Func Magaz_po(cforma) local i := 0 local aDatos := {} for i := 1 to 1000 AADD( aDatos, {" ", ntoc(i), ntoc(i) + "_123", dtoc(date()),dtoc(date()),"Поставщик - " + ntoc(i), (10000-i) * i/3,str(random(100)),"0.12","123.00","Иванов",dtoc(date()),time() } ) end public oBrw DEFINE TBROWSE oBrw AT 17,0 ; OF MAGAZIN WIDTH MAGAZIN.WIDTH-2*GetBorderWidth() ; HEIGHT MAGAZIN.HEIGHT-GetTitleHeight()-GetTitleHeight() -; GetProperty("MAGAZIN", "StatusBar", "Height") -2*GetBorderHeight(); ; //ENUMERATOR нумерация колонок в header GRID ; FONT "Lucida Console" SIZE 12 END TBROWSE oBrw:SetArray( aDatos,.t. ) oBrw:nWheelLines := 1 oBrw:nClrLine := COLOR_GRID oBrw:lNoChangeOrd := TRUE oBrw:lCellBrw := TRUE // oBrw:lNoVScroll:= TRUE // oBrw:lNoHScroll:= TRUE for i := 1 To oBrw:nColCount() oBrw:aColumns:lFixLite := TRUE oBrw:aColumns:lEdit := TRUE end oBrw:nHeightCell += 6 oBrw:nHeightHead += 12 oBrw:HideColumns( 11, .T. ) oBrw:HideColumns( 12, .T. ) oBrw:HideColumns( 13, .T. ) oBrw:aColumns[ 1 ]:cHeading :="*" oBrw:aColumns[ 1 ]:nWidth :=15 oBrw:aColumns[ 2 ]:cHeading :="№"+CRLF+"склада" oBrw:aColumns[ 3 ]:cHeading :="№"+CRLF+"накладной" oBrw:SetColSize( 3, 80 ) oBrw:aColumns[ 4 ]:cHeading :="накладной" oBrw:aColumns[ 5 ]:cHeading :="оплаты" oBrw:AddSuperHead( 4, 5, "Дата") oBrw:aColumns[ 4 ]:nAlign :=DT_CENTER oBrw:aColumns[ 5 ]:nAlign :=DT_CENTER oBrw:SetColSize( 4, 80 ) oBrw:SetColSize( 5, 80 ) oBrw:aColumns[ 6 ]:cHeading :="Поставщик" oBrw:SetColSize( 6, 200 ) oBrw:aColumns[ 7 ]:cHeading :="с доставкой" oBrw:aColumns[ 8 ]:cHeading :="без"+CRLF+"доставки" oBrw:aColumns[ 9 ]:cHeading :="доставки" oBrw:aColumns[ 10 ]:cHeading :="продажная" oBrw:SetColSize( 7, 90 ) oBrw:SetColSize( 8, 90 ) oBrw:SetColSize( 9, 90 ) oBrw:SetColSize( 10, 90 ) oBrw:aColumns[ 7 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 8 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 9 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 10 ]:nAlign :=DT_RIGHT oBrw:AddSuperHead( 7, 10, "Сумма") oBrw:nAdjColumn := 6 oBrw:aColumns[ 11 ]:cHeading :="пользователь" oBrw:aColumns[ 12 ]:cHeading :="дата" oBrw:aColumns[ 13 ]:cHeading :="время" oBrw:AddSuperHead( 11, 13, "Создана") oBrw:SetColor( { 1 }, { { || CLR_BLACK } },1 ) // цвет курсора obrw:lCanSelect:=.t. oBrw:SetColor( { 6 }, { { |a,b,c| IF( c:nCell == b, { Rgb( 66, 255, 236 ), Rgb( 111, 183, 155 ) } , { Rgb( 220, 220, 220 ), Rgb( 220, 220, 220 ) }) } } ) // фон курсора //oBrw:ChangeFont( { |a,b,c| IF(c:nAt == c:nLogicPos(), aFont[1], aFont[2]) } ,, ) oBrw:bOnDraw := {|| MAGAZIN.Title := "Дырка: "+ntoc(GetHole())+" nRowCount():"+ntoc(obrw:nRowCount()) , oBrw:DrawFooters() } //oBrw:nHeightHead +=Gethole() //sTBrwHeight( oBrw ) obrw:display() return nil ***************************** FUNCTION sTBrwHeight( oBrw ) // уст. реальный размер TBrowse LOCAL nHeightCell := oBrw:nHeightCell LOCAL nHeightHead := oBrw:nHeightHead LOCAL nHeightFoot := oBrw:nHeightFoot LOCAL nHeightSpecHd := oBrw:nHeightSpecHd LOCAL nHeightSuper := oBrw:nHeightSuper LOCAL nLineStyle := oBrw:nLineStyle LOCAL nRowHeight := oBrw:nRowCount() * nHeightCell LOCAL nBrwH := GetwindowHeight(oBrw:hWnd) LOCAL nDelta nHeight := nHeightSuper + ; nHeightHead + ; nHeightSpecHd + ; nRowHeight + ; nHeightFoot +1 IF ! oBrw:lNoHScroll nDelta := nBrwH - nHeight IF nDelta > 0 .and. nHeightCell > nDelta nHeight += nHeightCell - nDelta - 2 ENDIF ENDIF SetProperty(oBrw:cParentWnd, oBrw:cControlName, 'Height', nHeight) RETURN nHeight ***************** Func GetHole() local WorkHeight := oBrw:nHeight-oBrw:nHeightHead-oBrw:nHeightSuper-; oBrw:nHeightFoot-oBrw:nHeightSpecHd-if(!oBrw:lNoHScroll,16,0) RETURN WorkHeight-Int(WorkHeight/oBrw:nHeightCell)*oBrw:nHeightCell *************** #pragma BEGINDUMP #define HB_OS_WIN_32_USED #define _WIN32_WINNT 0x0400 #include <windows.h> #include "hbapi.h" HB_FUNC (GETDESKTOPREALTOP) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.top); } HB_FUNC (GETDESKTOPREALLEFT) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.left); } HB_FUNC (GETDESKTOPREALWIDTH) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.right - rect.left); } HB_FUNC (GETDESKTOPREALHEIGHT) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.bottom - rect.top); } HB_FUNC ( FINDWINDOW ) { hb_retnl( ( LONG ) FindWindow( 0, hb_parc( 1 ) ) ); } #pragma ENDDUMP
|
|
|
Dima
|
| |
Пост N: 5133
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.07.15 23:07. Заголовок: Но там не только это..
Но там не только это название не влезло по ширине в хидер , что без правки что с ней. Ширину колонки можно и нужную задать. В примере это не было целью. Но мысль я думаю Вы уже поняли. gfilatov2002 пишет: цитата: | но обрати внимание после этого изменения на отображение восьмой колонки "без доставки" |
| Все нормально с ней. Хидер на месте да и данные в таблице. Нет ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 775
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.07.15 00:20. Заголовок: Dima пишет: данные..
Dima пишет: Нажми стрелку вниз и следи за данными в этой колонке. Во всех строках выше нижней будет дублирование данных одной и той же ячейки. Для устранения этой проблемы и требуется дополнительная перерисовка в текущем коде...
|
|
|
Dima
|
| |
Пост N: 5134
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.15 08:41. Заголовок: gfilatov2002 Собрал..
gfilatov2002 Собрал этот пример. Проблемы не увидел. Ездил долго. Можете выложить свой EXE (этого примера) , хочу его пощупать !? В колонке 8 стоит str(random(100)) , так что да, данные могут и дублироваться в строках. Стоит его заменить на что то не рандомное и проблемы нет. И все же жду EXE , если не сложно.
|
|
|
Haz
|
| |
Пост N: 608
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.07.15 11:56. Заголовок: мерцание как на ело..
цитата: | мерцание как на елочной гирлянде :) |
| Дополню, причина мерцания в логике алгоритма - строка с курсором постоянно перекрашивается : Как стандартно отрабатывается :GoDown() когда курсор в последней строке. 1. Курсор в последней строке , она раскрашена в соответствии с :SetColor( {5,6} … ) 2. К позиции курсора ( в последней строке ) применяется метод :DrawLine() в результате чего вся строка перекрашивается установленными цветами :SetColor( {1,2} … ) Т.е. строка курсора сменила цвет. 3. Производится вызов скрола ВСЕГО окна бровса вверх на высоту одной строки. В этот момент строка курсора по прежнему соответствует :SetColor( {1,2} … ) 4. К позиции курсора ( в последней строке ) применяется метод :DrawSelect() в результате чего вся строка перекрашивается установленными цветами :SetColor( {5,6} … ) Видим, что между 1 и 4 строка курсора МЕНЯЕТ цвет , отсюда и мигания Как предлагается отрабатываеть :GoDown() когда курсор в последней строке. 1. Курсор в последней строке , она раскрашена в соответствии с :SetColor( {5,6} … ) 2. Производится вызов скрола окна бровса БЕЗ последней строки вверх на высоту одной строки. В этот момент строка курсора по прежнему остается :SetColor( {5,6} … ) 3. К строке ::nRowPos – 1 применяется метод :DrawLine() для обновления данных 4. К позиции курсора ( в последней строке ) применяется метод :DrawSelect() для обновления данных Видим, что между 1 и 4 строка курсора НЕ МЕНЯЕТ цвет PS при :GoUp() все зеркально
|
|
|
Dima
|
| |
Пост N: 5135
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.15 12:13. Заголовок: Дополню , так как з..
Дополню , так как забыл о правке еще одной в методе GoDown() было If lTranspar //V90 ::Paint() //V90 Else //V90 ::nRowPos := nLines ::TSBrwScroll( 1 ) EndIf //V90 Стало If lTranspar //V90 ::Paint() //V90 Else //V90 ::nRowPos := nLines ::TSBrwScroll( 1 ) ::Skip(-1) ::DrawLine( ::nRowPos -1 ) // добавил 10.07.2015 ::Skip(+1) EndIf //V90
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 776
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.07.15 13:20. Заголовок: Dima пишет: забыл о..
Dima пишет: Эта правка решает проблему с дублированием данных в 8-й колонке при движении вниз по таблице. Принимается с благодарностью за настойчивость
|
|
|
Dima
|
| |
Пост N: 5136
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.15 13:25. Заголовок: gfilatov2002 Cишник..
gfilatov2002 Cишник тоже надо поправить , Has выше написал для чего. Сорри что дергаю
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 777
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.07.15 13:56. Заголовок: Dima пишет: Cишник ..
Dima пишет: цитата: | Cишник тоже надо поправить |
| Да, уже сделал (я рассматривал эти правки а одном пакете) Теперь все изменения выглядят в changelog так: цитата: | * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - correction of calculation of total column width in the Method ReSize; - minor correction in the Method GoUp; - conspicuous reducing of cursor blinking in the Method GoDown; - correction of a rare bug in the Method PageUp; - used SRCAND raster in the C-function DrawBitmap(); - added handling of <Enter>/<Space> keys similar to LDblClick action; - added the new TSColumn variable cName for optional column name. Contributed by users from the Russian HMG forum. |
| Если есть замечания к этому тексту - пишите...
|
|
|
Dima
|
| |
Пост N: 5137
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.15 15:00. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Если есть замечания к этому тексту - пишите... |
| Все в порядке ! Ждем RC3 (Bcc и MinGW). ЗЫ Будут еще полезняхи от users from the Russian HMG forum , работаем над этим ;)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 762
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.07.15 15:59. Заголовок: gfilatov2002 пишет:...
gfilatov2002 пишет: цитата: | ... - added the new TSColumn variable cName for optional column name. |
| Может стоит добавить метод для получения номера колонки по имени cName в TsBrowse, типа METHOD nColumn( cName ) ... а то получается cName есть, а добыть по нему номер колонки нет, надо городить что то дополнительно
|
|
|
Haz
|
| |
Пост N: 609
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.07.15 16:37. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может стоит добавить метод для получения номера колонки по имени |
| Согласен правда там весь огород в одну строку получился METHOD nColumn( cName ) INLINE MAX( AScan( ::aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 763
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.07.15 22:04. Заголовок: Haz пишет:правда там..
Haz пишет: цитата: | правда там весь огород в одну строку получился METHOD nColumn( cName ) INLINE MAX( AScan( ::aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 ) |
| Огород - это когда в каждый проект сувать FUNCTION nColumn( oBrw, cName ) RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 )
|
|
|
Dima
|
| |
Пост N: 5138
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.15 22:19. Заголовок: Haz пишет: + SergKis..
Haz пишет: + SergKis пишет: :) цитата: | правда там весь огород в одну строку получился |
| Действительно почему бы не добавить , мелочь а приятно да и полезно. Вроде даже в Xbrowse FW такого нет (могу ошибаться , так как слез с него...).
|
|
|
Haz
|
| |
Пост N: 610
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.07.15 11:12. Заголовок: SergKis пишет: Огор..
SergKis пишет: цитата: | Огород - это когда в каждый проект сувать |
| Да я за не хочу в каждый проект
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 778
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.15 11:21. Заголовок: Dima пишет: почему ..
Dima пишет: Добавил метод METHOD nColumn( cName ), и теперь требуется небольшой пример для проверки/демонстрации этих изменений
|
|
|
Haz
|
| |
Пост N: 611
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.07.15 11:46. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | теперь требуется небольшой пример для проверки/демонстрации этих изменени |
| когда нужно ? сделаем !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 779
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.15 12:09. Заголовок: Haz пишет: когда ну..
Haz пишет: До понедельника терпит...
|
|
|
Haz
|
| |
Пост N: 612
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.07.15 14:14. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Добавил метод METHOD nColumn( cName ), |
| У меня как INLINE его добавить не вышло , описал обычным вызовом Григорий , еще дополнение CLASS TSBROWSE добавить переменную ( позволит ловить строку в которой курсор ) DATA lDrawSelect AS LOGICAL INIT .F. в методе DrawSelect() ее переключать перед lSelected := ::lCanSelect .and. ( AScan( ::aSelected, If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) ) ) > 0 добавить ::lDrawSelect := TRUE перед return Self добавить ::lDrawSelect := FALSE ***************************************************** Пример использование будет в примере ) oBrw:ChangeFont( { || IF(oBrw:lDrawSelect, aFont[2], aFont[1]) } ,, ) - меняем шрифт в строке курсора на жирный
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 780
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.15 14:31. Заголовок: Haz пишет: добавить..
Haz пишет: Принимается Haz пишет: цитата: | использование будет в примере |
| Уже интересно
|
|
|
Haz
|
| |
Пост N: 614
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.07.15 15:11. Заголовок: gfilatov2002 пишет: ..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 781
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.15 16:47. Заголовок: Haz пишет: Пример с..
Haz пишет: цитата: | Пример собран на библиотеке |
| Благодарю за пример - работает отлично! Я его уже отформатировал и включил в новую сборку
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4386
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.15 17:20. Заголовок: Haz пишет: Пример с..
Haz пишет: цитата: | Пример собран на библиотеке с учетом всех предложенных изменений |
| Пример КЛАССНЫЙ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4387
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.15 19:21. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Я его уже отформатировал и включил в новую сборку |
| Наверно ОЧЕНЬ нужно бы поставить комментарии для: oBrw:SetArray( aDatos,.t. ) oBrw:nWheelLines := 1 oBrw:nClrLine := COLOR_GRID oBrw:lNoChangeOrd := TRUE oBrw:lCellBrw := TRUE oBrw:lNoVScroll := TRUE oBrw:hBrush := CreateSolidBrush( 242, 245, 204 ) Не все же разбираются ...
|
|
|
Dima
|
| |
Пост N: 5139
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.07.15 20:50. Заголовок: Andrey пишет: Навер..
Andrey пишет: цитата: | Наверно ОЧЕНЬ нужно бы поставить комментарии для: |
| А ты похоже не понял , про себя же написал ? Мне понятно , хотя я на Минигуи без году неделя. Has на моей памяти раз 5 указывал тебе , смотри сырец Раз тебе лень , сделаю за тебя....... Скрытый текст DATA l2007 AS LOGICAL INIT .F. //V90 // new look DATA l3DLook AS LOGICAL INIT .F. READONLY // internally control state of ::Look3D() in "Phantom" column DATA lHitTop, lHitBottom, lCaptured, lMChange // browsing flags DATA lAppendMode AS LOGICAL INIT .F. READONLY // automatic append flag DATA lAutoCol //V90 // automatic columns generation from AUTOCOLS clause DATA lAutoEdit AS LOGICAL INIT .F. // activates continuous edition mode DATA lAutoSkip AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lCanAppend AS LOGICAL INIT .F. READONLY // activates auto append mode DATA lCanDelete AS LOGICAL INIT .F. HIDDEN // activates delete capability DATA lCanSelect AS LOGICAL INIT .F. // activates select mode DATA lCellBrw // celled browse flag DATA lCellStyle AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lChanged AS LOGICAL INIT .F. // field has changed indicator DATA lClipMore AS LOGICAL INIT .F. // ClipMore RDD DATA lColDrag AS LOGICAL // dragging feature DATA lConfirm AS LOGICAL INIT .T. HIDDEN // ask for user confirm to delete a row DATA lDescend AS LOGICAL INIT .F. // descending indexes DATA lDestroy // flag to destroy bitmap created for selected records DATA lDontChange //V90 // avoids user to change line with mouse or keyboard DATA lDrawHeaders AS LOGICAL INIT .T. // condition for headers drawing DATA lDrawFooters // condition for footers drawing DATA lEditable AS LOGICAL // editabe cells in automatic columns creation DATA lEditing AS LOGICAL INIT .F. READONLY // to avoid lost focus at editing time DATA lDrawSuperHd AS LOGICAL INIT .F. // condition for SuperHeader drawing DATA lDrawSpecHd AS LOGICAL INIT .F. // condition for SpecHeader drawing DATA lEditingHd AS LOGICAL INIT .F. READONLY // to avoid lost focus at editing time SpecHd DATA lEditableHd AS LOGICAL INIT .F. // activates edition mode of SpecHd on init DATA lFilterMode AS LOGICAL INIT .F. READONLY // index based filters with NTX RDD DATA lAutoSearch AS LOGICAL INIT .F. READONLY // condition for SuperHeader as AutoSearch DATA lAutoFilter AS LOGICAL INIT .F. READONLY // condition for SuperHeader as AutoFilter DATA lHasChgSpec AS LOGICAL INIT .F. // SpecHeader data has changed flag for further actions DATA lFirstFocus HIDDEN // controls some actions on init DATA lFirstPaint // controls some actions on init DATA lFixCaret AS LOGICAL // TSGet fix caret at editing time DATA lFooting AS LOGICAL // indicates footers can be drawn DATA lNoPaint // to avoid unnecessary painting DATA lGrasp AS LOGICAL INIT .F. READONLY // used by drag & drop feature DATA lHasChanged AS LOGICAL INIT .F. // browsed data has changed flag for further actions DATA lHasFocus AS LOGICAL INIT .F. // focused flag DATA lIconView AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lInitGoTop //V90 // go to top on init, default = .T. DATA lIsArr // browsing an array DATA lIsDbf AS LOGICAL INIT .F. READONLY // browsed object is a database DATA lIsTxt // browsing a text file DATA lLineDrag AS LOGICAL // TSBrowse dragging feature DATA lLockFreeze AS LOGICAL // avoids cursor positioning on frozen columns DATA lMoveCols AS LOGICAL // Choose between moving or exchanging columns (::moveColumn() or ::exchange()) DATA lNoChangeOrd AS LOGICAL // avoids changing active order by double clicking on headers DATA lNoExit AS LOGICAL INIT .F. // prevents edit exit with arrow keys DATA lNoGrayBar AS LOGICAL // don't show inactive cursor DATA lNoHScroll AS LOGICAL // disables horizontal scroll bar DATA lNoLiteBar AS LOGICAL // no cursor DATA lNoMoveCols AS LOGICAL // avoids resize or move columns by the user DATA lNoPopup AS LOGICAL INIT .T. //V90 // avoids popup menu when right click the column's header DATA lPopupActiv AS LOGICAL INIT .F. //V90 // defined popup menu when right click the column's header DATA lPopupUser AS LOGICAL INIT .F. //New // activates user defined popup menu DATA lNoResetPos AS LOGICAL // prevents to reset record position on gotfocus DATA lNoVScroll AS LOGICAL // disables vertical scroll bar DATA lLogicDrop AS LOGICAL // compatibility with TCBrowse DATA lPageMode AS LOGICAL INIT .F. // paging mode flag DATA lPainted AS LOGICAL // controls some actions on init DATA lRePaint AS LOGICAL // bypass paint if false DATA lPostEdit // to detect postediting DATA lUndo AS LOGICAL INIT .F. // used by RButtonDown method DATA lUpdated AS LOGICAL INIT .F. // replaces lEditCol return value DATA lUpperSeek AS LOGICAL INIT .T. // controls if char expresions are seek in uppercase or not DATA lSeek AS LOGICAL INIT .T. // activates TSBrowse seeking feature DATA lSelector AS LOGICAL INIT .F. //V90 // automatic first column with pointer bitmap DATA lTransparent //V90 // flag for transparent browses DATA lEnabled AS LOGICAL INIT .T. // enable/disable TSBrowse for displaying data //JP 1.55 DATA lPickerMode AS LOGICAL INIT .T. // enable/disable DatePicker Mode in inplace Editing //MWS Sep 20/07 DATA lPhantArrRow AS LOGICAL INIT .F. // Flag for initial empty row in array DATA lEnum AS LOGICAL INIT .F. // activates SpecHeader as Enumerator
| Это только по логическим данным , остальное там же ... в сырце и нет смысла дублировать сюда.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4388
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.15 00:36. Заголовок: Dima пишет: Раз теб..
Dima пишет: цитата: | Раз тебе лень , сделаю за тебя |
| Дима, я понял. Просто другие новички не поймут. В своих примерах я стараюсь комментировать что мне было непонятно. Так как Григорий уже добавил этот пример к себе, то мои комментарии к этому примеру уже не пойдут.
|
|
|
Haz
|
| |
Пост N: 616
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.07.15 11:09. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Я его уже отформатировал и включил в новую сборку |
| Григорий если не поздно/ не сложно , то еще два места дополнить которые ссылаются на номер колонки 1 Первой строкой в метод SetData() CLASS TSBROWSE добавить nColumn := IF( Valtype( nColumn) == "C", ::nColumn( nColumn ), nColumn ) 2 Первой строкой в функцию ComboWBlock CLASS TSCOLUMN добавить nCol := IF( Valtype( nCol) == "C", oBrw:nColumn( nCol ), nCol ) и далее по коду после else условия if oBrw:lIsDbf перед If aData == Nil вставить Else // editing an array uField is the array element number uField := IF( Valtype( uField ) == "C", oBrw:nColumn( uField ), uField ) If aData == Nil ЗЫ: можно конечно и не править , но при обращении по имени код получается громоздкий oBrw:SetData( oBrw:nColumn("TEXT") , ComboWBlock( oBrw, oBrw:nColumn("TEXT") , oBrw:nColumn("TEXT") , aCombo ) ) вместо oBrw:SetData( "TEXT" , ComboWBlock( oBrw, "TEXT" , "TEXT" , aCombo ) ) если чего еще выловлю - позже скину
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 782
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.07.15 11:34. Заголовок: Haz пишет: если не ..
Haz пишет: цитата: | если не поздно/ не сложно , то еще два места дополнить |
| Сделаю, конечно
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 766
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 11:51. Заголовок: Haz пишет:uField := ..
Haz пишет: цитата: | uField := IF( Valtype( uField ) == "C", oBrw:nColumn( uField ), uField ) |
| что бы везде не писать проверку на valtype == C, может ее спрятать в саму nColumn и добавить METHOD nColumn(xName, nDefCol) DEFAULT nDefCol := 1 IF valtype(xName) == 'N' RETURN iif( xName > 0 .and. xName <= Len( ::aColumns ), xName, nDefCol) ENDIF RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), nDefCol )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 767
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 11:58. Заголовок: PS. правильней RETUR..
PS. правильней RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( xName ) } ), nDefCol )
|
|
|
Haz
|
| |
Пост N: 618
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.07.15 12:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Григорий, еще поправочки Метод ::HideColumn - аналогично первой строкой nColumn := IF( Valtype( nColumn) == "C", ::nColumn( nColumn ), nColumn ) или как предлагает Сергей - саму проверку == "С" спрятать в метод ::nColumn() т.к. таких проверок становится больше Ранее предлагалось вот это изменение метода LoadFilds() TSBROWSE для автоматического назначения имен колонок по имени поля добавить в метод строку ATail( ::aColumns ):cName := FieldName( nE ) Погонял поплотнее - работает только если находимся в текущем алиасе. Правильно будет так ATail( ::aColumns ):cName := (::cAlias) -> ( FieldName( nE )) в коде метода ::LoadFields место этой правки логично сразу после похожего кода который там уже есть ATail( ::aColumns ):cData := ::cAlias + "->" + FieldName( nE ) PS: сижу не спеша старый проект переписываю под символьные имена колонок , визуально код становится значительно читабильнее
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 768
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 12:41. Заголовок: SergKis пишет:добави..
SergKis пишет: цитата: | добавить METHOD nColumn(xName, nDefCol) |
| Добавка для таких действий IF oBrw:nColumn("NAME1", 0) > 0 // есть группа колонок ELSE // нет группы колонок, добавим ... ENDIF вместо проверок через ascan
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 783
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.07.15 15:10. Заголовок: Haz пишет: Правильн..
Haz пишет: цитата: | Правильно будет так ATail( ::aColumns ):cName := (::cAlias) -> ( FieldName( nE )) |
| Благодарю за поправку! Haz пишет: цитата: | Метод ::HideColumn - аналогично |
| Сделал
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 784
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.07.15 10:48. Заголовок: Новый релиз библиоте..
|
|
|
Dima
|
| |
Пост N: 5147
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.07.15 13:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Использую в своих тестах. Все нормально ! Спасибо за работу
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 769
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 14:16. Заголовок: gfilatov2002 Начал..
gfilatov2002 Начал переносить в свой проект и обратил внимание: В добавленном куске KeyDown Case !::lCellbrw .and. ( nKey == VK_RETURN .or. nKey == VK_SPACE ) .and. ::bLDblClick != Nil // 14.07.2015 Eval( ::bLDblClick ) в вызове хртелось бы уточнения, чем вызывали VK_RETURN или VK_SPACE В METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) имеем выполнение ... ElseIf ::bLDblClick != Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags ) EndIf ... If ::bLDblClick != Nil .and. ::aActions == Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags ) Else имеем рассогласование вызова по параметрам Просканировал h_tbrowse.prg CLASS TSBrowse на Eval( оказалось в некоторых местах Self передается в блок кода, во многих нет. Может есть смысл скорректировать Eval-ы, добавив self.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 785
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.07.15 16:26. Заголовок: SergKis пишет: в вы..
SergKis пишет: цитата: | в вызове хртелось бы уточнения, чем вызывали |
| Добавил цитата: | Eval( ::bLDblClick, Nil, nKey, nFlags ) |
| SergKis пишет: цитата: | имеем рассогласование вызова по параметрам |
| Да, верно. Но мы же смешали здесь мышку с клавиатурой Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 770
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 16:57. Заголовок: gfilatov2002 пишет:Д..
gfilatov2002 пишет: цитата: | Но мы же смешали здесь мышку с клавиатурой |
| мыша вызывает ::LDblClick(...), здесь клава и добавки Eval( ::bLDblClick, Nil, nKey, nFlags ) на мой взгляд достаточно. А различить, что вызывало, надо в случае, если на DblClick и Return повешен вызов, а на space снять\поставить галочку или ничего. А как насчет Self в eval(...) последним параметром к существующим ? Eval( ::bLDblClick, Nil, nKey, nFlags, Self ) if nValue > 0 .AND. nValue <= Eval(::bLogicLen, Self) // JP 1.59 Eval(::bGoToPos, nValue, Self) endif и так далее
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 771
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 17:25. Заголовок: gfilatov2002 пишет:В..
gfilatov2002 пишет: цитата: | Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен... |
| на мой взгляд это лишнее. Можно поступить проще для Tsb: 1- завести DATA массив назначения клавиш 2- метод установки клавиш и блока кода в массив (аналогия set key в clipper) 3- метод добычи блока из массива установки 4- дефаультный метод (ф-ия) устанавливаемый в п. 1 в bUserKeyDown при использовании данной методики пример (на функциях) кидал Dime (перенес из своего проекта Tsb) и где то у меня есть. Если это интересно ? эта метода не затрагивает нынешнюю технологию работы с KeyDown
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4393
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.07.15 04:26. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Перешёл, и облом... С цветами белиберда получается - пока нашёл у LABEL и TAB и DRAW LINE. Подробности отправил в письме.
|
|
|
Haz
|
| |
Пост N: 619
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.07.15 15:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Григорий, пересобрал крупный проект, глюков не заметил
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 786
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.07.15 15:51. Заголовок: Haz пишет: глюков н..
Haz пишет: Благодарю за Ваш отзыв Начал работу над следующей сборкой 2.5.0
|
|
|
Haz
|
| |
Пост N: 620
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.07.15 16:03. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Начал работу над следующей сборкой |
| Григорий , тогда в метод DelColumn(nPos) можно добавить такую же проверка на тип переменной nPos как и в HedeColumn() ? ЗЫ Есть в tsb глюк , причину которого не могу выловить давно - если в ON CHANGe вставить вызов метода Refresh() то при скроле длинной таблицы стрелками вниз -вверх не отпуская кнопки , бровс виснет так что только через процессы задача рубится . Если периодически клавиши вверх-низ отпускать - то не виснет. Похоже на переполнение какого нить стека комманд , но пока так и не понял куда копать
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 787
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.07.15 16:58. Заголовок: Haz пишет: в метод ..
Haz пишет: цитата: | в метод DelColumn(nPos) можно добавить такую же проверка на тип переменной nPos |
| Сделал
|
|
|
Dima
|
| |
Пост N: 5148
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.07.15 17:14. Заголовок: Andrey пишет: С цве..
Andrey пишет: цитата: | С цветами белиберда получается - пока нашёл у LABEL |
| Синтаксис вроде ж не менялся.... Всегда можно посмотреть i_label.ch
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 788
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.07.15 20:27. Заголовок: Dima пишет: Синтакс..
Dima пишет: цитата: | Синтаксис вроде ж не менялся |
| В этой сборке действительно есть ошибка при отображении LABEL на цветном TABе. Исправленный бинарник библиотеки я выложил для тестирования по адресу http://hmgextended.com/files/MISC/minigui-lib.zip Жду Ваших комментариев...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4396
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.15 01:57. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Жду Ваших комментариев... |
| Цвета пришли в норму !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 789
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.07.15 10:26. Заголовок: Andrey пишет: Цвета..
Andrey пишет: Сделал "тихий" апдейт сборки 2.4.9 с этим исправлением
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 170
Зарегистрирован: 15.09.05
|
|
Отправлено: 24.07.15 11:06. Заголовок: В TSBROWSE есть еще проблема с селектором
В TSBROWSE есть еще проблема с селектором ! У меня в бровсе добавляется лишняя колонка Можно проверить ! Вот интересно в примерах например один и тот же код в TSBTEST.PRG работает правильно (строка 547 ) DEFINE TBROWSE Brw_7 AT 0,0 CELLED ALIAS "Employee" Transparent Selector "Bitmaps\Arrow.bmp" ; WIDTH nBrwWidth HEIGHT nBrwHeight ; COLORS {CLR_BLACK, CLR_PINK} ; MESSAGE "oBrw:bPrevEdit and oBrw:bPostEdit, can control the footer's value." а в TSB_MDI.PRG (строка 692) если добавить такой селектор не работает и получается етот ефект с добавлением лишней колонки лишняя колонка не позволяет правильно работать в режиме добавления данных (стрелкой в низ) Все остальное при переходе на етой сборки и меня без проблем ! СПАСИБО ГРИГОРИЙ !!!
|
|
|
Haz
|
| |
Пост N: 621
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.07.15 11:12. Заголовок: sashaBG пишет: В TS..
sashaBG пишет: цитата: | В TSBROWSE есть еще проблема с селектором ! |
| есть, но раз строка курсора теперь ловится легко через lDrawSelet можно прикрутить и свой селектор через дублирование первой колонки , изменения блока выборки и показа картинки в виде треугольника Согласен это не выход, но хоть что то ))
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 794
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.07.15 10:08. Заголовок: Выпустил внеочередно..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4419
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.07.15 16:38. Заголовок: Привет ! Опять с нов..
Привет ! Опять с новой версией беда - с ходу вылезла старая ошибка цветов. Только теперь серый цвет:
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4424
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.15 14:04. Заголовок: Григорий, так как на..
Григорий, так как насчёт цветов в новой версии ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 796
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.07.15 14:22. Заголовок: Andrey пишет: как н..
Andrey пишет: Нужен тестовый пример, демонстрирующий проблему. Вот мой тестовый пример ниже Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "TSBrowse.ch" #translate dbcreate(<file>, <struct>) => hb_dbcreatetemp(<file>, <struct>) Function Main dbcreate('test',{{'nazwa','C',30,0},; {'ilosc','N',12,2},; {'cena','N',14,2}}) if select('test') == 0 dbusearea(.t.,,'test') endif for i := 1 to 100 test->(dbappend()) test->nazwa := "Item " + hb_ntos(i) test->ilosc := test->(recno()) test->cena := (test->ilosc * HB_Random(100)) next test->(dbgotop()) define window tabsample at 0,0 width 400 height 300 title 'Add control test' main backcolor AQUA DEFINE TBROWSE Brw_1 AT 10, 10 OF o_dlu ALIAS "test" WIDTH 330 HEIGHT 120 ADD COLUMN TO Brw_1 DATA {|| test->nazwa } ALIGN DT_LEFT, DT_CENTER, DT_CENTER ; TITLE 'Nazwa' SIZE 100 ADD COLUMN TO Brw_1 DATA {|| test->ilosc } ALIGN DT_RIGHT, DT_CENTER,DT_CENTER TITLE 'Ilosc' SIZE 70 ADD COLUMN TO Brw_1 DATA {|| test->cena } ALIGN DT_RIGHT, DT_CENTER, DT_CENTER TITLE 'Cena' SIZE 70 Brw_1:SetColor( { 2 }, { { | | IIf( test->(OrdKeyNo()) % 2 == 0, RGB(255,255,255), RGB(200, 200, 200) ) }}) Brw_1:nHeightCell += 6 Brw_1:nHeightFoot += 4 Brw_1:nWheelLines := 1 Brw_1:nHeightHead := 14 END TBROWSE tabsample.Brw_1.Hide define tab tab1 at 10,10 width 370 height 220 backcolor AQUA define page 'Page1' define button b1 row 30 col 10 caption 'Press here to add a control' width 180 action addnewcontrols({'lbl1','text1'}) end button end page define page 'Page2' define button b2 row 30 col 10 caption 'Press here to add a control' width 180 action addnewcontrol2('Brw_1') end button end page end tab on key escape action thiswindow.release() end window tabsample.center tabsample.activate Return nil function addnewcontrols(actrl) local c1, c2 c1 := actrl[1] c2 := actrl[2] if iscontroldefined(&c1,tabsample) tabsample.&(c1).release endif define label &c1 parent tabsample row 50 col 10 width 40 value 'label' backcolor AQUA end label if iscontroldefined(&c2,tabsample) tabsample.&(c2).release endif define textbox &c2 parent tabsample row 50 col 50 width 100 end textbox tabsample.tab1.addcontrol(c1,1,84,10) tabsample.tab1.addcontrol(c2,1,80,50) return nil function addnewcontrol2(ctrl) if iscontroldefined(&ctrl,tabsample) tabsample.&(ctrl).Show endif tabsample.tab1.addcontrol(ctrl,2,80,10) return nil
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4426
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.15 15:16. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Нужен тестовый пример, демонстрирующий проблему. |
| Я его уже посылал почтой - Tab_transfer6.prg ! Если потерялся, то могу заново выслать.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 797
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.07.15 15:38. Заголовок: Andrey пишет: Tab_t..
Andrey пишет: Этот пример нашел - вечером пробну
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 798
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.07.15 21:10. Заголовок: Andrey пишет: как н..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4427
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.15 21:41. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Исправленный бинарник библиотеки я выложил для тестирования по адресу |
| Цвета заработали ! Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4429
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.08.15 00:31. Заголовок: Вот еще нашёл одну н..
Вот еще нашёл одну непонятку:
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4433
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.08.15 19:38. Заголовок: sashaBG пишет: В TS..
sashaBG пишет: цитата: | В TSBROWSE есть еще проблема с селектором ! У меня в бровсе добавляется лишняя колонка |
| Тоже наткнулся на такую бяку: Вот пример из \MiniGUI\SAMPLES\Advanced\Tsb_config - то же два селектора: Как править то ?
|
|
|
Dima
|
| |
Пост N: 5184
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.08.15 21:29. Заголовок: Andrey пишет: Тоже ..
Andrey пишет: цитата: | Тоже наткнулся на такую бяку: |
| Haz пишет: цитата: | есть, но раз строка курсора теперь ловится легко через lDrawSelet можно прикрутить и свой селектор через дублирование первой колонки , изменения блока выборки и показа картинки в виде треугольника Согласен это не выход, но хоть что то )) |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 783
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.08.15 11:30. Заголовок: gfilatov2002 Григор..
gfilatov2002 Григорий, можно добавить в TSColumn парамметер cName в Method New(..., cName) Default cName := "" и в соответствующие #command для колонок задание cName
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 802
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.08.15 16:08. Заголовок: SergKis пишет: можн..
SergKis пишет: цитата: | можно добавить в TSColumn парамметер cName |
| Ваша идея понятна Присылайте готовую реализацию для проверки и включения в следующую сборку
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 784
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.08.15 11:50. Заголовок: gfilatov2002 пишет:П..
gfilatov2002 пишет: цитата: | Присылайте готовую реализацию |
| TSColumn.prg ~~~~~~~~~~~~ ... METHOD New( cHeading, bData, cPicture, aColors, aAlign, nWidth, ; lBitMap, lEdit, bValid, lNoLite, cOrder, cFooting, ; bPrevEdit, bPostEdit, nEditMove, lFixLite, a3DLook, ; bWhen, oBrw, cData, cWhen, cValid, cPrevEdit, cPostEdit, cMsg, cToolTip, lTotal , ; lSpinner, bUp, bDown, bMin, bMax, cError, cSpcHeading,; cDefData, cName ) CLASS TSColumn ... Default cHeading := "" , ; bData := {|| Nil } , ; cData := "{|| Nil }" , ; ... lTotal := .F. , ; //V90 cName := "" ::cName := cName If ValType( cHeading ) == "O" ::uBmpHead := cHeading ... i_tsbrowse.ch ~~~~~~~~~~~~~ ... #command DEFINE COLUMN <oCol> ; [ <dat: DATA, SHOWBLOCK> <uData> ] ; ... [ <total: TOTAL, TOTALIZE> ] ; [ NAME <name> ] ; => ; <oCol> := TSColumn():New( ; ... [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ]) ... #command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> ; [ <dat: DATA, SHOWBLOCK> <uData> ] ; ... [ <total: TOTAL, TOTALIZE> ] ; [ NAME <name> ] ; => ; <oBrw>:AddColumn( TSColumn():New( ; ... [<(bPostBlock)>], [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ] ) ) ... #command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> [ DATA ] ARRAY ; [ <el: ELM, ELEMENT> <elm> ] ; ... [ <total: TOTAL, TOTALIZE> ] ; [ NAME <name> ] ; => ; <oBrw>:AddColumn( TSColumn():New( ; ... [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ]) ) ... #command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> [ DATA ] ; <fi: oDBF, FIELD> [FIELD] <field> ; ... [ <total: TOTAL, TOTALIZE> ] ; [ NAME <name> ] ; => ; <oBrw>:AddColumn( TSColumn():New( ; ... [ <(bPrevBlock)> ], [<(bPostBlock)>], [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ])) ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 803
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.08.15 12:53. Заголовок: SergKis Благодарю з..
SergKis Благодарю за помощь Принято с поправкой, что между [ <.total.> ] и [ <"name"> ] расположены еще 8 переменных
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 785
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.08.15 17:57. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | между [ <.total.> ] и [ <"name"> ] расположены еще 8 переменных |
| пока выделял <"name"> bold-ом забыл про запятые. Еще ошибочка при SpecHd, если нет Footer все хорошо, с Footer криво METHOD DrawHeaders( lFooters ) CLASS TSBrowse ... IF ::lDrawSpecHd ... TSDrawCell( hWnd, ; // 1 hDC, ; // 2 0, ; // 3 nStartCol, ; // 4 aColSizes[nJ], ; // 5 cHeading, ; // 6 nAlign, ; // 7 nClrFore, ; // 8 nClrBackS, ; // 9 hFont, ; // 10 hBitMap, ; // 11 nHeightFoot, ; // 12 надо 0 вместо nHeightFoot l3DLook, ; // 13 1, ; // 14 nLineStyle nClrLine, ; // 15 4, ; // 16 1=Header 2=Footer 3=Super 4=Special nHeightHead, ; // 17 nHeightFoot, ; // 18 nHeightSuper, ; // 19 nHeightSpecHd, ; // 20 lAdjBmp, ; // 21 .f., ; // 22 nVAlign, ; // 23 0, ; // 24 nVertText nClrToS, ; // 25 lOpaque, ; // 26 If( lBrush, ; nClrBackS:hBrush, 0 ), ; // 27 l3DText, ; // 28 3D text nClr3dL, ; // 29 3D text light color nClr3dS ) // 30 3D text shadow color элемент // 12 надо 0 вместо nHeightFoot, тогда с прорисовкой SpecHd все Ok с Footer и без
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 804
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.08.15 20:20. Заголовок: SergKis пишет: элем..
SergKis пишет: цитата: | элемент // 12 надо 0 вместо nHeightFoot |
| Благодарю, уже поправил для новой сборки
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 786
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.15 09:50. Заголовок: gfilatov2002 А можн..
gfilatov2002 А можно еще немного изменений ? TSColumn.prg ~~~~~~~~~~~~ ... CLASS TSColumn ... DATA lOnGotFocusSelect AS LOGICAL INIT .F. // .T. - SendMessage( GetBoxHandle, EM_SETSEL, 0, -1 ) ... ENDCLASS h_tbrowse.prg ~~~~~~~~~~~~~ ... #define EM_SETSEL 177 ... Function LoadFields( ControlName, ParentForm, lEdit, aFieldNames) Local ix, oBrw Default lEdit := .f. ix := GetControlIndex (ControlName,ParentForm) oBrw := _HMG_aControlIds [ix] if ISARRAY(aFieldNames) oBrw:aColSel := aFieldNames endif oBrw:LoadFields(lEdit) Return oBrw // было Nil Function SetArray( ControlName, ParentForm, Arr, lAutoCols, aHead, aSizes ) Local ix, oBrw ix := GetControlIndex (ControlName,ParentForm) oBrw:= _HMG_aControlIds [ix] oBrw:SetArray(Arr, lAutoCols, aHead, aSizes) Return oBrw // было Nil ... METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ; ... DO CASE CASE "TBTNBOX" $ Upper( oCol:oEdit:ClassName() ) oCol:oEdit:bLostFocus := Nil CASE "TGETBOX" $ Upper( oCol:oEdit:ClassName() ) ix := GetControlIndex ( ::cChildControl, ::cParentWnd ) _HMG_InteractiveCloseStarted := .T. if ix > 0 If oCol:lOnGotFocusSelect If ValType(uValue) == "C" _HMG_aControlGotFocusProcedure [ix] := {|| SendMessage( _HMG_aControlHandles [ix], EM_SETSEL, 0, If(empty(uValue), -1, Len(Trim(uValue))) ) } ElseIf ValType(uValue) $ "ND" _HMG_aControlGotFocusProcedure [ix] := {|| SendMessage( _HMG_aControlHandles [ix], EM_SETSEL, 0, -1 ) } EndIf EndIf _HMG_aControlLostFocusProcedure [ix] := { | nKey | ::EditExit( nCell, nKey, uValue, bValid, .F. ) } endif if Empty( ::bLostFocus ) ::bLostFocus := { || iif( _HMG_InteractiveCloseStarted, _HMG_InteractiveCloseStarted := .F., ) } endif ENDCASE ... выделенным изменения
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 805
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.08.15 11:08. Заголовок: SergKis пишет: еще ..
SergKis пишет: Добавлено с благодарностью
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 806
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.08.15 13:41. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня предварительный релиз для следующей сборки 2.5.1. Финальный релиз запланирован на следующей неделе Скрытый текст
* Enhanced: Added a third parameter nFlags (defined in the header file i_misc.ch) and fourth parameter lNewFolderButton to the function GetFolder() and the 3rd and 4th parameters cTitle, cInitPath to the function BrowseForFolder(). These parameters are an optional. If an initial path or BIF flag were not specified then a new UI with an editbox and validation will be used by default in the above functions. Syntax: GetFolder( [ Title ], [ InitPath ], [ BIF Flag ], ; [ New Folder Button ] ) -> Folder Name BrowseForFolder( [Folder Type], [ BIF Flag ], [ Title ], ; [ InitPath ] ) -> Folder Name Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\GetFolder) * Enhanced: Tuning of a back color of the Slider, transparent CheckBox and RadioGroup controls at an owner-draw colored TAB. If the back color of above controls was not specified then it will be defined automatically as Tab's back color. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Changed: Removed a silent assigning of 'Transparent' property to the Label and CheckBox controls when a such control was placed into a Tab control (introduced in the build 18). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: DO REPORT command: cleanup of using of the private variables. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\DO_REPORT) * Updated: The header file i_winuser.ch used to resolve WinAPI constants. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see i_winuser.ch in folder \include) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - New: added handling of the var cName in TSColumn class; - New: added handling of a new Column var lOnGotFocusSelect; - Updated: minor correction in the function cValToChar(). Contributed by SergKis. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.11.1 (from 3.8.11). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-08-01 13:14): - added a new code for the function ASort(). Contributed by Przemyslaw Czerpak. Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * Updated: 'WAIT WINDOW with an expectation in a thread' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. (see demo2.prg in folder \samples\Basic\WAIT_WINDOW_2) * Updated: 'Paths' sample (demo functions for show system paths). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Paths) * Updated: 'Process Information' sample is based on the ProcInfo library: - added a hung detection for the applications (based upon the undocumented WinAPI function IsHungAppWindow()); - added a test hunging application. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\ProcInfo)
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 787
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.15 15:43. Заголовок: gfilatov2002 Еще пр..
gfilatov2002 Еще предложение для TSBrowse Method SetArray2(...) Скрытый текст
h_tbrowse.prg ~~~~~~~~~~~~~ ... Function SetArray2( ControlName, ParentForm, Arr, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) Local ix, oBrw ix := GetControlIndex (ControlName,ParentForm) oBrw:= _HMG_aControlIds [ix] oBrw:SetArray2(Arr, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName) Return oBrw ... CLASS TSBrowse FROM TControl ... METHOD SetArray( aArray, lAutoCols, aHead, aSizes ) //V90 METHOD SetArray2( aArray, uFontHF , aHead, aSize, uFooter, aPicture, aAlign, cName ) ENDCLASS ... METHOD SetArray2( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse Local nColumns, nI, cType, nMax, bData, cHead Local nN, cData, aDefMaxVal, aDefMaxLen, aDefType, aDefAlign, aDefFooter, oCol, ; nAlign, aAligns, lFooter := .F., cFooter, nFooter, cTemp, cPict, ; hFont := If( ::hFont != Nil, ::hFont, 0 ), aFont, lSelected, ; lFont := hFont != 0, hFontHead := hFont, hFontFoot := hFont If empty(aArray) .or. ValType(aArray) != "A" nN := 1000 aArray := Array(nN) For nI := 1 To nN aArray[ nI ] := { nI, PadR("Line - "+StrZero(nI, 5), 20), ; Date()+(nI-1), ; Round(nN / nI, 3), ; nI % 2 == 0 } Next EndIf Default aHead := AClone(::aHeaders), ; aSizes := AClone(::aColSizes), ; aPicture := AClone(::aFormatPic), ; aAlign := If( ISARRAY(::aJustify), AClone(::aJustify), {} ), ; aName := {} If empty(uFontHF) uFontHF := { hFontHead, hFontFoot } ElseIf ValType(uFontHF) == "N" .and. uFontHF != 0 uFontHF := { uFontHF, uFontHF } ElseIf ValType(uFontHF) == "A" If Len(uFontHF) < 2 ASize(uFontHF, 2) EndIf If ValType(uFontHF[1]) != "N" .or. empty(uFontHF[1]) uFontHF[1] := hFontHead EndIf If ValType(uFontHF[2]) != "N" .or. empty(uFontHF[2]) uFontHF[2] := hFontFoot EndIf Else uFontHF := { hFontHead, hFontFoot } EndIf hFontHead := uFontHF[1] hFontFoot := uFontHF[2] ::aArray := aArray ::lPickerMode := .F. nColumns := If( ! Empty( aHead ), Len( aHead ), If( ! Empty( ::aArray ), Len( ::aArray[ 1 ] ), 0 ) ) //V90 ::aDefValue := Array( Len( aArray[ 1 ] ) ) //V90 aDefMaxVal := Array(nColumns) aDefType := Array(nColumns) aDefAlign := Array(nColumns) aDefMaxLen := Array(nColumns) If Len(aPicture) != nColumns ASize(aPicture, nColumns) EndIf If Len(aAlign) != nColumns ASize(aAlign, nColumns) EndIf If Len(aName) != nColumns ASize(aName, nColumns) EndIf For nI := 1 To nColumns cType := ValType( ::aArray[ 1, nI ] ) aDefType[ nI ] := cType If cType $ "CM" ::aDefValue[ nI ] := Space( Len( ::aArray[ 1, nI ] ) ) aDefMaxVal [ nI ] := ::aArray[ 1, nI ] aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_LEFT ElseIf cType == "N" ::aDefValue[ nI ] := 0 aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_RIGHT ElseIf cType == "D" ::aDefValue[ nI ] := CToD( "" ) aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_CENTER ElseIf cType == "T" #ifdef __XHARBOUR__ ::aDefValue[ nI ] := CToT( "" ) #else ::aDefValue[ nI ] := HB_CTOT("") #endif aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_LEFT ElseIf cType == "L" ::aDefValue[ nI ] := .F. aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_CENTER Else // arrays, objects and codeblocks not allowed ::aDefValue[ nI ] := "???" // not user editable data type aDefMaxVal [ nI ] := "???" aDefMaxLen [ nI ] := 0 aDefAlign [ nI ] := DT_LEFT EndIf Next ::nAt := 1 ::bKeyNo := { |n| If( n == Nil, ::nAt, ::nAt := n ) } //V90 ::cAlias := "ARRAY" // don't change name, used in method Default() ::lIsArr := .T. ::lIsDbf := .F. //JP V90 ::nLen := Eval( ::bLogicLen := { || Len( ::aArray ) + If( ::lAppendMode, 1, 0 ) } ) ::lIsArr := .T. ::bGoTop := { || ::nAt := 1 } ::bGoBottom := { || ::nAt := Eval( ::bLogicLen ) } ::bSkip := { |nSkip, nOld| nOld := ::nAt, ::nAt += nSkip, ::nAt := Min( Max( ::nAt, 1 ), ::nLen ), ::nAt - nOld } //V90 ::bGoToPos := { |n| Eval( ::bKeyNo, n ) } //V90 ::bBof := { || ::nAt < 1 } //V90 ::bEof := { || ::nAt > Len( ::aArray ) } //V90 ::lHitTop := .F. ::lHitBottom := .F. ::nRowPos := 1 ::nColPos := 1 ::nCell := 1 ::HiliteCell( 1 ) aDefFooter := Array(nColumns) aFill(aDefFooter, "") If ValType(uFooter) == "L" lFooter := uFooter ElseIf ValType(uFooter) == "A" lFooter := .T. For nI := 1 To Min( nColumns, Len(uFooter) ) aDefFooter[ nI ] := cValToChar(uFooter[ nI ]) Next EndIf If Empty( aHead ) aHead := AutoHeaders( Len( ::aArray[ 1 ] ) ) EndIf If aSizes != Nil .and. ValType( aSizes ) != "A" aSizes := AFill( Array( Len( ::aArray[ 1 ] ) ), nValToNum( aSizes ) ) ElseIf ValType( aSizes ) == "A" .and. ! Empty( aSizes ) If Len( aSizes ) < nColumns nI := Len( aSizes ) + 1 ASize( aSizes, nColumns ) AFill( aSizes, aSizes[ 1 ], nI ) EndIf Else aSizes := Nil EndIf For nI := 1 To Len(::aArray) For nN := 1 To nColumns cData := cValToChar( ::aArray[ nI, nN ] ) If len(cData) > len(aDefMaxVal[ nN ]) aDefMaxVal[ nN ] := cData aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len(cData) ) EndIf Next Next ::aHeaders := Array(nColumns) ::aColSizes := Array(nColumns) ::aFormatPic := Array(nColumns) ::aJustify := Array(nColumns) For nI := 1 To nColumns bData := ArrayWBlock( Self, nI ) cHead := cValToChar( aHead[ nI ] ) nAlign := aDefAlign[ nI ] cPict := Nil lSelected := .F. If aDefType[ nI ] == "C" lSelected := .T. If ValType(aPicture[ nI ]) == "C" cPict := aPicture[ nI ] cTemp := If( left(cPict, 2) == "@K", subs(cPict, 4), cPict) Else cPict := repl("X", aDefMaxLen[ nI ]) cTemp := cPict EndIf If Len(cTemp) > Len(::aDefValue[ nI ]) ::aDefValue[ nI ] := Space( Len( cTemp ) ) EndIf ElseIf aDefType[ nI ] == "N" lSelected := .T. If ValType(aPicture[ nI ]) == "C" cPict := aPicture[ nI ] Else cPict := repl("9", aDefMaxLen[ nI ]) If ( nN := At(".", aDefMaxVal[ nI ]) ) > 0 cTemp := subs(aDefMaxVal[ nI ], nN) cPict := left(cPict, Len(cPict) - Len(cTemp))+"."+repl("9", Len(cTemp)-1) EndIf EndIf ElseIf aDefType[ nI ] == "D" lSelected := .T. EndIf If ValType(aAlign[ nI ]) == "N" .and. ( aAlign[ nI ] == DT_LEFT .or. ; aAlign[ nI ] == DT_CENTER .or. ; aAlign[ nI ] == DT_RIGHT ) nAlign := aAlign[ nI ] EndIf If lFooter aAligns := { nAlign, DT_CENTER, nAlign } cFooter := aDefFooter[ nI ] If CRLF $ cFooter cTemp := "" AEval(hb_aTokens(cFooter, CRLF), {|x| cTemp := If( Len(x) > Len(cTemp), x, cTemp )}) Else cTemp := cFooter EndIf nFooter := GetTextWidth( 0, cTemp, hFontFoot ) Else aAligns := { nAlign, DT_CENTER } cFooter := Nil nFooter := 0 EndIf If CRLF $ cHead cTemp := "" AEval(hb_aTokens(cHead, CRLF), {|x| cTemp := If( Len(x) > Len(cTemp), x, cTemp )}) Else cTemp := cHead EndIf nMax := Max( GetTextWidth( 0, aDefMaxVal[ nI ]+'B', hFont ), GetTextWidth( 0, cTemp, hFontHead ) ) nMax := Max( nMax, 60 ) nMax := Max( nMax, nFooter ) If ! Empty( aSizes ) If valtype(aSizes[ nI ]) == 'N' .and. aSizes[ nI ] > 0 nMax := aSizes[ nI ] ElseIf valtype(aSizes[ nI ]) == 'C' nMax := GetTextWidth( 0, aSizes[ nI ], hFont ) EndIf EndIf ::aHeaders [ nI ] := cHead ::aColSizes [ nI ] := nMax ::aFormatPic[ nI ] := cPict ::aJustify [ nI ] := aAligns oCol := TSColumn():New( cHead, bData, cPict,, aAligns, nMax,, ::lEditable,,,,cFooter,,,,,,, ; Self, "ArrayWBlock(::oBrw," + LTrim( Str( nI ) ) + ")" ) If lFont oCol:hFontHead := hFontHead If lFooter oCol:hFontFoot := hFontFoot EndIf EndIf If ! empty(aName[ nI ]) .and. ValType(aName[ nI ]) == "C" oCol:cName := aName[ nI ] EndIf oCol:lOnGotFocusSelect := lSelected ::AddColumn( oCol ) Next ::lNoPaint := .F. ::ResetVScroll( .T. ) //V90 //V90 If ::lPainted ::GoTop() ::Refresh() EndIf //end Return Self
| Пример. Demo.prg Скрытый текст
Demo.prg ~~~~~~~~ #include "minigui.ch" #include "common.ch" #include "TSBrowse.ch" //REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN //REQUEST HB_LANG_RUWIN //REQUEST HB_LANG_RU866 //SET CODEPAGE TO RUSSIAN //HB_LANGSELECT( "RU" ) Proc MAIN Local oBrw, aDatos, aArray, aHead, aSize, aFoot, aPict, aAlign, aName, aFontHF Local hFontHead, hFontFoot Local cFontName := _HMG_DefaultFontName Local nFontSize := 10 Public aFont := {} SET DECIMALS TO 4 SET DATE TO GERMAN SET EPOCH TO 2000 SET CENTURY ON SET EXACT ON DEFINE FONT Font_1 FONTNAME cFontName SIZE nFontSize DEFINE FONT Font_2 FONTNAME cFontName SIZE nFontSize BOLD AADD( aFont, GetFontHandle( "Font_1" ) ) AADD( aFont, GetFontHandle( "Font_2" ) ) DEFINE WINDOW MAGAZIN AT 0, 0 ; TITLE "TEST" ; MAIN NOMAXIMIZE NOSIZE DEFINE STATUSBAR OF MAGAZIN STATUSITEM "0" // WIDTH 0 FONTCOLOR BLACK STATUSITEM "1" WIDTH 230 // FONTCOLOR BLACK STATUSITEM "2" WIDTH 230 // FONTCOLOR BLACK STATUSITEM "3" WIDTH 230 // FONTCOLOR BLACK END STATUSBAR DEFINE TBROWSE oBrw AT 0, 0 ; WIDTH MAGAZIN.WIDTH - 2 * GetBorderWidth() ; HEIGHT MAGAZIN.HEIGHT - GetTitleHeight() - GetTitleHeight() - ; GetProperty( "MAGAZIN", "StatusBar", "Height" ) - ; 2 * GetBorderHeight() ; ENUMERATOR ; FONT cFontName SIZE nFontSize ; GRID EDIT aDatos := CreateDatos() aArray := aDatos[1] aHead := aDatos[2] aSize := aDatos[3] aFoot := aDatos[4] aPict := aDatos[5] aAlign := aDatos[6] aName := aDatos[7] // hFontHead := aFont[1] // normal Header // hFontFoot := aFont[2] // bold Footer // aFontHF := { hFontHead, hFontFoot } // aFontHF := aFont[1] // normal Header, Footer aFontHF := aFont[2] // bold Header, Footer oBrw := SetArray2("oBrw", "MAGAZIN", aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName) // oBrw := SetArray2("oBrw", "MAGAZIN") // Demo array oBrw:nWheelLines := 1 oBrw:nClrLine := COLOR_GRID oBrw:nHeightCell += 2 oBrw:nHeightHead += 4 If ! empty(aFoot) oBrw:nHeightFoot += 4 EndIf If oBrw:lEnum oBrw:nHeightSpecHd := oBrw:nHeightCell EndIf END TBROWSE END WINDOW DoMethod("MAGAZIN","Activate") return ************************ STATIC FUNCTION CreateDatos() Local i, k := 1000, aDatos := {}, aHead, aSize, aFoot, aPict, aAlign, aName aDatos := Array(k) for i := 1 to k aDatos[ i ] := {" ", ; // 1 i, ; // 2 ntoc(i) + "_123", ; // 3 date()+i, ; // 4 PadR("Test line - " + ntoc(i), 20), ; // 5 round((10000-i) * i/3, 2), ; // 6 100.00 * i, ; // 7 0.12, ; // 8 round(100.00 * i * 0.12, 2), ; // 9 Round(1234567.00 / i, 3), ; // 10 PadR("Line "+StrZero(i, 5), 20), ; // 11 date(), ; // 12 time(), ; // 13 i % 2 == 0 } // 14 next aHead := aClone(aDatos[1]) // AEval(aHead, {|x,n| aHead[ n ] := "Head_" + hb_ntos(n) }) AEval(aHead, {|x,n| aHead[ n ] := "Head_" + hb_ntos(n) + ; iif(n % 2 == 0, CRLF + "My_"+hb_ntos(n), "") }) aFoot := array(len(aDatos[1])) AEval(aFoot, {|x,n| aFoot[ n ] := n }) // aFoot := .T. // подножие есть с пустыми значениями aPict := array(len(aDatos[1])) // можно не задавать, формируются aPict[10] := "99999999999.999" // автоматом для C,N по мах значению aSize := array(len(aDatos[1])) // можно не задавать, формируются aSize[10] := aPict[10] // автоматом по мах значению в колонке aAlign := array(len(aDatos[1])) // тип поля C - DT_LEFT aAlign[2] := DT_CENTER // D,L - DT_CENTER // N - DT_RIGHT aName := array(len(aDatos[1])) AEval(aName, {|x,n| aName[ n ] := "MyName_"+hb_ntos(n) }) RETURN { aDatos, aHead, aSize, aFoot, aPict, aAlign, aName }
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 807
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.08.15 16:35. Заголовок: SergKis пишет: Еще ..
SergKis пишет: цитата: | Еще предложение для TSBrowse |
| В эту сборку уже не попадет Уверен, что предложенные изменения - полезные, по два подобных метода в одном классе - это не перебор
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 788
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.15 18:34. Заголовок: gfilatov пишет:два п..
gfilatov пишет: цитата: | два подобных метода в одном классе - это не перебор |
| Можно было наследовать TSBrowse и менять, но тогда DEFINE разваливаются, SetArray внутри в методах встречается, его оставлять надо. Я сначала попытался удержаться в рамках SetArray, но не получилось (и он задействован в программах). У меня складывается впечатление, возможностей у TSBrowse много (но на низком уровне) и надо все строить, в каждом проекте, практически сначала или таскать код из проекта в проект - нет практически готовых решений- metodов (мне показалось для массива). Для работы с полями базы есть LoadField(...)+aColSel в DEFINE (еще не щупал), вот я и попытался для отчетов (по запросу) в массив, кирпичек побольше соорудить (в первую очередь ориентировался на себя, но улучшить желающие могут найтись, я надеюсь). Мое мнение, чем больше готовых, укрупненых решений - тем проще делать алгоритмы задачи, а то, что много методов (и даже похожих) - это такая мелочь (в сравнение с кодом VO тем более) - этим можно пренебречь.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 808
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.08.15 20:45. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно было наследовать TSBrowse и менять, но тогда DEFINE разваливаются |
| Да, я тоже сначала подумал о субклассинге, но Вы убедили, что это создает другие проблемы... SergKis пишет: цитата: | я и попытался для отчетов (по запросу) в массив |
| Тогда, может, стоит хотя бы переименовать метод в SetArrayForRep[ort]
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 789
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.15 23:12. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | переименовать метод в SetArrayForRep[ort] |
| Да, вполне передает сущность
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 790
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.08.15 12:19. Заголовок: gfilatov2002 Подпра..
gfilatov2002 Подправленный вариант Method SetArray2(...) Скрытый текст
METHOD SetArray2( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse Local nColumns, nI, cType, nMax, bData, cHead Local nN, cData, aDefMaxVal, aDefMaxLen, aDefType, aDefAlign, aDefFooter, oCol, ; nAlign, aAligns, lFooter := .F., cFooter, nFooter, cTemp, cPict, ; hFont := If( ::hFont != Nil, ::hFont, 0 ), ; lFont := hFont != 0, hFontHead := hFont, hFontFoot := hFont If empty(aArray) .or. ValType(aArray) != "A" nN := 1000 aArray := Array(nN) For nI := 1 To nN aArray[ nI ] := { nI, PadR("Line - "+StrZero(nI, 5), 20), ; Date()+(nI-1), Round(nN / nI, 3), nI % 2 == 0 } Next EndIf Default aHead := AClone(::aHeaders), ; aSizes := AClone(::aColSizes), ; aPicture := AClone(::aFormatPic), ; aAlign := If( ISARRAY(::aJustify), AClone(::aJustify), {} ), ; aName := {} If ValType(uFontHF) == 'N' .and. uFontHF != 0 hFontHead := uFontHF hFontFoot := uFontHF ElseIf ValType(uFontHF) == 'A' .and. Len(uFontHF) >= 2 If ValType(uFontHF[1]) == 'N' .and. uFontHF[1] != 0 hFontHead := uFontHF[1] EndIf If ValType(uFontHF[2]) == 'N' .and. uFontHF[2] != 0 hFontFoot := uFontHF[2] EndIf EndIf ::aArray := aArray ::lPickerMode := .F. nColumns := If( ! Empty( aHead ), Len( aHead ), If( ! Empty( ::aArray ), Len( ::aArray[ 1 ] ), 0 ) ) //V90 ::aDefValue := Array( Len( aArray[ 1 ] ) ) //V90 aDefMaxVal := Array(nColumns) aDefType := Array(nColumns) aDefAlign := Array(nColumns) aDefMaxLen := Array(nColumns) aFill(aDefMaxLen, 0) If Len(aPicture) != nColumns ASize(aPicture, nColumns) EndIf If Len(aAlign) != nColumns ASize(aAlign, nColumns) EndIf If Len(aName) != nColumns ASize(aName, nColumns) EndIf For nI := 1 To nColumns cType := ValType( ::aArray[ 1, nI ] ) aDefType[ nI ] := cType If cType $ "CM" ::aDefValue[ nI ] := Space( Len( ::aArray[ 1, nI ] ) ) aDefMaxVal [ nI ] := Trim( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_LEFT ElseIf cType == "N" ::aDefValue[ nI ] := 0 aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_RIGHT ElseIf cType == "D" ::aDefValue[ nI ] := CToD( "" ) aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_CENTER ElseIf cType == "T" #ifdef __XHARBOUR__ ::aDefValue[ nI ] := CToT( "" ) #else ::aDefValue[ nI ] := HB_CTOT("") #endif aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_LEFT ElseIf cType == "L" ::aDefValue[ nI ] := .F. aDefMaxVal [ nI ] := cValToChar( ::aArray[ 1, nI ] ) aDefMaxLen [ nI ] := Len( aDefMaxVal [ nI ] ) aDefAlign [ nI ] := DT_CENTER Else // arrays, objects and codeblocks not allowed ::aDefValue[ nI ] := "???" // not user editable data type aDefMaxVal [ nI ] := "???" aDefMaxLen [ nI ] := 0 aDefAlign [ nI ] := DT_LEFT EndIf Next ::nAt := 1 ::bKeyNo := { |n| If( n == Nil, ::nAt, ::nAt := n ) } //V90 ::cAlias := "ARRAY" // don't change name, used in method Default() ::lIsArr := .T. ::lIsDbf := .F. //JP V90 ::nLen := Eval( ::bLogicLen := { || Len( ::aArray ) + If( ::lAppendMode, 1, 0 ) } ) ::lIsArr := .T. ::bGoTop := { || ::nAt := 1 } ::bGoBottom := { || ::nAt := Eval( ::bLogicLen ) } ::bSkip := { |nSkip, nOld| nOld := ::nAt, ::nAt += nSkip, ::nAt := Min( Max( ::nAt, 1 ), ::nLen ), ::nAt - nOld } //V90 ::bGoToPos := { |n| Eval( ::bKeyNo, n ) } //V90 ::bBof := { || ::nAt < 1 } //V90 ::bEof := { || ::nAt > Len( ::aArray ) } //V90 ::lHitTop := .F. ::lHitBottom := .F. ::nRowPos := 1 ::nColPos := 1 ::nCell := 1 ::HiliteCell( 1 ) aDefFooter := Array(nColumns) aFill(aDefFooter, "") If ValType(uFooter) == "L" lFooter := uFooter ElseIf ValType(uFooter) == "A" lFooter := .T. For nI := 1 To Min( nColumns, Len(uFooter) ) aDefFooter[ nI ] := cValToChar(uFooter[ nI ]) Next EndIf If Empty( aHead ) aHead := AutoHeaders( Len( ::aArray[ 1 ] ) ) EndIf If aSizes != Nil .and. ValType( aSizes ) != "A" aSizes := AFill( Array( Len( ::aArray[ 1 ] ) ), nValToNum( aSizes ) ) ElseIf ValType( aSizes ) == "A" .and. ! Empty( aSizes ) If Len( aSizes ) < nColumns nI := Len( aSizes ) + 1 ASize( aSizes, nColumns ) AFill( aSizes, aSizes[ 1 ], nI ) EndIf Else aSizes := Nil EndIf For nI := 1 To Len(::aArray) For nN := 1 To nColumns cData := cValToChar( ::aArray[ nI, nN ] ) If len(cData) > len(aDefMaxVal[ nN ]) If aDefType[ nN ] == "C" aDefMaxVal[ nN ] := Trim(cData) aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len(aDefMaxVal[ nN ]) ) Else aDefMaxVal[ nN ] := cData aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len(cData) ) EndIf EndIf Next Next ::aHeaders := Array(nColumns) ::aColSizes := Array(nColumns) ::aFormatPic := Array(nColumns) ::aJustify := Array(nColumns) For nI := 1 To nColumns bData := ArrayWBlock( Self, nI ) cHead := cValToChar( aHead[ nI ] ) nAlign := aDefAlign[ nI ] cPict := Nil If aDefType[ nI ] == "C" If ValType(aPicture[ nI ]) == "C" .and. Len(aPicture[ nI ]) > 0 cTemp := If( left(aPicture[ nI ], 2) == "@K", subs(aPicture[ nI ], 4), aPicture[ nI ]) Else cTemp := repl("X", aDefMaxLen[ nI ]) EndIf If Len(cTemp) > Len(::aDefValue[ nI ]) ::aDefValue[ nI ] := Space( Len( cTemp ) ) EndIf cPict := repl("X", Len(::aDefValue[ nI ])) ElseIf aDefType[ nI ] == "N" If ValType(aPicture[ nI ]) == "C" cPict := aPicture[ nI ] Else cPict := repl("9", aDefMaxLen[ nI ]) If ( nN := At(".", aDefMaxVal[ nI ]) ) > 0 cTemp := subs(aDefMaxVal[ nI ], nN) cPict := left(cPict, Len(cPict) - Len(cTemp))+"."+repl("9", Len(cTemp)-1) EndIf EndIf EndIf If ValType(aAlign[ nI ]) == "N" .and. ( aAlign[ nI ] == DT_LEFT .or. ; aAlign[ nI ] == DT_CENTER .or. ; aAlign[ nI ] == DT_RIGHT ) nAlign := aAlign[ nI ] EndIf If lFooter aAligns := { nAlign, DT_CENTER, nAlign } cFooter := aDefFooter[ nI ] If CRLF $ cFooter cTemp := "" AEval(hb_aTokens(cFooter, CRLF), {|x| cTemp := If( Len(x) > Len(cTemp), x, cTemp )}) Else cTemp := cFooter EndIf nFooter := GetTextWidth( 0, cTemp, hFontFoot ) Else aAligns := { nAlign, DT_CENTER } cFooter := Nil nFooter := 0 EndIf If CRLF $ cHead cTemp := "" AEval(hb_aTokens(cHead, CRLF), {|x| cTemp := If( Len(x) > Len(cTemp), x, cTemp )}) Else cTemp := cHead EndIf nMax := Max( GetTextWidth( 0, aDefMaxVal[ nI ]+'W', hFont ), GetTextWidth( 0, cTemp, hFontHead ) ) nMax := Max( nMax, 32 ) nMax := Max( nMax, nFooter ) If ! Empty( aSizes ) If valtype(aSizes[ nI ]) == 'N' .and. aSizes[ nI ] > 0 nMax := aSizes[ nI ] ElseIf valtype(aSizes[ nI ]) == 'C' nMax := GetTextWidth( 0, aSizes[ nI ], hFont ) EndIf EndIf ::aHeaders [ nI ] := cHead ::aColSizes [ nI ] := nMax ::aFormatPic[ nI ] := cPict ::aJustify [ nI ] := aAligns oCol := TSColumn():New( cHead, bData, cPict,, aAligns, nMax,, ::lEditable,,,,cFooter,,,,,,, ; Self, "ArrayWBlock(::oBrw," + LTrim( Str( nI ) ) + ")" ) If lFont oCol:hFontHead := hFontHead If lFooter oCol:hFontFoot := hFontFoot EndIf EndIf If aDefType[ nI ] == "L" oCol:lCheckBox := .T. EndIf If ! empty(aName[ nI ]) .and. ValType(aName[ nI ]) == "C" oCol:cName := aName[ nI ] EndIf ::AddColumn( oCol ) Next ::lNoPaint := .F. ::ResetVScroll( .T. ) //V90 //V90 If ::lPainted ::GoTop() ::Refresh() EndIf //end Return Self
| И назвать его можно SetArrayTo(...), на нем и корректировку делать можно, не только отчет
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 809
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.08.15 12:45. Заголовок: SergKis пишет: Подп..
SergKis пишет: цитата: | Подправленный вариант Method SetArray2(...) |
| Благодарю
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 810
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.08.15 10:30. Заголовок: Выпустил очередной р..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4442
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.08.15 12:33. Заголовок: Собрал под новой вер..
Собрал под новой версией свои проги. Полёт нормальный !
|
|
|
Softlog86
|
| |
Пост N: 268
Зарегистрирован: 03.12.08
|
|
Отправлено: 14.08.15 00:03. Заголовок: Подскажите - это так..
Подскажите - это так и должно быть или лечится ?: 1) Есть форма с контролом TAB . и организовано несколько страниц PAGE . На первой странице - несколько строчек : LABEL и кнопок BUTTONEX . При первоначальном выводе формы - некоторые контролы и LABELы не отображаются пока мышкой не проведешь там где они должны быть нарисованы ....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 811
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.08.15 22:49. Заголовок: Softlog86 пишет: эт..
Softlog86 пишет: цитата: | это так и должно быть или лечится ? |
| Нет, это не нормально Лечится с помощью включения следующей строки в процедуру ON INIT: цитата: | InvalidateRect( Application.Handle, 0 ) |
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 812
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.08.15 22:50. Заголовок: SergKis пишет: наз..
SergKis пишет: цитата: | назвать его можно SetArrayTo(...) |
| Добавил этот код с небольшими изменениями в новую сборку
|
|
|
Alex_Cher
|
| |
Пост N: 10
Зарегистрирован: 18.06.15
|
|
Отправлено: 16.08.15 12:06. Заголовок: Уважаемый gfilatov2..
Уважаемый gfilatov2002 ... где можно скачать полный перечень кодов по последней сборки, хотя бы с небольшим описание ...?
|
|
|
Dima
|
| |
Пост N: 5223
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.08.15 12:41. Заголовок: Alex_Cher пишет: гд..
Alex_Cher пишет: цитата: | где можно скачать полный перечень кодов по последней сборки |
| Каких еще кодов ?
|
|
|
Haz
|
| |
Пост N: 624
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.08.15 13:20. Заголовок: Каких еще кодов ? ч..
чит кодов типа неубиваемая программа , монопольное владение процессором, самовосстановление при сбое и пр
|
|
|
Dima
|
| |
Пост N: 5224
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.08.15 13:20. Заголовок: Haz пишет: чит кодо..
Haz пишет: я думал коды запуска ракет надо
|
|
|
Haz
|
| |
Пост N: 625
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.08.15 13:24. Заголовок: Alex_Cher пишет: гд..
Alex_Cher пишет: цитата: | где можно скачать полный перечень кодов по последней сборки, хотя бы с небольшим описание ...? |
| Исходники минигуи открыты , все в них. В сборку входят и сами сырцы
|
|
|
Dima
|
| |
Пост N: 5227
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.08.15 16:47. Заголовок: gfilatov2002 Предла..
gfilatov2002 Предлагаю все WINAPI функции (работающие корректно) присутствующие только в примерах , прикрутить к основной библиотеке.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 813
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.08.15 17:07. Заголовок: Dima пишет: все WIN..
Dima пишет: цитата: | все WINAPI функции ... прикрутить к основной библиотеке. |
| Этот подход сейчас используется в официальной сборке HMG. И он привел к тому, что размер экзешника простого примера составляет свыше 3,5 MБ. Подобный пример, собранный с помощью минигуи с компилятором MinGW, будет иметь размер около 2.2 MБ. Поэтому сохранение компактного ядра библиотеки рассматривается как приоритетная задача в Минигуи. А использование дополнительных функций из примеров рекомендуется только в случае необходимости. Поэтому и ответ на Ваше предложение - отрицательный
|
|
|
Dima
|
| |
Пост N: 5228
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.08.15 17:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Поэтому и ответ на Ваше предложение - отрицательный |
| Да , предложение я не совсем верно озвучил. Скорее всего правильней было бы эти функции сложить в отдельную либу (хош линкуй , не хош не линкуй). В общем ладно....проехали.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 797
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.08.15 21:19. Заголовок: gfilatov2002 Можно ..
gfilatov2002 Можно подправить некоторое места, добавив Self при вызове блока кода (выделено bold-ом) ? METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse ... Case nKey == VK_CONTEXT .and. nFlags == 22872065 If ::bContext != Nil Eval( ::bContext, ::nRowPos, ::nColPos, Self ) EndIf Case !::lCellbrw .and. ( nKey == VK_RETURN .or. nKey == VK_SPACE ) .and. ::bLDblClick != Nil // 14.07.2015 Eval( ::bLDblClick, Nil, nKey, nFlags, Self ) // .08. Otherwise ::SuperKeyDown( nKey, nFlags ) EndCase Return 0 ... METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse ... #ifndef __EXT_SELECTION__ ElseIf ::lCanSelect .and. ::bUserKeys == Nil // Added 28.09.2012 ::Selection() #endif ElseIf ::bLDblClick != Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self ) // .08. EndIf ElseIf nClickRow == 0 .and. ::lDrawHeaders .and. ! ::lNoChangeOrd // GF 1.71 If ::bLDblClick != Nil .and. ::aActions == Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self ) // .08. Else ::SetOrder( ::nAtCol( nColPix, ! ::lSelector ) ) //V90 EndIf ElseIf nClickRow == -2 .and. ::lDrawSpecHd .and. ::aColumns[ nCol ]:lEditSpec ... METHOD RButtonDown( nRowPix, nColPix, nFlags ) CLASS TSBrowse ... ::DrawSelect() bRClicked := If( ::aColumns[ nCol ]:bRClicked != Nil, ; ::aColumns[ nCol ]:bRClicked, ::bRClicked ) If bRClicked != Nil Eval( bRClicked, uPar1, uPar2, ::nAt, Self ) //V90 .08. Return 0 //V90 Else Return 0 EndIf ElseIf lHeader
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1150
Зарегистрирован: 27.01.07
|
|
Отправлено: 24.08.15 21:52. Заголовок: SergKis пишет: METH..
SergKis пишет: цитата: | METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) |
|
SergKis пишет: цитата: | METHOD RButtonDown( nRowPix, nColPix, nFlags ) |
| А тут разве не надо в параметрах Self указать?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 798
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.08.15 23:54. Заголовок: PSP пишет:А тут разв..
PSP пишет: цитата: | А тут разве не надо в параметрах Self указать? |
| Нет. Метод уже принадлежит объекту Self. Это не функция. В блок кода параметром будет передана ссылка на объект TsBrowse для использования
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 799
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.08.15 00:01. Заголовок: SergKis пишет: Это н..
SergKis пишет: В итоге, конечно, это статик функция, как конечная единица кода, но собственные свойства (DATA ..., METHOD ..., ....) доступны ей без параметров
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1151
Зарегистрирован: 27.01.07
|
|
Отправлено: 25.08.15 07:47. Заголовок: SergKis, thanks )..
SergKis, thanks )
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 819
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.08.15 10:18. Заголовок: SergKis пишет: подп..
SergKis пишет: цитата: | подправить некоторое места, добавив Self |
| Благодарю! Сделал, конечно
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 800
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.08.15 12:36. Заголовок: gfilatov2002 :sm36..
gfilatov2002
|
|
|
Haz
|
| |
Пост N: 638
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.08.15 13:28. Заголовок: gfilatov2002 Григори..
gfilatov2002 Григорий , можно в класс TsBrowse добавить метод :GoToRec ( nRec ) ? А то Seek есть, Locate есть , а чтоб встать на нужную запись приходится ее или сикать или локатить по сути это кусок из метода :expSeek() который просто отвечает за правильную прорисовку после перехода по DbSeek() , такой же кусок в методе :ExpLocate() . Можно его продублировать как метод :GoToRec(), а можно и упростить :ExpSeek() и ExpLocate() заменив подобный код вызовом :GoToRec() METHOD GoToRec( nRec ) CLASS TSBrowse Local nRecNo, nLines If ::lIsDbf ::Reset() nRecNo := (::cAlias )->( RecNo() ) nLines := ::nRowCount() ::lValidating := .T. ( ::cAlias )->( DbGoto( nRec ) ) If nRecNo != ( ::cAlias )->( RecNo() ) .and. ::nLen > nLines nRecNo := ( ::cAlias )->( RecNo() ) ( ::cAlias )->( DbSkip( nLines - ::nRowPos ) ) If ( ::cAlias )->( EoF() ) Eval( ::bGoBottom ) ::nRowPos := nLines ::nAt := ::nLogicPos() While ::nRowPos > 1 .and. ( ::cAlias )->( RecNo() ) != nRecNo ::Skip( -1 ) ::nRowPos -- EndDo Else ( ::cAlias )->( DbGoTo( nRecNo ) ) ::nAt := ::nLogicPos() EndIf ::Refresh( .F. ) ::ResetVScroll() ElseIf nRecNo != ( ::cAlias )->( RecNo() ) nRecNo := ( ::cAlias )->( RecNo() ) Eval( ::bGoTop ) ::nAt := ::nRowPos := 1 While nRecNo != ( ::cAlias )->( RecNo() ) ::Skip( 1 ) ::nRowPos ++ EndDo ::Refresh( .F. ) ::ResetVScroll() EndIf If ::bChange != Nil Eval( ::bChange, Self, 0 ) EndIf ::lHitTop := ::lHitBottom := .F. end Return .T.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 820
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.08.15 15:35. Заголовок: Haz пишет: в класс ..
Haz пишет: цитата: | в класс TsBrowse добавить метод :GoToRec ( nRec ) |
| Благодарю за помощь! Сделал
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 821
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.08.15 13:30. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня RC1 для следующей сборки 2.5.2. Скрытый текст
* New: AES File Encryption Library source code (see in folder \Source\HbAES). This library is based on PolarSSL (http://www.polarssl.org). You can use the following function for crypt/decrypting a file: CryptFileAES( cFileIn, cFileOut, cPassword, nMode ) - nMode = 0 for Encryption and nMode = 1 for Decryption; - cPassword can be either a character string or a key filename. Based upon a contribution of S.Rathinagiri <srgiri@dataone.in>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\AESDEMO) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - Fixed: Added auto scroll of a text in EDITBOX and TEXTBOX controls at the changing of a 'CaretPos' property. - New: Added optional clause STOREJOBDATA <aJobData> in the command START PRINTDOC. Note that aJobData memvar must be declared as Public or Private for using in the function HMG_PrintGetJobInfo(). aJobInfo := HMG_PrintGetJobInfo ( aJobData ) --> {} or { nJobID, cPrinterName, cMachineName, cUserName, cDocument, cDataType, cStatus, nStatus, nPriorityLevel, nPositionPrintQueue, nTotalPages, nPagesPrinted, cSubmittedDate, cSubmittedTime } Contributed by Dr. Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Print_JobStatus) - New: Added the helpful function HMG_PrinterGetStatus ( [ cPrinterName ] ) --> nStatusPrinter Contributed by Dave. (see demo in folder \samples\Basic\Print_JobStatus) * Enhanced: Compatibility flags for Windows Vista, 7, 8, 8.1 and 10 were added to an application manifest. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see Windows7.Manifest in folder \Resources) * Updated: HBPrinter library (see source in folder \Source\HBPrinter): - PRG-code was formatted by Harbour contrib hbformat utility; - C-code was formatted to Harbour standard using uncrustify tool. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Dll library source code (see in folder \Source\Dll): - correction of using of WIN32_LEAN_AND_MEAN constant at compiling. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - the C-function GetSysMetrics() is defined as pseudo-function; - the function LoadImage() supports JPG, GIF, TIF and PNG images. Transparent property will be added to these images automatically. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see 'Grid Test' at demo in folder \samples\Advanced\TSBrowse) - added a new method SetArrayTo in the TSBrowse class. Contributed by SergKis (see demo in folder \samples\Advanced\Tsb_array_2) - added a new method GoToRec( nRec ) in the TSBrowse class. Contributed by Igor Nazarov (see demo in folder \samples\Advanced\Tsb_addrecord) * Updated: Harbour Compiler 3.2.0dev (SVN 2015-08-26 16:21). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * Updated: 'Get Password with CredUI' sample: - added the function GetDomainName(); - added a show of usage of the CredUIPrompt flags. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\GetPassword) * Updated: 'MiniPrint: Enhanced look of Print Preview window' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\MiniPrint) * Updated: 'Process Information' sample is based on the ProcInfo library: - fixed a memory leak in the C-function EnumWindows(). Problem was reported by Igor Nazarov. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\ProcInfo)
|
Искренне балагодарен зв Вашу помощь в улучшении и развитии библиотеки TSBrowse
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 801
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.08.15 15:58. Заголовок: gfilatov2002 Обнару..
gfilatov2002 Обнаружил бяку с LoadsField(...) TsBrowse. Пример: Скрытый текст
#include "minigui.ch" #include "tsbrowse.ch" REQUEST DBFCDX FUNCTION Main() LOCAL i, k, n, cForm, cBrw, oBrw, aFld RDDSETDEFAULT('DBFCDX') SET EXCLUSIVE ON SET AUTOPEN ON SET DECIMALS TO 4 SET DATE TO GERMAN SET EPOCH TO 2000 SET CENTURY ON SET EXACT ON If ! Open_Table("TZAK", "TZAK") MsgStop("File not used !", "Error") RETURN EndIf cForm := "Form_1" DEFINE WINDOW &cForm AT 0,0 ; WIDTH 700 ; HEIGHT 500 ; TITLE 'Demo test' ; MAIN cBrw := "oBrw5" DEFINE TBROWSE &cBrw AT 10,10 ; WIDTH 670 HEIGHT 450 ; ALIAS "TZAK" ; HEADERS "Value 1" , "Op.", "Name", "Op.", "Value 2" ; WIDTHS 150 , 40, 150, 40, 150 ; COLUMNS { "R_1" , "R_5", "R_2", "R_6", "R_3" } :SetAppendMode( .F. ) :SetDeleteMode( .F. ) :lNoHScroll := .T. END TBROWSE oBrw := _HMG_aControlIds[ GetControlIndex(cBrw, cForm) ] // aFld := { "R_1", "R_5", "R_2", "R_6", "R_3" } // LoadFields(cBrw, cForm, .F., aFld) LoadFields(cBrw, cForm) oBrw:bOnEscape := {|o| DoMethod(cForm, 'Release') } END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 RETURN Function Open_Table( cFile, cAlias ) Local a, i DEFAULT cFile := "tzak", ; cAlias := cFile cFile := lower(cFile) If ! file(cFile+".dbf") dbCreate(cFile, { {"R_0", "C", 1, 0}, ; {"R_1", "C", 40, 0}, ; {"R_2", "C", 30, 0}, ; {"R_3", "C", 40, 0}, ; {"R_4", "C", 30, 0}, ; {"R_5", "C", 2, 0}, ; {"R_6", "C", 2, 0}, ; {"R_7", "C", 10, 0}, ; {"R_8", "C", 80, 0}, ; {"R_9", "C", 160, 0} ; }) a := { {"D", "", "Perionds", "", "99.99.9999" , "<=", "<="}, ; {"C", "", "Sclad" , "", "XXXXXXXXXXXXXXXXXXXX", "<=", "<="}, ; {"C", "", "Material", "", "XXXXXXXXXXXXXXXXXXXX", "<=", "<="}, ; {"N", "", "Kol-vo" , "", "999999999.999" , "<=", "<="}, ; {"N", "", "Summa" , "", "9999999999.99" , "<=", "<="} ; } USE ( cFile ) ALIAS ( cFile ) NEW For i := 1 To len(a) dbAppend() AEval(a[ i ], {|x,n| FieldPut(n, x) }) Next USE EndIf If ( i := RAt('\', cAlias) ) > 0 cAlias := upper(subs(cAlias, i+1)) EndIf USE ( cFile ) ALIAS ( cAlias ) SHARED NEW Return Used()
| искажаются заголовки, не беруться уст. width, picture Исправил так: METHOD LoadFields( lEditable ) было cHeading := If( ! ::aHeaders == Nil .and. Len( ::aHeaders ) >= nE, ::aHeaders[ nE ], ; ::Proper( ( ::cAlias )->( Field( nE ) ) ) ) стало If ValType(::aHeaders) == "A" .and. ! empty(::aHeaders) .and. n <= Len( ::aHeaders ) // .08. cHeading := ::aHeaders[ n ] Else cHeading := ::Proper( ( ::cAlias )->( Field( nE ) ) ) EndIf было nSize := If( ! aColSizes == Nil .and. Len( aColsizes ) >= nE, aColSizes[ nE ], Nil ) cType := aStru[ nE, 2 ] If cType == "C" стало If ValType(::aColSizes) == "A" .and. ! empty(::aColSizes) .and. n <= Len( ::aColSizes ) // .08. nSize := ::aColSizes[ n ] Else nSize := If( ! aColSizes == Nil .and. Len( aColsizes ) >= nE, aColSizes[ nE ], Nil ) EndIf cType := aStru[ nE, 2 ] If cType == "C" было nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading ) ), hFont ), nSize ) nSize += If( ! Empty( cOrder ), 14, 0 ) //V90 EndIf cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + ::cAlias + '"))' стало nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading ) ), hFont ), nSize ) nSize += If( ! Empty( cOrder ), 14, 0 ) //V90 EndIf If ValType(::aFormatPic) == "A" .and. ! empty( ::aFormatPic ) .and. n <= Len( ::aFormatPic ) // .08. cPicture := ::aFormatPic[ n ] EndIf cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + ::cAlias + '"))'
|
|
|
krutoff
|
| |
Пост N: 171
Зарегистрирован: 17.10.05
|
|
Отправлено: 31.08.15 12:37. Заголовок: On INIT
Григорий, наткнулся на такую проблемку. Для ввода новой записи в полнооконном режиме я всегда делаю такой код if isAppend; Go Bottom; Skip; endIf // Чтобы показало нулевые поля Затем форму наполняю getBox'ами с параметром FIELD. В этом случае фома будет универсальной для ввода/корректировки записи. Так вот если при вводе новой записи в ON INIT переприсвоить значения getBox'ов, то ничего не переприсваивается. Нашел, где портится - при открытии окна идет цепочка процедур (h_windows.prg): _ActivateWindow _SetActivationFlag _ProcessInitProcedure _RefreshDataControls И вот эта последняя процедура _RefreshDataControls присваивает значения из записи файла. Можно ли в этой цепочке поставить _ProcessInitProcedure последней?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 823
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.09.15 08:31. Заголовок: Выпустил очередной р..
|
|
|
Haz
|
| |
Пост N: 649
Зарегистрирован: 20.02.11
|
|
Отправлено: 02.09.15 15:42. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выпустил очередной релиз библиотеки |
| пересобрал проект все норм
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 824
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.09.15 16:34. Заголовок: Haz Игорь, благодар..
Haz Игорь, благодарю за подтверждение! krutoff Так задумано автором, и менять этот порядок вызовов нет смысла из соображений совместимости со старым кодом
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 813
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.15 12:32. Заголовок: gfilatov2002 Григор..
gfilatov2002 Григорий, поковырялся еще в вызовах блока кода TsBrowse. Можно добавть эти модификации (bold-ом) ? METHOD DrawHeaders( lFooters ) CLASS TSBrowse ... For nI := nBegin To nLastCol ... nAlign := If( ValType( oColumn:nHAlign ) == "B", ; Eval( oColumn:nHAlign, nJ, Self ), oColumn:nHAlign ) ... hBitMap := If( ValType( oColumn:uBmpHead ) == "B", Eval( oColumn:uBmpHead, nJ, Self ), oColumn:uBmpHead ) ... cHeading := If( Valtype( oColumn:cHeading ) == "B", Eval( oColumn:cHeading, nJ, Self ), oColumn:cHeading ) ... nClr3dL := If( ValType( nClr3dL ) == "B", Eval( nClr3dL, 0, nJ, Self ), nClr3dL ) nClr3dS := If( ValType( nClr3dS ) == "B", Eval( nClr3dS, 0, nJ, Self ), nClr3dS ) ... IF ::lDrawSpecHd ... nAlign := If( ValType( oColumn:nSAlign ) == "B", Eval( oColumn:nSAlign, nJ, Self ), oColumn:nSAlign ) ... nClrFore := If( ValType( nClrFore ) == "B", Eval( nClrFore, nJ, Self ), nClrFore ) ... nClrBackS := If( ValType( nClrBackS ) == "B", Eval( nClrBackS, nJ, Self ), nClrBackS ) ... cHeading := If( Valtype( oColumn:cSpcHeading ) == "B", Eval( oColumn:cSpcHeading, nJ, Self ), oColumn:cSpcHeading ) ... hBitMap := If( ValType( oColumn:uBmpSpcHd ) == "B", Eval( oColumn:uBmpSpcHd, nJ, Self ), oColumn:uBmpSpcHd ) ... nClr3dL := If( ValType( nClr3dL ) == "B", Eval( nClr3dL, 0, nJ, Self ), nClr3dL ) nClr3dS := If( ValType( nClr3dS ) == "B", Eval( nClr3dS, 0, nJ, Self ), nClr3dS ) ... If ::lFooting .and. ::lDrawFooters ... nClrFore := If( ValType( nClrFore ) == "B", Eval( nClrFore, nJ, Self ), nClrFore ) ... nClrBack := If( ValType( nClrBack ) == "B", Eval( nClrBack, nJ, Self ), nClrBack ) ... cFooting := If( Valtype( oColumn:cFooting ) == "B", Eval( oColumn:cFooting, nJ, Self ), oColumn:cFooting ) ... hBitMap := If( ValType( oColumn:uBmpFoot ) == "B", Eval( oColumn:uBmpFoot, nJ, Self ), oColumn:uBmpFoot ) ... nClr3dL := If( ValType( nClr3dL ) == "B", Eval( nClr3dL, 0, nJ, Self ), nClr3dL ) nClr3dS := If( ValType( nClr3dS ) == "B", Eval( nClr3dS, 0, nJ, Self ), nClr3dS ) ... METHOD DrawLine( xRow ) CLASS TSBrowse ... For nI := nBegin To nLastCol ... nAlign := If( ValType( nAlign ) == "B", Eval( nAlign, nJ, Self ), nAlign ) ... hBitMap := If( ValType( uBmpCell ) == "B", Eval( uBmpCell, nJ, Self ), uBmpCell ) ... nClr3dL := If( ValType( nClr3dL ) == "B", Eval( nClr3dL, ::nAt, nJ, Self ), nClr3dL ) nClr3dS := If( ValType( nClr3dS ) == "B", Eval( nClr3dS, ::nAt, nJ, Self ), nClr3dS ) ... METHOD DrawSelect( xRow ) CLASS TSBrowse ... For nI := nBegin To nLastCol ... nAlign := If( ValType( nAlign ) == "B", Eval( nAlign, nJ, Self ), nAlign ) ... hBitMap := If( ValType( uBmpCell ) == "B", Eval( uBmpCell, nJ, Self ), uBmpCell ) ... nClr3dL := If( ValType( nClr3dL ) == "B", Eval( nClr3dL, ::nAt, nJ, Self ), nClr3dL ) nClr3dS := If( ValType( nClr3dS ) == "B", Eval( nClr3dS, ::nAt, nJ, Self ), nClr3dS ) ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 825
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.09.15 14:33. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно добавть эти модификации |
| Если очень нужно, то, конечно, сделаю...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 815
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.15 15:22. Заголовок: gfilatov2002 пишет:Е..
gfilatov2002 пишет: цитата: | Если очень нужно, то, конечно, сделаю... |
| Дело в том, что при вызове блока кода без nJ, Sel не понятно, какая колонка прорисовывается и использование PUBLIC oBrw переменной в нем не самый лучший стиль программирования. Например cFooting := If( Valtype( oColumn:cFooting ) == "B", Eval( oColumn:cFooting, nJ, Self ), oColumn:cFooting ) без nJ требует от блока кода указания в какой колонке он используется, а если добавить колонку перед - придется править все правые блоки указывая новую позицию и это справедливо для всех указанных выше строк
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 816
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.15 16:22. Заголовок: PS. без nJ к oCol:cN..
PS. без nJ к oCol:cName не прицепиться
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 827
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.09.15 16:36. Заголовок: SergKis пишет: без ..
SergKis пишет: цитата: | без nJ к oCol:cName не прицепиться |
| Уже сделал эти исправления
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 817
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.15 17:08. Заголовок: gfilatov2002 Отличн..
gfilatov2002 Отлично. А что на счет поста N 801 с предыдущего листа
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 828
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.09.15 17:34. Заголовок: SergKis пишет: что ..
SergKis пишет: Благодарю за напоминание Пропустил эти исправления Сейчас буду проверять и затем использовать
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 818
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.15 18:47. Заголовок: gfilatov2002 Еще пр..
gfilatov2002 Еще предложение, добавить в CLASS TSColumn переменную DATA lValToCharEmpty AS LOGICAL INIT .F. // при .T. показывать пустую строку для пустых значений типа D,N,T,L после cValToChar(...) вместо 0, 0.00, / / , ... добавив небольшой код (bold-ом) METHOD DrawLine( xRow ) CLASS TSBrowse ... //V90 If lCheck Default ::aCheck := { StockBmp( 6 ), StockBmp( 7 )} hBitMap := ::aCheck[ If( Upper( uData ) == "T", 1, 2 ) ] nAlign := nMakeLong( DT_CENTER, DT_CENTER ) uData := "" ElseIf oColumn:lValToCharEmpty .and. empty(uData) uData := "" EndIf //end ... METHOD DrawSelect( xRow ) CLASS TSBrowse ... If lCheck //V90 Default ::aCheck := { StockBmp( 6 ), StockBmp( 7 ) } hBitMap := ::aCheck[ If( Upper( uData ) == "T", 1, 2 ) ] nAlign := nMakeLong( DT_CENTER, DT_CENTER ) uData := "" ElseIf oColumn:lValToCharEmpty .and. empty(uData) uData := "" EndIf //end ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 829
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.09.15 21:15. Заголовок: SergKis пишет: Еще ..
SergKis пишет: Благодарю за помощь Сделал, но только переименовал переменную в lEmptyValToChar
|
|
|
Haz
|
| |
Пост N: 655
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.09.15 14:10. Заголовок: Григорий , еще право..
Григорий , еще правочка . В одном месте в блок bPrevEdit не передается обект. Остальные вызовы по коду OK METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse ... ... If ::aColumns[ nCol ]:bPrevEdit != Nil If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) ) // append mode for arrays Else // GF 16-05-2008 uVal := Eval( ::aColumns[ nCol ]:bData ) uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self ) If ValType( uVal ) == "L" .and. ! uVal Return 0 EndIf EndIf EndIf
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 830
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.09.15 15:16. Заголовок: Haz пишет: еще прав..
Haz пишет: Благодарю за помощь! Поправил...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 820
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.15 16:54. Заголовок: Haz пишет:uVal := Ev..
Haz пишет: цитата: | uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self ) |
| Не знаю насколько это важно, но у себя я добавил еще параметр Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self, .T. ) // .T. - вызов из ::Edit(...) метода uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self .F. ) // .F. - вызов из ::KeyDown(...) метода
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4518
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.09.15 12:14. Заголовок: Григорий, а можно в ..
Григорий, а можно в ядро библиотеки поставить 2 классные функции SergKis ? GetClientWidth() и GetClientHeight() Они прекрасно выдают правильные размеры объектов и пользоваться удобно. Пример: Скрытый текст #include "minigui.ch" Function MAIN() Local nMaxWidth, nMaxHeight nMaxWidth := GetClientWidth(0) nMaxHeight := GetClientHeight(0) DEFINE WINDOW Form_1 AT 0,0 WIDTH nMaxWidth HEIGHT nMaxHeight ; TITLE 'Test MAX desktop' ; MAIN END WINDOW Form_1.Center Form_1.Activate Return Nil /////////////////////////////////////////////////////////////////////////////////////////// // SergKis http://clipper.borda.ru // // GETCLIENTHEIGHT(0) - высота клиентской (внутренней) области Desktop с учетом наличия строки Start // GETCLIENTWIDTH(0) - ширина клиентской (внутренней) области Desktop // GETCLIENTHEIGHT(hWnd) - высота клиентской (внутренней) области окна (или контрола) // GETCLIENTWIDTH(hWnd) - ширина клиентской (внутренней) области окна (или контрола) // т.е.: // hWnd := GetFormHandle('Form_1') // MsgDebug( GetClientWidth(hWnd), GetClientHeight(hWnd) ) #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" // BAA HB_FUNC( GETCLIENTWIDTH ) { RECT rect; LONG hWnd=hb_parnl(1); // SPI_GETWORKAREA == 0x0030 if(hWnd==0) SystemParametersInfo( 0x0030, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.right - rect.left ); } // BAA HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; LONG hWnd=hb_parnl(1); // SPI_GETWORKAREA == 0x0030 if(hWnd==0) SystemParametersInfo( 0x0030, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } #pragma ENDDUMP
|
|
|
|
Dima
|
| |
Пост N: 5274
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.09.15 12:54. Заголовок: Andrey Да функций м..
Andrey Да функций много хороших и полезных с WINAPI , но вырастет ядро. Вот что Григорий ответил на похожее предложение НО более глобальное цитата: | цитата: все WINAPI функции ... прикрутить к основной библиотеке. Этот подход сейчас используется в официальной сборке HMG. И он привел к тому, что размер экзешника простого примера составляет свыше 3,5 MБ. Подобный пример, собранный с помощью минигуи с компилятором MinGW, будет иметь размер около 2.2 MБ. Поэтому сохранение компактного ядра библиотеки рассматривается как приоритетная задача в Минигуи. А использование дополнительных функций из примеров рекомендуется только в случае необходимости. Поэтому и ответ на Ваше предложение - отрицательный |
| ЗЫ Проще самостоятельно затолкать все нужное в свою отдельную либу.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 824
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.15 11:34. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение немного поменять стоки местами: METHOD EditExit(...) ... Line: 4045 ::lAppendMode := oCol:oEdit:lAppend oCol:oEdit:Move( 1500,0 ) oCol:oEdit:End() // oCol:oEdit := Nil было ::PostEdit( uValue, nCol, bValid ) oCol:oEdit := Nil ::oWnd:bValid := ::oGet cMsg := If( ! Empty( oCol:cMsg ), oCol:cMsg, ::cMsg ) cMsg := If( Valtype( cMsg ) == "B", Eval( cMsg, Self, ::nCell ), cMsg ) ::SetMsg( cMsg ) Return Nil ... Line: 4091 oCol:oEdit:End() // oCol:oEdit := Nil было ::oWnd:bValid := ::oGet ::PostEdit( uValue, nCol, bValid ) oCol:oEdit := Nil cMsg := If( ! Empty( oCol:cMsg ), oCol:cMsg, ::cMsg ) cMsg := If( Valtype( cMsg ) == "B", Eval( cMsg, Self, ::nCell ), cMsg ) ::SetMsg( cMsg ) ... Тогда в bValid из oCol:oEdit координаты ячейки видны нормальным образом (сейчас нет)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 831
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.15 15:26. Заголовок: SergKis пишет: Пред..
SergKis пишет: цитата: | Предложение немного поменять |
| Принимается с благодарностью
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 825
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.15 21:18. Заголовок: gfilatov2002 Ткнулс..
gfilatov2002 Ткнулся в oCol:bExtEdit != Nil // external edition нет информации о ячейке (координаты). Может стоит добавить такой метод в TsBrowse ? METHOD GetCellSize( nCell, nRowPos ) CLASS TSBrowse Local nI, oCol, nRow, nCol, nStartX := 0 Default nCell := ::nCell, ; nRowPos := ::nRowPos oCol := ::aColumns[ nCell ] If ! oCol:lVisible Return Nil EndIf If ::nFreeze > 0 For nI := 1 To Min( ::nFreeze , nCell - 1 ) nStartX += ::GetColSizes()[ nI ] Next EndIf For nI := ::nColPos To nCell - 1 nStartX += ::GetColSizes()[ nI ] Next nRow := nRowPos - 1 nRow := ( nRow * ::nHeightCell ) + ::nHeightHead + ; ::nHeightSuper + ::nHeightSpecHd + If( oCol:l3DLook, 2, 0 ) nCol := nStartX + If( oCol:l3DLook, 2, 0 ) nWidth := ::GetColSizes()[ nCell ] - If( oCol:l3DLook, 2, 0 ) nHeight := ::nHeightCell - If( oCol:l3DLook, 1, -1 ) Return { nCol, nRow, nWidth, nHeight }
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 832
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.09.15 21:58. Заголовок: Просто к сведению. У..
Просто к сведению. Успешно портировал новый GUI-отладчик из HMG-кода в minigui-код.
|
|
|
Haz
|
| |
Пост N: 662
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.09.15 23:00. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Успешно портировал новый GUI-отладчик |
| хотелось бы глянуть на него
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4520
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.09.15 01:07. Заголовок: Давно хотелось такой..
Давно хотелось такой инструмент !!!
|
|
|
santy
|
| |
Пост N: 331
Зарегистрирован: 16.12.08
|
|
Отправлено: 15.09.15 12:04. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Просто к сведению. Успешно портировал новый GUI-отладчик из HMG-кода в minigui-код. |
| Неплохо. Отладчик будет в новой версии?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 833
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.09.15 14:46. Заголовок: santy пишет: Отладч..
santy пишет: цитата: | Отладчик будет в новой версии? |
| Да, в виде дополнительной библиотеки, поскольку не хочется в каждое приложение добавлять еще и ресурсы отладчика. Если интересно, я могу выложить тестовый пример, который работает из-под отладчика
|
|
|
Haz
|
| |
Пост N: 663
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.09.15 15:03. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Если интересно, я могу выложить тестовый пример, |
| интересно
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 834
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.09.15 19:51. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | я могу выложить тестовый пример |
| click here
|
|
|
Haz
|
| |
Пост N: 664
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.09.15 10:39. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Григорий, кликнул here. Неплохо, только два вопроса вопроса. 1. Предполагается ли дальнейшее развитие ( т.к. точно есть что улучшать ) 2. Закрыты или открыты исходники ? ( догадываюсь закрыты т.к. есть debugger.lib ) PS. Что к примеру можно улучшить. т.к. это GUI отладчик - то возможно это 1. получить и показать хендлы окон включая все дочерние окна формы ( label, getbox и т.д ) 2. получить и показать классы дочерние окна формы ( static, button ...) 3. FindWindowText(). SetWindowText, GetWindowText, SetWindowLong() т.д. PPS.Очень интересный проект отладчика GUI есть у А. Кресина, но год стоит на паузе. Или Александру не до него или проект остановлен т.к. в принципе функционал отладки есть
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 835
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.09.15 14:13. Заголовок: Haz пишет: Предпола..
Haz пишет: цитата: | Предполагается ли дальнейшее развитие |
| Да, автор продолжает работать над этим проектом. Вчера прислал мне последние изменения... Haz пишет: цитата: | Закрыты или открыты исходники ? |
| Исходники полностью открыты (open source), но я продолжаю дорабатывать свой вариант, портированный для работы в минигуи Благодарю за Ваше внимание
|
|
|
Haz
|
| |
Пост N: 665
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.09.15 14:16. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Да, автор продолжает работать |
|
gfilatov2002 пишет: цитата: | Исходники полностью открыты |
| Спасибо, обе новости хорошие
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 836
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.09.15 17:48. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня RC1 для следующей сборки 2.5.3. Список изменений см. ниже Скрытый текст * New: 'HMG Debugger' library (see source in folder \Source\Debugger). Don't miss this very interesting GUI tool! Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\DBG_TEST) * Fixed: Double repainting at adding a new row in a Grid control with dynamic coloring. It was a reason of the slow colored grid refreshing. Added additional dynamic colors update at set focus to the grid. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\ProcInfo) * Fixed: 'On CheckboxClicked' event in GRID with CHECKBOXES clause not fired when <Space> key was pressed and a mouse cursor was outside of a grid control. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\CheckBox_Grid) * Enhanced: HOTTRACK clause supports the optional HTFORECOLOR and HTINACTIVECOLOR clauses for customizing of the highlighting of the selected Tab page and inactive Tab page{s) at owner-draw colored TAB. Requested by Riza. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\TAB) * Changed: DRAW GRAPH: the helpful cleaning functions were moved from the samples to MiniGUI core: - EraseBarGraph( cParentName ) - ErasePieGraph( cParentName ) Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Charts) * Changed: DRAW PIE GRAPH: added the vertical centering of a title. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Header file i_hmgcompat.ch for compatibility with Official HMG: - added a command CREATE EVENT PROCNAME <cProcName>; - added the pseudo-functions EventCount(), EventRemove() and EventRemoveAll(). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MiniPrint) * Updated: Further replacing of 'DEFAULT TO' command in the MiniGUI core with the functions hb_default() and __defaultNIL(). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added handling of the var lEmptyValToChar in TSColumn class; - method LoadFields respects now the column's Headers, Widths and Pictures which are defined by user at TBROWSE definition; - correction of using of the codeblock params in the three methods. Contributed by SergKis. * Updated: HMG_QHTM library (see source in folder \Source\QHTM): - code cleanup for compatibility with the last Minigui changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\qhtm_2) * Updated: Harbour Compiler 3.2.0dev (SVN 2015-09-10 09:03). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Using of the BosTaurus library for a graph creation' sample. Based upon a contribution of S.Rathinagiri <srgiri@dataone.in>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\BTGraph) * New: 'TSBrowse SetArrayTo method usage' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Advanced\Tsb_SetArrayTo) * Updated: 'Print Pie Graph' sample: - updated the pie graph data for August 2015. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\GraphPrint) * Updated: 'MiniPrint' sample for compatibility with xHarbour. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\MiniPrint)
| Искренне балагодарен зв Вашу помощь в улучшении и развитии библиотеки TSBrowse
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 837
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.09.15 09:50. Заголовок: Выпустил очередной р..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 840
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.10.15 13:02. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня RC2 для следующей сборки 2.5.4. Список изменений см. ниже Скрытый текст
* Fixed: Wrong handling of a return value of the internal C-functions InsertMenu() and ModifyMenu(). The return of these functions is a logical value but is not a handle (similarly to the C-function AppendMenu()). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Advanced\MRU) * Enhanced: TOOLBAREX control with the pictures from ImageList supports now the changing of a toolbutton picture at runtime. - New: Added a write only 'PictureIndex' property for TOOLBAREX. You can set this property at runtime: - function syntax: SetProperty ( Form, Control, 'PictureIndex', nPictureIndex ) - pseudo-OOP syntax: FormName.ToolBarName.ToolButtonName.PictureIndex := nPictureIndex, where nPictureIndex is a position of selected image in the ImageList. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see 'Standard Window' in demo at folder \samples\Basic\MAINDEMO_(SYNTAX_I)) * Enhanced: DEFINE IMAGELIST command supports JPG, GIF, TIF and PNG images. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\FREEVIEW) * Enhanced: Command CLEAN MEMORY operates now at Win Vista and upper for release of unused memory. Sample code: ON KEY F5 ACTION CLEAN MEMORY or DEFINE TIMER ... ACTION ( hb_gcAll(), CLEAN MEMORY ) Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. * Changed: WebCam User Component was moved from the samples to MiniGUI core. Syntax: @ <row>,<col> WEBCAM <Camera> [ OF <parent> ] ; [ WIDTH <nWidth> ] [ HEIGHT <nHeight> ] ; [ RATE <nRate> ] [ START ] Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\WebCam_2) * Modified: Correction of the empty values of Active font name and font size with the Default font name and size at the Form's definition. Suggested by SergKis. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Further replacing of 'ValType(Var) == "U"' definitions in the MiniGUI core with the functions hb_default()/__defaultNIL() and hb_defaultValue(). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: C-code cleaning for correct compiling with Pelles C 8.0 and xHarbour. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added handling of the Browse vars hFontEdit, hFontHead, hFontFoot and hFontSpcHd in TSColumn class. Contributed by SergKis. * Updated: 'Bos Taurus' Graphics Library (see source in folder \Source\BosTaurus): - added a new function BT_DrawTextEx(). Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demos in folder \samples\Advanced\BosTaurus) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.9.0 (from 3.8.11.1). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-10-12 17:22). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Systray Balloon Tips' sample is based upon the HbWin contrib library. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\TrayBalloon_3) * New: 'Just To Tray' sample: minimize the external appls to system tray. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Applications\JustToTray) Warning: This example don't work properly at 64-bit version of Windows. * Updated: 'FreeImage Viewer' sample: using an ImageList from PNG resource for the toolbutton's pictures in the toolbar. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\FREEVIEW)
| Ваши комментарии приветствуются
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4535
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.10.15 16:18. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выпустил сегодня RC2 для следующей сборки 2.5.4. |
| С нетерпением ждем !
|
|
|
mshep
|
| |
Пост N: 1
Зарегистрирован: 20.10.15
|
|
Отправлено: 20.10.15 21:45. Заголовок: Hallo всем! Прошу ко..
Hallo всем! Прошу консультации для начинающего: Скачал miniGUI, а при линковке примеров сообщает, что нет "minigui.lib". Причем реально ее в комплекте нет. Скачивал с http://nova-mir.narod.ru/hb_ins1.html свежий "hmg-2.5.3-setup". Очень надеюсь на консультацию.
|
|
|
Dima
|
| |
Пост N: 5314
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.10.15 22:35. Заголовок: mshep пишет: Скачив..
mshep пишет: Нормальные сборки в теме выше.
|
|
|
Haz
|
| |
Пост N: 680
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.10.15 22:37. Заголовок: mshep пишет: Скачив..
mshep пишет: Скачивай с этой ветки форума. работает сразу PS. Dima перебрось плиз эти сообщения в ветку примеров MiniGui. Опередил таки
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 841
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.10.15 10:35. Заголовок: Выпустил сегодня оче..
|
|
|
Alex_Cher
|
| |
Пост N: 14
Зарегистрирован: 18.06.15
|
|
Отправлено: 21.10.15 12:58. Заголовок: Уважаемый gfilatov2..
Уважаемый gfilatov2002, начиная с версии 2.5.3 в файле MiniGUI.chm "WIN32-GUI Library For (x)Harbour" не работает функция поиска, конечно мелочь, но очень не удобно ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4542
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.10.15 18:40. Заголовок: Alex_Cher пишет: на..
Alex_Cher пишет: цитата: | начиная с версии 2.5.3 в файле MiniGUI.chm "WIN32-GUI Library For (x)Harbour" не работает функция поиска, конечно мелочь, но очень не удобно ... |
| Да, да, не работает. А я думал что у меня только сбоит. Только поиск еще раньше не работал, в предыдущих версиях...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4543
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.10.15 19:15. Заголовок: Тестирую новую верси..
Тестирую новую версию. Пример \SAMPLES\Advanced\VOLUME_INFO\DEMO2.exe - не работает: Система Win8.1 Проф. Права Админа.
|
|
|
Haz
|
| |
Пост N: 681
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.10.15 21:22. Заголовок: Andrey пишет: не р..
Andrey пишет: Andrey пишет: Раз есть права админа , присвой метку тома для диска С . В примере проверяется именно она If !Empty( aInfo[1] ) ... aInfo[1] := sz2Str( lpVolName ) и если метка не задана - выдается это окно. IF(Empty(cInfo), MsgStop( "Error!" ), MsgInfo( cInfo )) но это не сообщение об ошибке программы PS что именно не работает ? PPS Для наглядности программы проверку условия лучше все же заменить на If aInfo[1] <> NIL тогда и при пустой метке будет вывод корректной информации о диске
|
|
|
Dima
|
| |
Пост N: 5317
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.10.15 21:46. Заголовок: Haz пишет: Раз есть..
Haz пишет: цитата: | Раз есть права админа , присвой метку тома для диска С |
| Думаешь у него диск без метки ? :) "Территорию" нужно метить )) PS Новую не тестил версию , но в предыдущей все нормально (Win7)
|
|
|
Haz
|
| |
Пост N: 682
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.10.15 21:55. Заголовок: Dima пишет: Думаешь..
Dima пишет: цитата: | Думаешь у него диск без метки ? :) |
| уверен , судя по коду программы территория не помечена
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4544
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.10.15 09:54. Заголовок: Haz пишет: уверен ,..
Haz пишет: цитата: | уверен , судя по коду программы территория не помечена |
| Пример \SAMPLES\Advanced\VOLUME_INFO\DEMO.exe Что выдаёт пример \SAMPLES\Advanced\VOLUME_INFO\DEMO2.exe - написал выше. Что заметил, то и написал. Это было и в предыдущих версиях. Метки на диске нет - в проводнике пишется "Локальный диск (С:)"
|
|
|
Alex_Cher
|
| |
Пост N: 15
Зарегистрирован: 18.06.15
|
|
Отправлено: 22.10.15 09:54. Заголовок: cInfo += "Serial..
cInfo += "Serial Number :" + TAB + I2Hex( nSerNum / 65535 ) + "-" + I2Hex( nSerNum ) .. я понимаю что это серийный номер HDD, почему на некоторых компах число nSerNum отрицательное ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 842
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.10.15 10:13. Заголовок: Andrey пишет: Метки..
Andrey пишет: Простая замена на должна решить эту проблему
|
|
|
Haz
|
| |
Пост N: 683
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.10.15 10:57. Заголовок: Andrey пишет: Что з..
Andrey пишет: цитата: | Что заметил, то и написал. |
| Андрей , все правильно сделал но еще правильнее было бы указать причину и решение Раз уж нашел косячек и разобрался почему - кинь суда решение. Так и Григорию проще править будет и он больше времени потратит на новый функционал , а не на исправление старых примеров.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4545
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.10.15 13:09. Заголовок: Haz пишет: но еще п..
Haz пишет: цитата: | но еще правильнее было бы указать причину и решение |
| Понял.
|
|
|
mshep
|
| |
Пост N: 2
Зарегистрирован: 20.10.15
|
|
Отправлено: 23.10.15 13:40. Заголовок: Haz пишет: Скачивай..
Haz пишет: цитата: | Скачивай с этой ветки форума. работает сразу |
| Пасибки.....
|
|
|
krutoff
|
| |
Пост N: 172
Зарегистрирован: 17.10.05
|
|
Отправлено: 28.10.15 12:28. Заголовок: VIRTUAL WINDOWTYPE PANEL
Кто-нибудь работал с виртуальными окнами? У меня никак не работает VALID в GETBOX внутри такого окна. Может кто уже натыкался на эти грабли? Для примера воткнул в miniGui\Samples\BASIC\CONTAINERS\Panel\demo1.prg строку вместо TEXT_4: 1. Если вставлять через DEFINE то выдет ошибку: "Error MGERROR/0 Control: Of Win_2 Not defined. Program terminated." 2. Если вставить: @ 210,10 GETBOX TEXT_4 VALUE 7 VALID This.Value>5 VALIDMESSAGE 'Value > 5' - в этом случае любое значение проглатывает (пускал VALID через функцию - туда не попадает)
|
|
|
krutoff
|
| |
Пост N: 173
Зарегистрирован: 17.10.05
|
|
Отправлено: 28.10.15 17:01. Заголовок: Еще один момент: Г..
Еще один момент: Григорий, я тут нарыл одну ошибку, которая мне мешает. В файле miniGui\SOURCE\h_controlmisc.prg есть функция FUNCTION _GetControlFree(), которая (как я понял) при создании контрола находит в массиве удаленных контролов свободный элемент. Если такой не находится - создается новый элемент и присваиваются все свойства. Но свойство _HMG_StopControlEventProcedure в старом( найденом) элементе(в отличие от нового) не переприсваивается. Например - если выполнить по какому-то контролу StopControlEventProcedure, закрыть форму, а потом ее снова создать, то нарываюсь на то что, все события по этому контролу уже отключены. Предлагаю в конце процедуры _GetControlFree() перед оператором ENDIF вставить: ELSE _HMG_StopControlEventProcedure[k] := .F.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 844
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.10.15 17:45. Заголовок: krutoff пишет: если..
krutoff пишет: цитата: | если выполнить по какому-то контролу StopControlEventProcedure, закрыть форму, а потом ее снова создать, то нарываюсь на то что, все события по этому контролу уже отключены. |
| Пример - в студию krutoff пишет: цитата: | _HMG_StopControlEventProcedure[k] := .F. |
| Это делается в функции _EraseControl() цитата: | #ifdef _HMG_COMPAT_ IF Type( '_HMG_SYSDATA[443][ i ]' ) != 'U' _HMG_StopControlEventProcedure [ i ] := .F. ENDIF #endif |
|
|
|
|
krutoff
|
| |
Пост N: 174
Зарегистрирован: 17.10.05
|
|
Отправлено: 29.10.15 11:41. Заголовок: //Пример - в студию:..
//Пример - в студию: После 2-го вызова Формы2 событие On Lostfocus в Text_1 не вызывается //(Еще момент: что при редактировании Титул Формы 2 становится неактивным и приходится 2 раза щелкать при закрытии в первом старте) #include "minigui.ch" Function Main DEFINE WINDOW Form_1 AT 0,0 WIDTH 200 HEIGHT 200 TITLE 'StopControlEventProcedure'; MAIN FONT 'Arial' SIZE 10 @ 70,50 BUTTON runBtn CAPTION 'Вызов Формы 2' ACTION DoForm2() END WINDOW ACTIVATE WINDOW Form_1 RETURN Nil *-------------------------------------------------------------------------- Function DoForm2() DEFINE WINDOW Form_2 AT 100,100 WIDTH 200 HEIGHT 200 TITLE 'Form 2' MODAL ; ON RELEASE StopControlEventProcedure("Text_1", "Split_1",.T.) DEFINE SPLITBOX DEFINE WINDOW Split_1 WIDTH 180 HEIGHT 180 ; VIRTUAL WIDTH 200 VIRTUAL HEIGHT 200 ; SPLITCHILD NOCAPTION @ 20,20 TEXTBOX Text_1 VALUE 'Text_1' ON LOSTFOCUS msgInfo('LOSTFOCUS Text_1') @120,20 TEXTBOX Text_2 VALUE 'Text_2' END WINDOW END SPLITBOX END WINDOW ACTIVATE WINDOW Form_2 Return Nil
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 845
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.10.15 13:46. Заголовок: krutoff пишет: Посл..
krutoff пишет: цитата: | После 2-го вызова Формы2 событие On Lostfocus в Text_1 не вызывается |
| Да, все так... Поправлю, конечно krutoff пишет: цитата: | при редактировании Титул Формы 2 становится неактивным |
| Думаю, что это нормально, поскольку в этой форме содержится еще одно дочернее окно Split_1 в родительском окне Form_2
|
|
|
krutoff
|
| |
Пост N: 175
Зарегистрирован: 17.10.05
|
|
Отправлено: 29.10.15 16:47. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Думаю, что это нормально, поскольку в этой форме содержится еще одно дочернее окно Split_1 в родительском окне Form_2 |
| Спасибо, Григорий! Да, я тоже понимаю, что алгоритмически - это нормально, но визуально как бы находишься в активном окне...
|
|
|
alexandr11
|
| |
Пост N: 21
Зарегистрирован: 17.12.14
|
|
Отправлено: 06.11.15 13:54. Заголовок: VIRTUAL WINDOWTYPE PANEL
здравствуйте у меня тоже вопрос по samples\basic\containers\panel (MiniGUI 2.4) пытался использовать typewindow panel с virtual height как в том примере но прокрутка (колесиком мыши) не работала путем проб установил - прокрутка начинает работать, если в это окно поместить button, иначе - не работает можно конечно поместить там button с нулевыми размерами, но все же... и второе - если нажать мышью на стрелку вверх, то выполняется прокрутка окна (panel), хотя ползунок уже находится в самой верхней позиции подскажите пожалуйста - как можно от этого избавиться? пример ниже Скрытый текст #include "minigui.ch" ************************** Function Main DEFINE WINDOW SAST_1; AT 0,0 ; WIDTH 500; HEIGHT 500; TITLE "SAST_1"; WINDOWTYPE MAIN DEFINE WINDOW WIN_2; ROW 10; COL 10; WIDTH 200; HEIGHT 200; VIRTUAL WIDTH 5000; VIRTUAL HEIGHT 5000; WINDOWTYPE PANEL IF .F. DEFINE LABEL LABEL_1 ROW 10 COL 10 VALUE 'LABEL_1' WIDTH 100 HEIGHT 30 END LABEL ENDIF IF .F. DEFINE BUTTON BUTTON_1 ROW 50 COL 10 CAPTION 'BUTTON_1' WIDTH 100 HEIGHT 30 END BUTTON ENDIF END WINDOW END WINDOW CENTER WINDOW SAST_1 activate window SAST_1 Return Nil
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 846
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.11.15 15:05. Заголовок: alexandr11 пишет: е..
alexandr11 пишет: цитата: | если нажать мышью на стрелку вверх, то выполняется прокрутка окна (panel), хотя ползунок уже находится в самой верхней позиции |
| Поправил эту бяку для вертикального и горизонтального сдвигов. Благодарю за наглядный пример цитата: | как можно от этого избавиться? |
| Ждите ноябрьскую сборку в конце месяца...
|
|
|
alexandr11
|
| |
Пост N: 22
Зарегистрирован: 17.12.14
|
|
Отправлено: 06.11.15 16:15. Заголовок: Поправил эту бяку ..
спасибо, Григорий а что с первой бякой (не работает прокрутка)?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 847
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.11.15 17:53. Заголовок: alexandr11 Мне каже..
alexandr11 Мне кажется, что тут дело в том, что LABEL - это статический элемент управления. Поставьте в это окно вторым номером, например, CHECBOX, и прокрутка заработает
|
|
|
krutoff
|
| |
Пост N: 176
Зарегистрирован: 17.10.05
|
|
Отправлено: 07.11.15 13:46. Заголовок: IMAGE
Столкнулся с тем, что контрол IMAGE показывает файл ICO только, если указать полное название файла (допустим "user.ico"), а если указать ICO в файле ресурсов .RC - то IMAGE его не покажет.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 849
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.11.15 14:43. Заголовок: krutoff пишет: конт..
krutoff пишет: цитата: | контрол IMAGE показывает файл ICO |
| Дело в том, что библиотека GDIPlus, которая сейчас используется как движок в элементе управления IMAGE, не дружит с ICO и CUR ресурсами. По зато отображает PNG и TIF картинки. Поэтому для показа на форме ICO файлов/ресурсов рекомендую использовать функцию DrawIcon( hWnd, w, h, hIcon ), примеры использования которой есть в папке minigui\samples.
|
|
|
alexandr11
|
| |
Пост N: 23
Зарегистрирован: 17.12.14
|
|
Отправлено: 09.11.15 12:01. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Мне кажется, что тут дело в том, что LABEL - это статический элемент управления |
| спасибо, Григорий я тоже так подумал
|
|
|
alexandr11
|
| |
Пост N: 24
Зарегистрирован: 17.12.14
|
|
Отправлено: 09.11.15 14:15. Заголовок: VIRTUAL WINDOWTYPE PANEL
возник еще один вопрос на эту тему я объявляю окно PANEL со свойствами HEIGHT 100, VIRTUAL HEIGHT 3000 затем (уже во время выполнения программы) увеличиваю HEIGHT (по нажатию кнопки) и получается, что VIRTUAL HEIGHT становится более 3000 (понимаю это по содержимому окна) как с этим бороться? помогите пожалуйста пример ниже Скрытый текст #include "minigui.ch" #include "BosTaurus.CH" ************************** Function Main DEFINE WINDOW SAST_1; AT 0,0 ; WIDTH GETDESKTOPWIDTH(); HEIGHT GETDESKTOPHEIGHT()-50; TITLE "SAST_1"; WINDOWTYPE MAIN DEFINE WINDOW WIN_2; ROW 10; COL 10; WIDTH 200; HEIGHT IIF(.T.,100,BT_ClientAreaHeight("SAST_1")-100); VIRTUAL HEIGHT 3000; WINDOWTYPE PANEL IF .T. DEFINE BUTTON BUTTON_0 ROW 2900 COL 10 CAPTION 'otmetka 2900' WIDTH 130 HEIGHT 30 END BUTTON ENDIF END WINDOW DEFINE BUTTON BUTTON_1 ROW 30 COL 300 CAPTION 'GO_HEIGHT' ACTION WIN_2.HEIGHT:=BT_ClientAreaHeight("SAST_1")-100 WIDTH 100 HEIGHT 30 END BUTTON END WINDOW CENTER WINDOW SAST_1 activate window SAST_1 Return Nil
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 850
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.11.15 15:15. Заголовок: Просто к сведению. В..
Просто к сведению. Выпустил сегодня RC2 для следующей сборки 2.5.5. Список изменений см. ниже Скрытый текст
* Fixed: Correction of the vertical position of the page titles for the font's size more than 12 pt in the ownerdraw colored TAB. Requested by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\TAB) * Fixed: Wrong vertical (and horizontal) scroll up in the Virtual Panel window when the thumbs of scroll bar were in a zero position and you are click a scrolling bar up (or left) arrow button. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\CONTAINERS\Panel_2) * Enhanced: The GetBox control supports additionally a hotkey Ctrl+Y for clearing of the current value. Suggested and contributed by Gilbert Vaillancourt. * Enhanced: Added a horizontal scrolling of a long text string in the function WaitWindow(). Requested by Marcelo Brigatti <mbrigatti@uol.com.br>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\WAIT_WINDOW) * Changed: SplitChild windows without caption can not be closed with <Alt+F4> hotkey pressing by default. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Header file i_hmgcompat.ch for compatibility with Official HMG: - added a new command RELEASE MEMORY; - added the pseudo-function HMG_ChangeWindowStyle(). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: 'HMG Debugger' library (see source in folder \Source\Debugger). Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\DBG_TEST) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - fixed a program crash at the simultaneous using of the column's 'Valid' clause and the function SetBtnGet(). Problem was reported by Gilbert Vaillancourt. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.9.2 (from 3.9.1). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-11-05 18:20). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Graph Print on datas from the database' sample. Contributed by Stefano Biancini <biancini.stefano[at]libero.it>. Revised by Pierpaolo Martinello <pier.martinello[at]alice.it> (see in folder \samples\Basic\GraphPrint_2) * New: 'ErrorSys HMG Custom' sample. Contributed by Toledo <toledo@pctoledo.com.br>. Revised by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Hmg_Error) * Updated: 'ProgressBar' sample: - using of the function SuppressKeyAndMouseEvents() for blocking of the mouse and keyboard pressing at the event's processing. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\PROGRESSBAR) * Updated: 'TSBrowse SetArrayTo method usage' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Advanced\Tsb_SetArrayTo) * Updated: 'WebCam preview and capture' sample: - Added: saving the captured image to the PNG file. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\WebCam_2)
| Ваши комментарии приветствуются...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4571
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.15 17:15. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Ваши комментарии приветствуются... |
| Забыл про Tsb_config - версия 1.2 !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 851
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.11.15 18:48. Заголовок: Andrey пишет: Забыл..
Andrey пишет: цитата: | Забыл про Tsb_config - версия 1.2 |
| Нет, не забыл Но оставил в примерах версию 1.0 (как более простую) с учетом предложенных исправлений
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 853
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.11.15 09:34. Заголовок: Выпустил сегодня оче..
Выпустил сегодня очередной релиз библиотеки. Сборка для компилятора BCC лежит на официальном сайте библиотеки по адресу: http://hmgextended.com/files/CONTRIB/hmg-2.5.5-setup.zip Также доступна сборка для компилятора MinGW по адресу: http://hmgextended.com/files/CONTRIB/hmg255-mingw.exe и компактный архив для свежей версии компилятора xHarbour http://hmgextended.com/files/CONTRIB/xhmg255_xhb10138.zip Благодарю за внимание Примечание. Небольшое дополнение к файлу изменений этой сборки: цитата: | * New: Draw Icon command with the transparent support. Syntax: DRAW ICON IN WINDOW <windowname> AT <row>,<col> ; PICTURE <filename> ; [ WIDTH <w> ] ; [ HEIGHT <h> ] ; [ COLOR <rgb> ] ; [ <transparent: TRANSPARENT> ] Requested by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Applications\UPXshell) Note: It is an experimental feature. |
| Также для компилятора MinGW добвлена следующая настройка для совместимости с BCC: ldflags=-Wl,-- allow-multiple-definition
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4579
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.11.15 16:56. Заголовок: Пропустил новую верс..
Пропустил новую версию... gfilatov2002 пишет: цитата: | Note: It is an experimental feature. |
| А когда будет постоянной версией ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 854
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.11.15 17:18. Заголовок: Andrey пишет: когда..
Andrey пишет: После подтверждения от пользователей, что все работает нормально Обычно это может занимать до 3-х месяцев Кстати, сейчас занимаюсь портированием сборки на 64-битные рельсы Для этого пришлось пересматривать ВЕСЬ сишный код (кроме 2-х модулей), исправлять найденный опечатки и оптимизировать код... В качестве 64-битного компилятора использую MinGW версии 4.8.1 Требуются тестировщики
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 171
Зарегистрирован: 15.09.05
|
|
Отправлено: 19.11.15 23:00. Заголовок: Я записываюсь
Я записываюсь . Сейчас есть немного времени и WINDOWS 10 64bit . Григорий , посылайте когда будет материал для тестирования . можно на office@almaleto.com
|
|
|
santy
|
| |
Пост N: 333
Зарегистрирован: 16.12.08
|
|
Отправлено: 20.11.15 00:08. Заголовок: Григорий, если будет..
Григорий, если будет готовый вариант, присылайте -> lex26@ukr.net.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 855
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.11.15 13:53. Заголовок: santy пишет: если ..
santy пишет: цитата: | если будет готовый вариант, присылайте |
| Благодарю за отклик! В ближайшее время я подготовлю первую бету Minigui 64 для тестирования и пришлю ссылку на нее всем, кто заинтересовался
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 856
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.11.15 16:53. Заголовок: Мечты сбываются! :s..
Мечты сбываются! Предлагаю всем желающим протестировать первую бету Minigui 64 по адресу: http://hmgextended.com/files/CONTRIB/minigui64-beta.exe В этот архив включены: - Minigui 64 source and binaries; - Harbour 64 compiler 3.2.0dev; - MinGW 64 C-compiler 4.9.2. Заранее благодарен за все критические отзывы
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 857
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.11.15 22:57. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Предлагаю всем желающим протестировать первую бету Minigui 64 |
| Выложил очередную бета-версию по адресу: http://hmgextended.com/files/CONTRIB/minigui64-beta.exe Добавил в архив следующие библиотеки (с примерами использования): - BosTaurus; - CallDll; - Debugger; - WinReport. По-прежнему ожидаю Ваши критические отзывы...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 858
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.11.15 11:57. Заголовок: Выложил заключительн..
Выложил заключительную бета 3-версию с небольшими доработками по адресу: http://hmgextended.com/files/CONTRIB/minigui64-beta.exe Полный список изменений ниже Скрытый текст
* Updated: The all C-code was modified for the correct compiling on 64-bit: - added a new header mgdefs.ch for 64-bit conversion; - added a new function IsExe64() which check if our app is 64-bit; - added Windows64.Manifest in the folder \Resources; - revised HbPrinter, MiniPrint, TsBrowse and WinReport libraries for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\MAINDEMO_(SYNTAX_I)) * Updated: Documented the internal C-function IsWow64(): - return TRUE if a 32-bit application is running under 64-bit Windows; - return FALSE if a 32-bit application is running under 32-bit Windows; - return FALSE if a 64-bit application is running under 64-bit Windows. Remark: WOW64 is the x86 emulator that allows 32-bit Windows-based applications to running on 64-bit Windows. * Updated: CallDll library source code (see in folder \Source\CallDll). It is based on the Harbour core DLL functions now. DECLARE syntax and format are preserved for backwards compatibility, but, it is recommended to use CallDll32 function instead. Syntax was changed as: CallDll32( cDllName, nReturnType, cFunctionName [, <parameters> ] ) Note: CallDll32() detects the current code page and appropriately call the ANSI or Unicode version of the function. Based upon a contribution by Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demos in folder \samples\Basic\CallDll) * Updated: 'Bos Taurus' Graphics Library for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see source in folder \Source\BosTaurus) * Updated: 'HMG Debugger' library for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see source in folder \Source\Debugger).
| Желаю всем удачи!
|
|
|
alexandr11
|
| |
Пост N: 25
Зарегистрирован: 17.12.14
|
|
Отправлено: 26.11.15 16:24. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | alexandr11 пишет: цитата: если нажать мышью на стрелку вверх, то выполняется прокрутка окна (panel), хотя ползунок уже находится в самой верхней позиции Поправил эту бяку для вертикального и горизонтального сдвигов. Благодарю за наглядный пример цитата: как можно от этого избавиться? Ждите ноябрьскую сборку в конце месяца... |
| скачал новую сборку действительно - вверх и влево не прокручивается (при нажатии на стрелку) но прокручивается вниз и вправо кроме того - появился какой-то глюк - в моей программе нижнюю стрелку сначала не видно она появляется после того, как кликнуть мышью в том месте, где она должна быть но вот тестовый пример не удается сделать - там все нормально не пойму от чего это зависит
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 860
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.11.15 17:16. Заголовок: alexandr11 пишет: п..
alexandr11 пишет: цитата: | прокручивается вниз и вправо |
| Все верно - посчитал это некритичным... alexandr11 пишет: цитата: | тестовый пример не удается сделать - там все нормально |
| Возможно, что стрелка перекрывается надписью Label, но точнее сказать, в чем причина, - сложно
|
|
|
alexandr11
|
| |
Пост N: 26
Зарегистрирован: 17.12.14
|
|
Отправлено: 27.11.15 09:45. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Возможно, что стрелка перекрывается надписью Label, но точнее сказать, в чем причина, - сложно |
| дело в том, что в MiniGUI 2.4 все нормально буду искать спасибо
|
|
|
alexandr11
|
| |
Пост N: 27
Зарегистрирован: 17.12.14
|
|
Отправлено: 27.11.15 09:49. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Все верно - посчитал это некритичным... |
| полностью согласен но заказчик требует чтобы все было идеально
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 861
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.11.15 13:06. Заголовок: alexandr11 пишет: п..
alexandr11 пишет: цитата: | прокручивается вниз и вправо |
| Поправил, но при этом появилась небольшая зона нечувствительности Тем не менее, прокрутки уже нет alexandr11 пишет: цитата: | ... чтобы все было идеально |
| Так в жизни не бывает Во всяком случае - в нашей Но это уже философия пошла...
|
|
|
alexandr11
|
| |
Пост N: 28
Зарегистрирован: 17.12.14
|
|
Отправлено: 27.11.15 15:25. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: спасибо, Григорий! PS Вы оказались правы насчет label почему-то в MiniGUI 2.4 и MiniGUI 2.5 окно panel по-разному расположено относительно других элементов окна...
|
|
|
Alex_Cher
|
| |
Пост N: 16
Зарегистрирован: 18.06.15
|
|
Отправлено: 01.12.15 10:41. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | В этот архив включены: - Minigui 64 source and binaries; - Harbour 64 compiler 3.2.0dev; - MinGW 64 C-compiler 4.9.2. Заранее благодарен за все критические отзывы |
| .. попытался собрать что-нибудь из Minigui/Samples постоянно вылетают ошибки. Использую Borland C++ Compiler 5.5. Что не так ..? Не ругайте строго я здесь не давно ...
|
|
|
Haz
|
| |
Пост N: 701
Зарегистрирован: 20.02.11
|
|
Отправлено: 01.12.15 10:49. Заголовок: Alex_Cher пишет: Чт..
Alex_Cher пишет: Alex_Cher пишет: BCC это 32 - разрядный компилер , а собрать пытаешься тестовую версию под 64 разряда и MIngw. Возьми обычную сборку MiniGui под 32 и bcc55 - все соберется
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 173
Зарегистрирован: 15.09.05
|
|
Отправлено: 01.12.15 11:23. Заголовок: Первые впечатления от MiniGUI64
Первые впечатления от MiniGUI64 очень хорошие ! Все работает быстрее ну BROWS - ы например . 64 битны Harbour работает быстрее , у меня в парограммах есть серверная часть где делаются всякие обработки данных Я не делал точные замеры но мне кажется процентов на 20 быстрее чем то же самое в 32 бита. Проблемы пока с загрузкой FastReport , но пока там еще не разбирался. в Методе Init из FastRepH.prg ::frSystHandle := FrLoad(cOptionalPath) ::frSystHandle получает значение равное 0 и генерируется ошибка
|
|
|
Alex_Cher
|
| |
Пост N: 17
Зарегистрирован: 18.06.15
|
|
Отправлено: 01.12.15 14:00. Заголовок: Haz пишет: BCC это ..
Haz пишет: цитата: | BCC это 32 - разрядный компилер , а собрать пытаешься тестовую версию под 64 разряда и MIngw. Возьми обычную сборку MiniGui под 32 и bcc55 - все соберется |
| Какой нужен компилятор чтобы собрать MiniGui под 64 ...?
|
|
|
Dima
|
| |
Пост N: 5383
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.12.15 14:19. Заголовок: Alex_Cher пишет: Ка..
Alex_Cher пишет: цитата: | Какой нужен компилятор чтобы собрать MiniGui под 64 ...? |
| Он собранный уже идет. А на вопрос ответ: MINGW
|
|
|
Haz
|
| |
Пост N: 702
Зарегистрирован: 20.02.11
|
|
Отправлено: 01.12.15 14:39. Заголовок: Dima пишет: попыта..
Alex_Cher пишет: цитата: | попытался собрать что-нибудь |
| Хочется собрать под 64 ? Скачай сборку под 64,распакуй архив в корень C, и собирай примеры BAT файлами. PS. Если распаковать сборку в каталог отличный от C: , то нужно пробежаться по всем BAT и подправить пути PPS Библиотеки Minigui - уже идут в поставке , С-компилятор MINGW64 - уже идет в поставке , компилятор Harbour - уже в поставке Весь джентельменский набор есть, распаковал и пользуй
|
|
|
Dima
|
| |
Пост N: 5384
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.12.15 14:43. Заголовок: Haz пишет: Dima пиш..
Haz пишет: цитата: | Dima пишет: цитата: попытался собрать что-нибудь |
| А форум глючит все таки )) Не писал я этого.
|
|
|
Haz
|
| |
Пост N: 703
Зарегистрирован: 20.02.11
|
|
Отправлено: 01.12.15 14:51. Заголовок: Dima пишет: Не писа..
|
|
|
Alex_Cher
|
| |
Пост N: 18
Зарегистрирован: 18.06.15
|
|
Отправлено: 01.12.15 14:52. Заголовок: Haz пишет: Хочется ..
Haz пишет: цитата: | Хочется собрать под 64 ? Скачай сборку под 64,распакуй архив в корень C, и собирай примеры BAT файлами. PS. Если распаковать сборку в каталог отличный от C: , то нужно пробежаться по всем BAT и подправить пути PPS Библиотеки Minigui - уже идут в поставке , С-компилятор MINGW64 - уже идет в поставке , компилятор Harbour - уже в поставке Весь джентельменский набор есть, распаковал и пользуй |
| Я конечно слабоват в этом, но все это делалось много раз... При сборки примера Hello из Minigui вылетает ошибка в виде файла build.log - hbmk2: Warning: Dangerous low-level option not recommended: 'ldflags=-Wl,--allow-multiple-definition' in c:\minigui\minigui.hbc:13 Harbour 3.2.0dev (r1511161432) Copyright (c) 1999-2015, http://harbour-project.org/ gcc.exe: error: C:/Users/Alex/AppData/Local/Temp/hbmk_y9hacf.dir/hello.o: No such file or directory gcc.exe: error: C:/Users/Alex/AppData/Local/Temp/hbmk_y9hacf.dir/hbmk_dmy93j.o: No such file or directory hbmk2: Error: Running linker. 1 gcc.exe C:/Users/Alex/AppData/Local/Temp/hbmk_y9hacf.dir/hello.o C:/Users/Alex/AppData/Local/Temp/hbmk_y9hacf.dir/hbmk_dmy93j.o C:/minigui/Samples/hello/_temp.o -Wl,--allow-multiple-definition -mwindows -Wl,--start-group -lminigui -lhbprinter -lminiprint -ladordd -lcalldll -ltsbrowse -lhbct -lhbmisc -lhbtip -lhbziparc -lhbmzip -lminizip -lhbwin -lxhb -lmsvfw32 -lvfw32 -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -ohello.exe -Lc:/harbour/lib/win/mingw64 -Lc:/minigui/lib
|
|
|
Haz
|
| |
Пост N: 704
Зарегистрирован: 20.02.11
|
|
Отправлено: 01.12.15 15:07. Заголовок: Alex_Cher пишет: Пр..
Alex_Cher пишет: цитата: | При сборки примера Hello из Minigui вылетает ошибка в виде файла build.log |
| Alex, что тут сказать ... точно так же все делаю и собирает . Вот все что в логе, hello.exe запускается hbmk2: Warning: Dangerous low-level option not recommended: 'ldflags=-Wl,--allow-multiple-definition' in c:\minigui\minigui.hbc:13 Harbour 3.2.0dev (r1511161432) Copyright (c) 1999-2015, http://harbour-project.org/ это все дальше ничего нет У меня Вынь 7 x 64 , а у тебя что ?
|
|
|
Alex_Cher
|
| |
Пост N: 19
Зарегистрирован: 18.06.15
|
|
Отправлено: 03.12.15 12:38. Заголовок: Перевел проект на Mi..
Перевел проект на MiniGUI64, впечатления самые приятные. Массивы с более 1 млн. записей (кол-во рекламаций по LADA за год) обрабатывает на 30-35 % быстрее. Первое с чем столкнулся при создание файла Excel вылетает ошибка - click here ссылка ошибки на строку - oWorkBook:Columns( 1):Set( 'NumberFormat', '@')
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 862
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.12.15 23:34. Заголовок: Выложил свежую бета ..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 864
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.12.15 13:11. Заголовок: Просто к сведению. З..
Просто к сведению. Завершена подготовка следующей сборки библиотеки, которая выйдет послезавтра Полный список изменений см. ниже Скрытый текст
* Changed: From this release, Minigui Extended was switched to a "Year.Month" version numbering scheme, similar to 7-Zip archiver and other tools. * Fixed: The wrong back color of a Label control into the TAB control with a BUTTONS clause definition (introduced in the build 2.4.9). Bug was reported by Anibal Villalobos Guillen <anibalgvillalobosg@yahoo.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo2.prg in folder \samples\Basic\TAB) * Fixed: The conflict between a first GetBox control on the form and any hotkey pressing at the form's creation (introduced in the build 2.1.8). Problem was reported by Gilbert Vaillancourt. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Synchronized Extended HMG for compatibility with Official HMG: - New: SET SCROLLSTEP TO <nStep> command. Set scroll amount for horizontal and vertical scrollbars in virtual dimensioned windows. (see demo in folder \samples\Basic\VIRTUALDIM) - New: SET SCROLLPAGE TO <nStep> command. Set Page scroll amount for horizontal and vertical scrollbars in virtual dimensioned windows. * Updated: The all C-code was modified for the correct compiling on 64-bit: - added a new header mgdefs.ch for 64-bit conversion; - added a new function IsExe64() which check if our app is 64-bit; - added Windows64.Manifest in the folder \Resources; - revised HbPrinter, MiniPrint, TsBrowse and WinReport libraries for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\MAINDEMO_(SYNTAX_I)) * Updated: Documented the internal C-function IsWow64(): - return TRUE if a 32-bit application is running under 64-bit Windows; - return FALSE if a 32-bit application is running under 32-bit Windows; - return FALSE if a 64-bit application is running under 64-bit Windows. Remark: WOW64 is the x86 emulator that allows 32-bit Windows-based applications to running on 64-bit Windows. * Updated: CallDll library source code (see in folder \Source\CallDll). It is based on the Harbour core DLL functions now. DECLARE syntax and format are preserved for backwards compatibility, but, it is recommended to use CallDll32 function instead. Syntax was changed as: CallDll32( cDllName, nReturnType, cFunctionName [, <parameters> ] ) Note: CallDll32() detects the current code page and appropriately call the ANSI or Unicode version of the function. Based upon a contribution by Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demos in folder \samples\Basic\CallDll) * Updated: 'Bos Taurus' Graphics Library for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see source in folder \Source\BosTaurus) * Updated: 'HMG Debugger' library for 64-bit compatibility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see source in folder \Source\Debugger). * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.10.0dev (from 3.9.2). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - Fixed: Correction of the numeric format's handling in the method Excel2. Bug was reported by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\TSBrowse) * Updated: Harbour Compiler 3.2.0dev (SVN 2015-12-09 14:22). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour)
| Примечание. Введен временный мораторий на включение новых примеров в сборку Парадоксально, но примеры из поставки библиотеки смотрят только подготовленные пользователи...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4610
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 18:50. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Примечание. Введен временный мораторий на включение новых примеров в сборку |
| А почему ? Объём диструбутива сейчас НЕ КРИТИЧЕН ! Ещё много чего непонятного в МиниГуи, да и инструментария для работы/просмотра нет. Примеры (заготовки) очень полезны для написания своих программ. А так придётся тыкаться вслепую, да и тем кто только осваивает нужны эти примеры. Я многое сам делал и разбирался (хотя без помощи Григория и других -результата бы у меня не было) ! Результатами своими делюсь - не жалко, вдруг кому пригодиться.
|
|
|
Haz
|
| |
Пост N: 717
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.12.15 11:21. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | примеры из поставки библиотеки смотрят только подготовленные пользователи. |
| Григорий , подготовленные пользователи эти примеры уже как стихи выучили наизусть Их смотрят как раз те кто начинает знакомство с МиниГуи , или втянулся совсем недавно. Соглашусь с тем что в примерах становится труднее разобраться или найти что либо. Предлагаю мараторий на примеры с исходниками размером болле 5к. ( это все же примеры а не приложения )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4611
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.12.15 16:09. Заголовок: Haz пишет: Предлага..
Haz пишет: цитата: | Предлагаю мараторий на примеры с исходниками размером болле 5к. ( это все же примеры а не приложения ) |
| Не согласен. Порой нужно видеть как другие делаю приложения, чтобы самому научиться... А где смотреть, если пример маленький - и даёт не понятно что ? Я с окнами (различными типами) очень долго разбирался, как сделать в своей программе. Примеров же нет как делать главное меню и работать далее с меню. Всё методом проб и ошибок. На всё это нужно время... Уже 3 год переношу проект, никак не могу полностью перенести на МиниГуи хоть одну из своих программ.
|
|
|
Haz
|
| |
Пост N: 719
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.12.15 16:36. Заголовок: Andrey пишет: Не со..
Andrey пишет: цитата: | Не согласен. Порой нужно видеть как другие делаю приложения, чтобы самому научиться... |
| Безусловно списать проще чем самому думать, но так ничему не научишься. В качестве подтверждения - твой свежий вопрос по TSBrowse : - "Как поменять картинку в уже сформированной таблице ?" Ответ есть и в исходниках и даже в примерах ..... PS Притом мараторий же временный
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|