Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI

gfilatov: Вот решил снова начать новую тему, чтобы не раздувать старый топик на 4 листа Новую версию Экспериментального релиза библиотеки MiniGUI выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=938 Что нового: - исправления в TAB - исправления в библиотеке TsBrowse, добавлен новый метод Report - синхронизация с оффициальной версией HMG 2.0.020 Жду комментариев на этот выпуск здесь и на русском форуме MiniGUI по адресу: http://talk.mail.ru/forum/talk.ru.boom.minigui?page=1

Ответов - 144, стр: 1 2 3 4 5 6 7 8 All

gfilatov: i3t4j6 пишет: что за изменения или нововведения по поводу TComboBox в последнем релизе? Сейчас при INPLACE редактировании работает ComboBox как для символьных, так и для логических полей базы. Посмотри пример 6 в demo из папки samples\advanced\TSBrowse

i3t4j6: gfilatov пишет: Посмотри пример 6 в demo из папки ... Я так и сделал - сначала проверил , а потом спросил. Так вот : после выбора нужного элемента и нажатия Enter - блокируется вся работа с клавиатуры, нужно несколько раз понажимать стрелки - только потом курсор начинает двигаться . Так было и раньше, я уже об этом писал 13.09.06.

krutoff: У меня были некоторые замечания по TSBrowse. Сейчас протестировал последний вариант с TComboBox (от 10.10.06) - все Ok. Клавиатура не блокируется. А изменения -> связаны с массивом aData для Column. aData - передает свое значение в поле из выбора Combo, т.е. aData - это список значений (любого типа и любых значений, и в произвольном порядке) для изменения значения поля файла.


i3t4j6: krutoff пишет: ...все Ok. Клавиатура не блокируется. Если работать с мышкой - не блокируется, а если при помощи стрелок и Enter - глухо ! (пример 6 в demo из папки samples\advanced\TSBrowse)

krutoff: Проверил пример 6 - у меня работает (правда я использую свмые последние изменения) . Если клавиатурой : Enter -> Alt+Вниз + Enter все это работает.

i3t4j6: krutoff пишет: Если клавиатурой : Enter -> Alt+Вниз + Enter все это работает. Олег ! Да, как Вы описываете - работает . Блокируется и виснет следующее поле - после выхода изTComboBox ...

gfilatov: i3t4j6 пишет: Блокируется и виснет следующее поле - после выхода изTComboBox Я тоже подтверждаю эту проблему, и у меня нет ее решения. Олег, поможешь?

Петр: Ув. gfilatov! samples\basic\grid_2 При нажатии Enter вылетает с Error BASE/1133 Bound error: array assign Called from _SETGRIDCELLVALUE(1414) Called from SETPROPERTY(3604) Called from CAS_CLICK(126) Called from (b)MAIN(71) Called from _DOCONTROLEVENTPROCEDURE(4637) Called from EVENTS(1829) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(4296) Called from DOMETHOD(3985) Called from MAIN(75) В то же время, по двойному щелчку мыши CAS_CLICK() отрабатывает без ошибок В чем здесь проблема?

krutoff: Буду смотреть. Только сейчас со временем туго, но уж взялся за гуж...

krutoff: (TSBrowse) Я так понял, что после работы клавиатурой с TComboBox след. поле становится в режим редактирования. И необходимо нажатие Esc. Я правильно понял - что режим редактора убрать для след.поля?

gfilatov: Петр пишет: samples\basic\grid_2 При нажатии Enter вылетает с Error BASE/1133 Bound error: array assign Все просто и логично: при нажатии Enter и ряд, и колонка равны нулю Пожалуйста, попробуйте исправленный пример ниже: /* * Grid com MultiSelect * Author: CAS <cas_webnet@yahoo.com.br> * 14/Nov/2005 01:31am */ #include "minigui.ch" Function Main Declare aRows[20][3], a_image[4], a_cab[3], a_width[3] * Imagens para ficar mudando dentro da GRID a_image[1] = 'BMP_CAS' && 0 a_image[2] = 'BMP_OK' && 1 a_image[3] = 'BMP_COR' && 2 a_image[4] = 'BMP_NO' && 3 * IMG aRows [01] := { 1 , 'Ayrton Senna' , '???-????'} aRows [02] := { 0 , 'Pele' , '324-6432'} aRows [03] := { 0 , 'Smart Max' , '432-5892'} aRows [04] := { 0 , 'Grillo Pepe' , '894-2332'} aRows [05] := { 0 , 'Kirk James' , '346-9873'} aRows [06] := { 0 , 'Barriga Carlos' , '394-9654'} aRows [07] := { 0 , 'Flanders Ned' , '435-3211'} aRows [08] := { 0 , 'Smith John' , '123-1234'} aRows [09] := { 0 , 'Pedemonti Flavio' , '000-0000'} aRows [10] := { 0 , 'Gomez Juan' , '583-4832'} aRows [11] := { 0 , 'Fernandez Raul' , '321-4332'} aRows [12] := { 0 , 'Borges Javier' , '326-9430'} aRows [13] := { 0 , 'Alvarez Alberto' , '543-7898'} aRows [14] := { 0 , 'Gonzalez Ambo' , '437-8473'} aRows [15] := { 0 , 'Batistuta Gol' , '485-2843'} aRows [16] := { 0 , 'Vinazzi Amigo' , '394-5983'} aRows [17] := { 0 , 'Pedemonti Flavio' , '534-7984'} aRows [18] := { 0 , 'Samarbide Armando' , '854-7873'} aRows [19] := { 0 , 'Pradon Alejandra' , '555-5555'} aRows [20] := { 0 , 'Reyes Monica' , '432-5836'} a_cab[1] = '?' ; a_width[1] = 22 a_cab[2] = 'Name' ; a_width[2] = 220 a_cab[3] = 'Phone' ; a_width[3] = 220 DEFINE WINDOW Form_1 ; AT 0,0 WIDTH 640 HEIGHT 480 ; TITLE 'Grid MultiSelect - Press Delete By CAS - cas_webnet@yahoo.com.br' MAIN NOMAXIMIZE NOSIZE DEFINE STATUSBAR STATUSITEM "" action nil END STATUSBAR ON KEY DELETE ACTION cas_del() @ 2,0 BUTTON btn_cas1 caption 'Result' action cas_result() default @ 2,150 BUTTON btn_cas2 caption 'Limpa' action cas_limpa("click") @ 2,300 BUTTON btn_cas3 caption 'Update' action form_1.grid_1.cell( 1 , 2 ) := 'cas_webnet@yahoo.com.br' @ 2,450 BUTTON btn_cas4 caption 'Exit' action thiswindow.release @ 50,70 GRID Grid_1 ; WIDTH 484 ; HEIGHT 328 ; HEADERS a_cab ; WIDTHS a_width ; ITEMS aRows ; VALUE {1,3} ; IMAGE a_image ; TOOLTIP 'Grid CAS' ; ON DBLCLICK cas_click() ; ON CHANGE cas_change() MULTISELECT END WINDOW form_1.center ; form_1.activate Return *.......................................................* func cas_limpa local n_for, n_pos, a_result local m_itemcount := form_1.grid_1.itemcount if m_itemcount = 0 return endif form_1.grid_1.DisableUpdate for n_for=1 to m_itemcount if form_1.grid_1.cell( n_for , 1 ) # 0 form_1.grid_1.cell( n_for , 1 ) := 0 end next form_1.grid_1.EnableUpdate if pcount()=1 retu nil end a_result := form_1.grid_1.value if len( a_result ) = 0 return end form_1.grid_1.DisableUpdate for n_for=1 to len( a_result ) n_pos := a_result[ n_for ] form_1.grid_1.cell( n_pos , 1 ) := 1 next form_1.grid_1.EnableUpdate retu nil *.......................................................* func cas_click local row := max(1, This.CellRowIndex), col := max(1, This.CellColIndex) local x := ; 'CellRowIndex = ' + alltrim( str( This.CellRowIndex ) ) +chr(13)+; 'CellColIndex = ' + alltrim( str( This.CellColIndex ) ) +chr(13)+; 'CellColRow = ' + alltrim( str( This.CellRow ) ) +chr(13)+; 'CellColCol = ' + alltrim( str( This.CellCol ) ) +chr(13)+; 'CellColWidth = ' + alltrim( str( This.CellWidth ) ) +chr(13)+; 'CellColHeight = ' + alltrim( str( This.CellHeight ) ) Form_1.Grid_1.Cell( row , col ) := 'cas_webnet@yahoo.com.br' MsgInfo( x , 'This.Cellxxxxxx' ) return *.......................................................* func cas_change local spc := space(3) form_1.statusbar.item(1) := ; 'Selected: ' + alltrim( str( len(this.value) ) ) +'/'+; alltrim( str( form_1.grid_1.ItemCount ) ) cas_limpa() retu nil *.......................................................* func cas_del local m_go, a_grid, a_grid_value local m_itemcount := form_1.grid_1.itemcount if m_itemcount = 0 return endif m_go = 0 a_grid_value := form_1.grid_1.value do while .t. a_grid = form_1.grid_1.value if len( a_grid ) = 0 exit end if m_go = 0 m_go = a_grid[ 1 ] end Form_1.Grid_1.DeleteItem( a_grid[ 1 ] ) enddo if len( a_grid_value ) = 1 .and. m_itemcount = a_grid_value[ 1 ] m_go = a_grid_value[ 1 ] - 1 end form_1.grid_1.setfocus form_1.grid_1.value := { m_go } return *.......................................................* func cas_result local n_for, x, a_result local m_itemcount := form_1.grid_1.itemcount if m_itemcount = 0 return endif a_result := form_1.grid_1.value if len( a_result ) = 0 return end x := '' for n_for=1 to len( a_result ) n_pos := a_result[ n_for ] x += ; form_1.grid_1.header( 2 ) +'='+; form_1.grid_1.cell( n_pos , 2 ) +space(15)+; form_1.grid_1.header( 3 ) +'='+; form_1.grid_1.cell( n_pos , 3 ) + chr(13) next msginfo( x , 'Selected item(s): ' + alltrim( str( len( a_result ) ) ) ) return nil

i3t4j6: krutoff пишет: что после работы клавиатурой с TComboBox след. поле становится в режим редактирования. И необходимо нажатие Esc. Не совсем ... Возьми пробей при помощи Enter любую строку сначала и до конца - после поля с TComboBox курсор замирает и след. поле вовсе не становится в режим редактирования.

krutoff: У меня больше 50 полей и гдето 5 Combo. Клацал только ENTER'ом - дошел до конца и перешел на новую строку. Что сделать дальше?

i3t4j6: krutoff пишет: Что сделать дальше? Я понял -в чем дело, почему ты не находишь дефект : убери Brw_6:lAutoEdit := .T.

gfilatov: krutoff пишет: Что сделать дальше? Олег! Я, кажется, разобрался В твоем, последнем, варианте НЕ существует блокировки после редактирования ComboBox. Это решение будет доступно в следующем выпуске Расширенного релиза библиотеки. Вопрос закрыт

Петр: gfilatov пишет: Все просто и логично: при нажатии Enter и ряд, и колонка равны нулю Просто - да, а насчет логично? Я вообще то спрашивал не о Error BASE/1133 Bound error: array assign Меня просто заинтересовало, почему в MiniGUI нажатие Enter (вроде клавиатура) обрабатывается в ON DBLCLICK (вроде бы должно относится к мыши). Или это так задумано? или не хочется проводить лишних проверок? И нельзя ли добавить что-то вроде ON KEYPRESS? Спасибо.

gfilatov: Петр пишет: И нельзя ли добавить что-то вроде ON KEYPRESS? Петр, К Вашим услугам есть горячие клавиши. Вы можете легко переопределить нажатие клавиши Enter: ON KEY RETURN ACTION MsgInfo( "Нажата клавиша Enter!" )

Петр: Еще раз спасибо! Посмотрел i_keybd.ch и все понял. Извините за вопросы, но я к MiniGUI только присматриваюсь - раньше работал только с консолью. Понравилось, наверное и далее буду донимать..

gfilatov: Петр пишет: наверное и далее буду донимать.. Сколько угодно, если это делать в пределах разумного...

gfilatov: Новую версию Расширенного релиза библиотеки MiniGUI выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=1156 Что нового: - небольшое исправление в библиотеке TsBrowse (благодаря Олегу Крутову ) - исходники и пример для библиотеки HbXML Александра Кресина - новый пример печати с помощью библиотеки MiniPrint - обновление различных примеров



полная версия страницы