Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть IV) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
gfilatov2002
|
| moderator
|
Пост N: 351
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.03.12 17:46. Заголовок: sashaBG пишет: Как ..
sashaBG пишет: цитата: | Как предотвратиь срабатывание ONLOST или VALID |
| Sasha, Я думаю, что это теперь не получится, поскольку BTNTEXTBOX (или GETBOX) и кнопка стали разными элементами управления, начиная с версии 2.0.6 - и поэтому события ONLOSTFOCUS и VALID срабатывают автоматически при потере фокуса у поля ввода
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 104
Зарегистрирован: 15.09.05
|
|
Отправлено: 16.03.12 00:34. Заголовок: Спасибо !
Спасибо за ответ Григорий ! Тогда пока останусь на 2.0.5 Может еще попробую откомплировать 2.0.8 с BTNTEXTBOX и GETBOX от 2.0.5 , посмотрим что получится. Я пока не пользуюсь последними нововведениями BTNTEXBOX и GETBOX
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 105
Зарегистрирован: 15.09.05
|
|
Отправлено: 16.03.12 00:46. Заголовок: Не получилось !
Не получилось !
|
|
|
Dr. Oldwarez
|
| постоянный участник
|
Пост N: 193
Зарегистрирован: 27.07.08
|
|
Отправлено: 18.03.12 10:10. Заголовок: Сейчас тестирую на п..
Сейчас тестирую на пресловутый глюк с последней строкой. В большинстве случаев удалось исправить эту вредную ошибку. Но если записи отсортированы по убывающей, TBROWSE вообще ЗАВИСАЕТ при переходе на последнюю строку, а затем - возврате к первой. Причём выйти из программы невозможно без "комбинации из трёх пальцев" Ctrl+Alt+Del и менеджера задач.
|
|
|
alex_II
|
| |
Пост N: 63
Зарегистрирован: 12.07.06
|
|
Отправлено: 19.03.12 03:47. Заголовок: Переход на 2.0.8 про..
Переход на 2.0.8 прошел без проблем Спасибо за хорошую работу, Григорий!
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 352
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.03.12 18:20. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | TBROWSE вообще ЗАВИСАЕТ при переходе на последнюю строку |
| По этой причине я убрал этот трюк из ядра библиотеки Tsbrowse. В одних случаях это работает, а в других - создает новые проблемы
|
|
|
Dr. Oldwarez
|
| постоянный участник
|
Пост N: 194
Зарегистрирован: 27.07.08
|
|
Отправлено: 20.03.12 13:09. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | По этой причине я убрал этот трюк из ядра библиотеки Tsbrowse. В одних случаях это работает, а в других - создает новые проблемы |
| Тогда понятно. Ждём следующих версий. На семёрку, надеюсь, пока переходить не будете?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 9
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.03.12 12:41. Заголовок: Для gfilatov2002. Пр..
Для gfilatov2002. Пример: \MiniGUI\SAMPLES\BASIC\Mdi_2>demo.exe В browse по Up/Dn курсор двигается через строку (как будто dbSkip(2)). Три browse на окне ведут себя также. Наши исправления в h_browse.prg (v.m. 2.07): Скрытый текст
*-----------------------------------------------------------------------------* Procedure _BrowseUp ( ControlName , ParentForm , z ) *-----------------------------------------------------------------------------* Local i , s , _Alias , _RecNo , _BrowseArea , _BrowseRecMap , _DeltaScroll // [4] i := Iif( pcount() == 2 , GetControlIndex ( ControlName , ParentForm ) , z ) // BAA 18-Мар-2012 09:55:49 _HMG_ActiveDlgProcHandle := _HMG_aControlParenthandles // Так как есть такой hwndDlg _DeltaScroll := ListView_GetSubItemRect ( _HMG_aControlhandles , 0 , 0 ) _BrowseRecMap := _HMG_aControlRangeMax s := LISTVIEW_GETFIRSTITEM ( _HMG_aControlHandles ) If s == 1 _Alias := Alias() _BrowseArea := _HMG_aControlSpacing If Select (_BrowseArea) == 0 Return EndIf Select &_BrowseArea _RecNo := RecNo() Go _BrowseRecMap [1] Skip -1 IF ! _BrowseRecMap [1] == RecNo() // BAA 18-Мар-2012 10:09:03 Что бы не дергалось _BrowseVscrollUpdate( i ) _BrowseUpdate( '', '', i ) ListView_Scroll( _HMG_aControlHandles , _DeltaScroll[2] * (-1) , 0 ) ENDIF Go _RecNo if Select( _Alias ) != 0 Select &_Alias Else Select 0 Endif ListView_SetCursel ( _HMG_aControlHandles , 1 ) Else if _HMG_ActiveDlgProcHandle == 0 ListView_SetCursel ( _HMG_aControlHandles , s - 1 ) endif _BrowseVscrollFastUpdate ( i , -1 ) EndIf _BrowseOnChange (i) // BAA 18-Мар-2012 09:55:41 _HMG_ActiveDlgProcHandle := 0 Return *-----------------------------------------------------------------------------* Procedure _BrowseDown ( ControlName , ParentForm , z ) *-----------------------------------------------------------------------------* Local i , PageLength , s , _Alias , _RecNo , _BrowseArea , _BrowseRecMap , _DeltaScroll // [4] i := Iif( pcount() == 2 , GetControlIndex ( ControlName , ParentForm ) , z ) // BAA 18-Мар-2012 09:56:02 _HMG_ActiveDlgProcHandle := _HMG_aControlParenthandles // Так как есть такой hwndDlg _DeltaScroll := ListView_GetSubItemRect ( _HMG_aControlhandles , 0 , 0 ) _BrowseRecMap := _HMG_aControlRangeMax s := LISTVIEW_GETFIRSTITEM ( _HMG_aControlHandles ) PageLength := LISTVIEWGETCOUNTPERPAGE ( _HMG_aControlhandles ) If s == PageLength if _HMG_aControlContainerHandle != 0 Return EndIf _Alias := Alias() _BrowseArea := _HMG_aControlSpacing If Select (_BrowseArea) == 0 Return EndIf Select &_BrowseArea _RecNo := RecNo() Go _BrowseRecMap [1] Skip _BrowseUpdate( '', '', i ) _BrowseVscrollUpdate( i ) ListView_Scroll( _HMG_aControlHandles , _DeltaScroll[2] * (-1) , 0 ) Go _RecNo if Select( _Alias ) != 0 Select &_Alias Else Select 0 Endif ListView_SetCursel ( _HMG_aControlHandles , Len(_HMG_aControlRangeMax ) ) Else if _HMG_ActiveDlgProcHandle == 0 ListView_SetCursel ( _HMG_aControlHandles , s+1 ) endif _BrowseVscrollFastUpdate ( i , 1 ) EndIf _BrowseOnChange (i) // BAA 18-Мар-2012 09:56:16 _HMG_ActiveDlgProcHandle := 0 Return
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 355
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.03.12 13:37. Заголовок: SergKis пишет: Наши..
SergKis пишет: цитата: | Наши исправления в h_browse.prg |
| Большое спасибо за исправления! Уже поправил h_browse.prg для следующей сборки
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 10
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.03.12 14:50. Заголовок: Для gfilatov2002. У ..
Для gfilatov2002. У контролов есть свойство Cargo, у окон нет. Может есть смысл добавить ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 356
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.03.12 16:11. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может есть смысл добавить ? |
| Нет Для этого существуют следующие команды: SET WINDOWPROPERTY "PROP_DBF" VALUE cxFile ... GET WINDOWPROPERTY "PROP_DBF" VALUE cxFile которые позволяют присвоить (и позже запросить) любое пользовательское свойство активному окну
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 12
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.03.12 16:51. Заголовок: gfilatov2002 пишет:Д..
gfilatov2002 пишет: цитата: | Для этого существуют следующие команды: |
| Спасибо за носомтык. Проглядел.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 15
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.03.12 11:35. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для этого существуют следующие команды: SET WINDOWPROPERTY "PROP_DBF" VALUE cxFile ... GET WINDOWPROPERTY "PROP_DBF" VALUE cxFile которые позволяют присвоить (и позже запросить) любое пользовательское свойство активному окну |
| К сожалению это не так. Команда SET WINDOWPROPERTY "PROP_MYARRAY" VALUE {"Test1", "Test2"} не работает.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 359
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.03.12 13:04. Заголовок: SergKis пишет: Кома..
SergKis пишет: цитата: | Команда SET WINDOWPROPERTY "PROP_MYARRAY" VALUE {"Test1", "Test2"} не работает. |
| Вы не можете присвоить массив с помощью этой команды - только простые типы данных (символьный, логический) И еще уточнение - эти команды предназначены для дочерних MDI окон (рабочий пример находится в папке samples\Basic\mdi_2) Проверил также для обычного окна - работает (см. пример ниже). Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo */ #include "minigui.ch" Function Main Local Item1 := GetUserName() Local Item2 := GetComputerName() DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 300 ; HEIGHT 300 ; TITLE "MiniGUI Demo" ; MAIN ; NOMAXIMIZE NOSIZE @ 5,10 FRAME Frame1 CAPTION "Frame" WIDTH 200 HEIGHT 150 @ 20,20 LABEL Label1 VALUE "User Name" AUTOSIZE @ 45,20 TEXTBOX TextBox1 VALUE "" Form1.Label1.Cargo := "TextBox1" // f.e., store the TextBox name in the label's cargo @ 80,20 LABEL Label2 VALUE "Computer Name" AUTOSIZE @105,20 TEXTBOX TextBox2 VALUE "" Form1.Label2.Cargo := "TextBox2" @ 180,20 BUTTON Button1 CAPTION "Get Names" ON CLICK _GetNames() @ 220,20 BUTTON Button2 CAPTION "Set Names" ON CLICK _SetNames() @ 180,150 BUTTON Button3 CAPTION "Disable Frame" ON CLICK DisableFrame() @ 220,150 BUTTON Button4 CAPTION "Enable Frame" ON CLICK EnableFrame() SET WINDOWPROPERTY "PROP_ITEM1" VALUE Item1 SET WINDOWPROPERTY "PROP_ITEM2" VALUE Item2 END WINDOW Form1.Frame1.Cargo := {"Label1","TextBox1","Label2","TextBox2"} // store the Label and TextBox names in the frame's cargo CENTER WINDOW Form1 ACTIVATE WINDOW Form1 Return Nil Static Function _GetNames() Local Item1 Local Item2 GET WINDOWPROPERTY "PROP_ITEM1" OF Form1 VALUE Item1 GET WINDOWPROPERTY "PROP_ITEM2" OF Form1 VALUE Item2 Form1.TextBox1.Value := Item1 //GetUserName() Form1.TextBox2.Value := Item2 //GetComputerName() Return Nil Static Function _SetNames() Local cBoxName1, cBoxName2 cBoxName1 := Form1.Label1.Cargo // to take the TextBox name from the label's cargo cBoxName2 := Form1.Label2.Cargo Form1.&(cBoxName1).Value := GetUserName() Form1.&(cBoxName2).Value := GetComputerName() Return Nil Static Function DisableFrame() Local aControls, i Form1.Frame1.Enabled := .f. aControls := Form1.Frame1.Cargo // array of child control's names in this frame For i:=1 To Len(aControls) SetProperty("Form1", aControls, "Enabled", .f.) Next Return Nil Static Function EnableFrame() Local aControls, i Form1.Frame1.Enabled := .t. aControls := Form1.Frame1.Cargo For i:=1 To Len(aControls) SetProperty("Form1", aControls, "Enabled", .t.) Next Return Nil
| P.S. Если требуется присвоить массив, то создайте у окна невидимую метку LABEL и присваивайте массив Form.Label.Cargo := aFormArray
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 16
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.03.12 20:38. Заголовок: gfilatov2002 пишет:В..
gfilatov2002 пишет: цитата: | Вы не можете присвоить массив с помощью этой команды - только простые типы данных (символьный, логический) |
|
Это уже увидел в SetProp(...). цитата: | И еще уточнение - эти команды предназначены для дочерних MDI окон |
|
О них и разговор. цитата: | ... создайте у окна невидимую метку LABEL и присваивайте массив |
|
Это понятно, но как-то не правильно, окно ведь объект, как и контрол. Не проще ли добавить весь, существующий, механизм Cargo к окну. Рабочий пример samples\Basic\mdi_2 как раз смотрим и имеем: 1. VK_TAB реагирует (уходит с browse), но больше никогда не возвращается. 2. Установленное ON KEY ESCAPE на child окно реагирует нормально, но при включении EDIT INPLACE (внутри browse идет переназначение ESC на контрол ввода), то при возврате по Esc из EDIT INPLACE теряется ESCAPE на окне. Т.е. механизм HotKey на MDI не так, как на обычном окне.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 360
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.04.12 12:07. Заголовок: АНОНС * АНОНС * АНОН..
АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Завершена подготовка к опубликованию новой версии 2.0.9, которая выйдет послезавтра. Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода: - в т.ч. исправлена обработка события OnChange при прокрутке средней кнопки мыши и движение указателя Browse внутри MdiChicd-окна (благодарю SergKis за предложенные исправления); - добавлен новый тип DYNAMIC в построчное редактирование элемента управления Grid (автор - Адам Любчук); - обновлена сборка Харбора версии 3.1.0dev, библиотеки HbSQLite3 до версии 3.7.11 и HbZipArc; - пересобрана HMGS-IDE с текущей версией библиотеки; - добавлены новые и обновлены старые примеры (как обычно). Спасибо за внимание!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2141
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.04.12 21:02. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Работает ли HbZipArc в "multi/single-thread Harbour", если да то где можно посмотреть пример на него ? Если нет, то какой архиватор в МиниГуи поддерживает мультипоточность ? Пытаюсь из двух программ на МиниГуи (мультипотоковую загрузку файла и распаковку ZIP-файлов на библиотеке ziparchive ) сделать одну !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 361
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.04.12 10:01. Заголовок: Новый релиз библиоте..
|
|
|
krutoff
|
| |
Пост N: 154
Зарегистрирован: 17.10.05
|
|
Отправлено: 05.04.12 12:18. Заголовок: Ошибка в TSBrowse
Спасибо за очередную сборку. Григорий я нашел ошибку(в старой сборке) в модуле h_tbrowse.prg в функции ExpSeek( cExp, lSoft ) 4825: cType := ValType( Eval( &("{||" + ( ::cAlias ) + "->" + ( ::cAlias )->( IndexKey() ) + "}") ) ) надо: cType := ValType( Eval( &("{||" + ( ::cAlias ) + "->(" + ( ::cAlias )->( IndexKey() ) + ")}") ) ) Смысл в чем: если в индексном поле стоит выражение (напр. "UPPER(LEFT(FIELDNAME,10) )" ) то если не поставить доп.скобку - идет ошибка и срабатывает блок Recovery/
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 365
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.04.12 16:39. Заголовок: krutoff пишет: я на..
krutoff пишет: цитата: | я нашел ошибку(в старой сборке) в модуле h_tbrowse.prg |
| Благодарю за помощь! Обязательно поправлю эту строку для следующей сборки.
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|