Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 4052
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.02.22 14:41. Заголовок: Dima пишет чёт меня ..
Dima пишет цитата: | чёт меня этот цирк уже утомил.... |
| Извини , сам не пойму, в чем дело (у меня win10). Подождем, может само пройдет
| |
|
Dima
|
| |
Пост N: 7599
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.02.22 14:43. Заголовок: SergKis пишет: Подо..
SergKis пишет: цитата: | Подождем, может само пройдет |
| Само не пройдет ты ведь чудесно это понимаешь Счас выложу сырцы TS к тебе , сравни со своими пожалуйста Сложил
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4053
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.02.22 15:03. Заголовок: Dima Есть разница п..
Dima Есть разница по 1-му файлу h_controlmisc2.prg Положил его. Пробни
| |
|
Dima
|
| |
Пост N: 7600
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.02.22 15:59. Заголовок: SergKis пишет: Есть..
SergKis пишет: цитата: | Есть разница по 1-му файлу h_controlmisc2.prg |
| Сергей вот теперь всё отлично работает Спасибо !
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4054
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.02.22 16:48. Заголовок: Dima Нашел, где ..
Dima Нашел, где "собака порылась" 26.01 с утра сделал правку, отвлекли и я забыл пометить ее (пометки смотрю - их нет, думаю и правок нет). Тут строку вставил DEFAULT aColor := { ; { CLR_FOCUSF, GetSysColor( COLOR_WINDOWTEXT ) }, ; { CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ; { CLR_SELEF , GetSysColor( COLOR_WINDOWTEXT ) }, ; { CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } } Я же говорил, надо подождать и само пройдет
| |
|
Dima
|
| |
Пост N: 7601
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.02.22 16:54. Заголовок: :sm54: :sm36:..
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2009
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.02.22 17:36. Заголовок: Всем кому это интересно :)
Завершена подготовка 2-го обновления сборки 22.01, которое планируется опубликовать на следующей неделе. Что нового: - исправлена ошибка: при использовании команды SET WINDOW MAIN OFF не обрабатывались события окон ON SIZE и ON MAXIMIZE; - добавлены команды для отправки почты с вложениями и с поддержкой SSL протокола, также можно получать уведомление о прочтении письма; - добавлена возможность получить номер строки, нажатой при выполнении события ON CHECKBOXCLICKED в гриде со стилем CHECKBOXES; - добавлены два новых примера. Если у вас есть дополнения для этого обновления, то я с удовольствием их добавлю в библиотеку Благодарю за ваша внимание к данному проекту
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7219
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.02.22 07:49. Заголовок: Просьба, при создани..
Просьба, при создании библиотеки SAMPLES\Advanced\Tsb_Viewer\Lib - саму библиотеку TsbViewer.lib копировать автоматом в папку \MiniGUI\Lib Чтобы потом можно было сразу обращаться к этой библиотеке.
| |
|
Haz
|
| |
Пост N: 1832
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.02.22 10:20. Заголовок: Andrey пишет: копир..
Andrey пишет: цитата: | копировать автоматом в папку \MiniGUI\Lib |
|
может сначала выясним будут ли её использовать ? Поясню Одно дело как обучающий пример, если понравилось, сделал библиотеку сам и пользуй. Другое , это примеры пихать в основу библиотек пакета. Встроенный sbrowse() более чем достаточно чтоб глянуть что попало в выборку. Для работы с базами полно внешних утилит, которые в добавок умеют несравнимо больше и удобнее.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4063
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.02.22 18:01. Заголовок: gfilatov2002 Неболь..
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7220
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.02.22 18:24. Заголовок: Haz пишет: Другое ,..
Haz пишет: цитата: | Другое , это примеры пихать в основу библиотек пакета. |
| Это просто отдельная библиотека на базе ТСБ и больше ничего. Просто каждый раз ручками переписывать TsbViewer.lib в общедоступный каталог для сборки - дело утомительно. Я прошу просто подправить батники и всё, для удобства кто захочет пользоваться этой библиотекой. Внешние утилиты использовать просто утомительно, собрать свою прогу, запустить, получить dbf, завершить прогу, перейти в папку с созданной базой, запустить внешнюю прогу с нужной базой - слишком много лишних телодвижений. А так просто одна команда в исходнике и всё !!! Пользоваться или нет этой библиотекой это дело личное. Я старался сделать TsbViewer более удобным для работы с базой, у встроенного sbrowse() нет таких функций.
| |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2010
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.02.22 18:27. Заголовок: SergKis пишет: прим..
SergKis пишет: цитата: | пример с _TBrowse() с параметрами из ini |
| Супер Большое спасибо за наглядный пример
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4064
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.02.22 18:31. Заголовок: gfilatov2002 В прим..
gfilatov2002 В примере допустил неточность, изменил :HeightHead после END TBROWSE - это может приводить к дырке внизу Вот исправленный текст Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" #include "Dbinfo.ch" #xtranslate MiniGuiVersionChar() => Substr( MiniGuiVersion(), At(".", MiniGuiVersion()) - 2, 8 ) #xtranslate MiniGuiVersionNumba() => Int( Val( MiniGuiVersionChar() ) * 10000 + Val( Right(MiniGuiVersionChar(), 2) ) ) #xtranslate LenU( <c> ) => Len( <c> ) /* #xtranslate LenU( <c> ) => iif( hb_IsArray( <c> ) .or. hb_IsHash( <c> ), Len( <c> ), iif( hb_IsChar( <c> ), hb_ULen( <c> ), 0 ) ) #xtranslate At( <c>, <n> ) => hb_UAt( <c>, <n> ) #xtranslate Left( <c>, <n> ) => hb_ULeft( <c>, <n> ) #xtranslate Right( <c>, <n> ) => hb_URight( <c>, <n> ) #xtranslate SubStr( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate SubStr( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) #xtranslate Subs( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate Subs( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) */ REQUEST DBFCDX, DBFFPT REQUEST HB_CODEPAGE_UTF8 Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL cForm := "wMain" LOCAL cBrw1 := "Brw_1" LOCAL cIni := hb_FNameExtSet( hb_ProgName(), ".ini" ) LOCAL oIni := TIniData():New(cIni, .T.):Read() LOCAL oCom := oIni:COM LOCAL oBrw1, nY, nX, nH, nW, oTsb1, cLog SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "1MAIN_ICO" Default oCom:FontName := cFont, ; oCom:FontSize := nSize, ; oCom:LogName := ".\Msg.log" cFont := oCom:FontName nSize := oCom:FontSize cLog := oCom:LogName SET LOGFILE TO ( cLog ) ; fErase( cLog ) SET FONT TO cFont, nSize // фонт по default для oTsb1, oBrw1 DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD DEFINE FONT Italic FONTNAME cFont SIZE nSize BOLD ITALIC USE ( "CUSTOMER" ) ALIAS CUST1 NEW SHARED DEFINE WINDOW &cForm TITLE "Demo ini => TBrowse" MAIN NOSIZE TOPMOST ; ON INIT ( This.Topmost := .F. ) ; ON RELEASE ( dbCloseAll() ) This.Maximize nY := nX := 0 nW := This.ClientWidth nH := This.ClientHeight oTsb1 := oIni:&(cBrw1) // секция [Brw_1] //? oTsb1:GetAll() ; ?v oTsb1:GetAll() ; ? oTsb1:aText := oIni:&(cBrw1+"_Text"):GetAll() oTsb1:bBody := {|ob,op| Local oCol, aTxt, nTxt := 0 FOR EACH oCol IN ob:aColumns IF oCol:cName == "SELECTOR" ; LOOP ENDIF oCol:hFont := GetFontHandle( op:aFont[1] ) IF oCol:cFieldTyp == "C" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth( iif( oCol:nFieldLen > 50, 50, oCol:nFieldLen ), 0.82 ) ENDIF IF oCol:cName == "CUSTNO" oCol:lEdit := .F. ENDIF NEXT FOR EACH aTxt IN op:aText oCol := ob:GetColumn(aTxt[1]) IF "\" $ aTxt[2] nTxt++ oCol:cHeading := StrTran(aTxt[2], "\", CRLF) ELSE oCol:cHeading := aTxt[2] ENDIF NEXT IF nTxt > 0 ob:nHeightHead := GetFontHeight( op:aFont[2] ) * 2 ENDIF Return Nil } oBrw1 := _TBrowse( oTsb1, "CUST1", cBrw1, nY, nX, nW, nH ) oBrw1:SetFocus() ; DO EVENTS ON KEY ESCAPE ACTION iif( oBrw1:IsEdit, oBrw1:SetFocus(), ThisWindow.Release ) ON KEY F1 ACTION NIL END WINDOW //CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL
|
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2011
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.02.22 18:38. Заголовок: SergKis пишет: испр..
SergKis пишет: OK
| |
|
Haz
|
| |
Пост N: 1833
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.02.22 19:32. Заголовок: Andrey пишет: Прост..
Andrey пишет: цитата: | Просто каждый раз ручками переписывать TsbViewer.lib в общедоступный каталог для сборки - дело утомительно |
| Ну так один раз положил в папку библиотек минигуи , сам, ручками и ничего прописывать больше не надо. Зачем всем то это счастье ? Более того , при обновлении минигуи поверх, свои библиотеки там остаются.
| |
|
Haz
|
| |
Пост N: 1834
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.02.22 19:42. Заголовок: Andrey пишет: у вс..
Andrey пишет: цитата: | у встроенного sbrowse() нет таких функций. |
|
они там не нужны. Задача sbrowse() визуально оценить выборку и может быть чуть чуть подправить. Как отдельный пример, да хорошо, но как пример. Внешние утилиты все же не заменит. Нет sql нет удалённого подключения, нет изменения структур на лету, нет групповых операций . Да и незачем свой проект нагружать лишним кодом ради того чтобы пару раз посмотреть. Я уже не говорю про дыру безопасности в проекте Ps. Почти у всех есть свои библиотеки, это не повод под них батник править.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4065
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.02.22 15:51. Заголовок: gfilatov2002 Немног..
gfilatov2002 Немного модифицировал пример, добавив в ini события для клавиш demo.ini - Скрытый текст
[COM] FontName = Arial FontSize = 14 LogName = .\_msg.log [Brw_1] aFont = {"Normal", "Bold", "Bold", "Italic", "Bold"} aNumber = {1, 70} uSelector = .T. aEdit = .T. lSpecHd = .T. aFoot = .T. aEditNo = {"CUSTNO", "LASTINVOIC"} nFireKey = 0 ; F2 F3 F4 F5 F6 F7 F8 F9 aMsgPost = {113, 114, 115, 116, 117, 118, 119, 120} [Brw_1_Text] CustNo = Иденти\фикатор Company = Наименование \ клиента Addr1 = Адрес клиента Addr2 = Адрес \ ( продолжение ) City = Город State = Область Country = Страна
| demo.prg - Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" //#include "Dbinfo.ch" #xtranslate MiniGuiVersionChar() => Substr( MiniGuiVersion(), At(".", MiniGuiVersion()) - 2, 8 ) #xtranslate MiniGuiVersionNumba() => Int( Val( MiniGuiVersionChar() ) * 10000 + Val( Right(MiniGuiVersionChar(), 2) ) ) #xtranslate LenU( <c> ) => Len( <c> ) /* #xtranslate LenU( <c> ) => iif( hb_IsArray( <c> ) .or. hb_IsHash( <c> ), Len( <c> ), iif( hb_IsChar( <c> ), hb_ULen( <c> ), 0 ) ) #xtranslate At( <c>, <n> ) => hb_UAt( <c>, <n> ) #xtranslate Left( <c>, <n> ) => hb_ULeft( <c>, <n> ) #xtranslate Right( <c>, <n> ) => hb_URight( <c>, <n> ) #xtranslate SubStr( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate SubStr( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) #xtranslate Subs( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate Subs( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) */ REQUEST DBFCDX, DBFFPT REQUEST HB_CODEPAGE_UTF8 Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL cForm := "wMain" LOCAL cBrw1 := "Brw_1" LOCAL cIni := hb_FNameExtSet( hb_ProgName(), ".ini" ) LOCAL oIni := TIniData():New(cIni, .T.):Read() LOCAL oCom := oIni:COM LOCAL oBrw1, nY, nX, nH, nW, oTsb1, cLog, nTmp SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "1MAIN_ICO" Default oCom:FontName := cFont, ; oCom:FontSize := nSize, ; oCom:LogName := ".\Msg.log" cFont := oCom:FontName nSize := oCom:FontSize cLog := oCom:LogName SET LOGFILE TO ( cLog ) ; fErase( cLog ) SET FONT TO cFont, nSize // фонт по default для oTsb1, oBrw1 DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD DEFINE FONT Italic FONTNAME cFont SIZE nSize - 2 ITALIC USE ( "CUSTOMER" ) ALIAS CUST1 NEW SHARED DEFINE WINDOW &cForm TITLE "Demo ini => TBrowse" MAIN NOSIZE TOPMOST ; ON INIT ( This.Topmost := .F. ) ; ON RELEASE ( dbCloseAll() ) This.Maximize /* nY := nX := 0 nW := This.ClientWidth nH := This.ClientHeight */ oTsb1 := oIni:&(cBrw1) // секция [Brw_1] //? oTsb1:GetAll() ; ?v oTsb1:GetAll() ; ? //oTsb1:aText := oIni:&(cBrw1+"_Text"):GetAll() oTsb1:oText := oIni:&(cBrw1+"_Text") oTsb1:bBody := {|ob,op| Local oCol, aTxt, nTxt, lEditNo, nTmp, aTmp lEditNo := HB_ISARRAY(op:aEditNo) .and. LenU(op:aEditNo) > 0 FOR EACH oCol IN ob:aColumns oCol:hFont := GetFontHandle( op:aFont[1] ) IF oCol:cFieldTyp == "C" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth( iif( oCol:nFieldLen > 50, 50, oCol:nFieldLen ), 0.82 ) ELSEIF oCol:cFieldTyp == "M" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(40) ELSEIF oCol:cFieldTyp == "D" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(10) ELSEIF oCol:cFieldTyp == "T" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(24) ENDIF IF lEditNo .and. AScan(op:aEditNo, oCol:cName) > 0 oCol:lEdit := .F. ENDIF NEXT nTmp := 1 nTxt := 0 FOR EACH aTxt IN op:oText:GetAll() // op:aText IF ob:nColumn(aTxt[1], .T.) == 0 ; LOOP ENDIF oCol := ob:GetColumn(aTxt[1]) IF "\" $ aTxt[2] nTxt++ aTmp := hb_ATokens(aTxt[2], "\") nTmp := Max( nTmp, LenU(aTmp)) oCol:cHeading := StrTran(aTxt[2], "\", CRLF) ELSE oCol:cHeading := aTxt[2] ENDIF NEXT IF nTxt > 0 ob:nHeightHead := GetFontHeight( op:aFont[2] ) * nTmp ENDIF IF HB_ISARRAY(op:aMsgPost) .and. LenU(op:aMsgPost) > 0 FOR EACH nTxt IN op:aMsgPost ob:UserKeys(nTxt, {|ob,nk| _wPost(nk, ob:cParentWnd, ob) }) NEXT ENDIF Return Nil } oBrw1 := _TBrowse( oTsb1, "CUST1", cBrw1, nY, nX, nW, nH ) oBrw1:SetFocus() ; DO EVENTS ON KEY ESCAPE ACTION iif( oBrw1:IsEdit, oBrw1:SetFocus(), ThisWindow.Release ) ON KEY F1 ACTION NIL IF HB_ISARRAY(oTsb1:aMsgPost) .and. LenU(oTsb1:aMsgPost) > 0 FOR EACH nTmp IN oTsb1:aMsgPost (This.Object):Event( nTmp, {|ow,ky,ob| MsgBox("Press: "+cValToChar(ky)+"-"+ob:cControlName, ow:Name), ob:SetFocus() } ) NEXT ENDIF END WINDOW //CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 4066
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.02.22 17:46. Заголовок: PS. Еще вариант этог..
PS. Еще вариант этого же решения с событиями, кому интересно demo.ini - Скрытый текст
[COM] FontName = Arial FontSize = 14 LogName = .\_msg.log [Brw_1] aFont = {"Normal", "Bold", "Bold", "Italic", "Bold"} aNumber = {1, 70} uSelector = .T. aEdit = .T. lSpecHd = .T. aFoot = .T. aEditNo = {"CUSTNO", "LASTINVOIC"} nFireKey = 0 ; F2 F3 F4 F5 F6 F7 F8 F9 aMsgPost = {113, 114, 115, 116, 117, 118, 119, 120} [Brw_1_Keys] 113 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F2 114 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F3 115 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F4 116 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F5 117 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F6 118 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F7 119 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F8 120 = {|ob,nk| _wPost(nk, ob:cParentWnd, ob) } ; VK_F9 [Brw_1_Text] CustNo = Иденти\фикатор Company = Наименование \ клиента Addr1 = Адрес клиента Addr2 = Адрес \ ( продолжение ) City = Город State = Область Country = Страна
| demo.prg - Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" //#include "Dbinfo.ch" #xtranslate MiniGuiVersionChar() => Substr( MiniGuiVersion(), At(".", MiniGuiVersion()) - 2, 8 ) #xtranslate MiniGuiVersionNumba() => Int( Val( MiniGuiVersionChar() ) * 10000 + Val( Right(MiniGuiVersionChar(), 2) ) ) #xtranslate LenU( <c> ) => Len( <c> ) /* #xtranslate LenU( <c> ) => iif( hb_IsArray( <c> ) .or. hb_IsHash( <c> ), Len( <c> ), iif( hb_IsChar( <c> ), hb_ULen( <c> ), 0 ) ) #xtranslate At( <c>, <n> ) => hb_UAt( <c>, <n> ) #xtranslate Left( <c>, <n> ) => hb_ULeft( <c>, <n> ) #xtranslate Right( <c>, <n> ) => hb_URight( <c>, <n> ) #xtranslate SubStr( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate SubStr( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) #xtranslate Subs( <cS>, <nS> ) => hb_USubStr( <cS>, <nS> ) #xtranslate Subs( <cS>, <nS>, <nL> ) => hb_USubStr( <cS>, <nS>, <nL> ) */ REQUEST DBFCDX, DBFFPT REQUEST HB_CODEPAGE_UTF8 Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL cForm := "wMain" LOCAL cBrw1 := "Brw_1" LOCAL cIni := hb_FNameExtSet( hb_ProgName(), ".ini" ) LOCAL oIni := TIniData():New(cIni, .T.):Read() LOCAL oCom := oIni:COM LOCAL oBrw1, nY, nX, nH, nW, oTsb1, cLog, nTmp, aTmp SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "1MAIN_ICO" Default oCom:FontName := cFont, ; oCom:FontSize := nSize, ; oCom:LogName := ".\Msg.log" cFont := oCom:FontName nSize := oCom:FontSize cLog := oCom:LogName SET LOGFILE TO ( cLog ) ; fErase( cLog ) SET FONT TO cFont, nSize // фонт по default для oTsb1, oBrw1 DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD DEFINE FONT Italic FONTNAME cFont SIZE nSize - 2 ITALIC USE ( "CUSTOMER" ) ALIAS CUST1 NEW SHARED DEFINE WINDOW &cForm TITLE "Demo ini => TBrowse" MAIN NOSIZE TOPMOST ; ON INIT ( This.Topmost := .F. ) ; ON RELEASE ( dbCloseAll() ) This.Maximize This.Cargo := oHmgData() /* nY := nX := 0 nW := This.ClientWidth nH := This.ClientHeight */ oTsb1 := oIni:&(cBrw1) // секция [Brw_1] //? oTsb1:GetAll() ; ?v oTsb1:GetAll() ; ? //oTsb1:aText := oIni:&(cBrw1+"_Text"):GetAll() oTsb1:oText := oIni:&(cBrw1+"_Text") oTsb1:aUserKeys := {} FOR EACH aTmp IN oIni:&(cBrw1+"_Keys"):GetAll() nTmp := Val(aTmp[1]) AADD( oTsb1:aUserKeys, {nTmp, aTmp[2]} ) NEXT oTsb1:bBody := {|ob,op| Local oCol, aTxt, nTxt, lEditNo, nTmp, aTmp lEditNo := HB_ISARRAY(op:aEditNo) .and. LenU(op:aEditNo) > 0 FOR EACH oCol IN ob:aColumns oCol:hFont := GetFontHandle( op:aFont[1] ) IF oCol:cFieldTyp == "C" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth( iif( oCol:nFieldLen > 50, 50, oCol:nFieldLen ), 0.82 ) ELSEIF oCol:cFieldTyp == "M" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(40) ELSEIF oCol:cFieldTyp == "D" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(10) ELSEIF oCol:cFieldTyp == "T" oCol:cPicture := Nil oCol:nWidth := oCol:ToWidth(24) ENDIF IF lEditNo .and. AScan(op:aEditNo, oCol:cName) > 0 oCol:lEdit := .F. ENDIF NEXT nTmp := 1 nTxt := 0 FOR EACH aTxt IN op:oText:GetAll() // op:aText IF ob:nColumn(aTxt[1], .T.) == 0 ; LOOP ENDIF oCol := ob:GetColumn(aTxt[1]) IF "\" $ aTxt[2] nTxt++ aTmp := hb_ATokens(aTxt[2], "\") nTmp := Max( nTmp, LenU(aTmp)) oCol:cHeading := StrTran(aTxt[2], "\", CRLF) ELSE oCol:cHeading := aTxt[2] ENDIF NEXT IF nTxt > 0 ob:nHeightHead := GetFontHeight( op:aFont[2] ) * nTmp ENDIF /* IF HB_ISARRAY(op:aMsgPost) .and. LenU(op:aMsgPost) > 0 FOR EACH nTxt IN op:aMsgPost ob:UserKeys(nTxt, {|ob,nk| _wPost(nk, ob:cParentWnd, ob) }) NEXT ENDIF */ Return Nil } oBrw1 := _TBrowse( oTsb1, "CUST1", cBrw1, nY, nX, nW, nH ) oBrw1:SetFocus() ; DO EVENTS This.Cargo:cBrw1 := cBrw1 This.Cargo:oBrw1 := oBrw1 ON KEY ESCAPE ACTION iif( oBrw1:IsEdit, oBrw1:SetFocus(), ThisWindow.Release ) ON KEY F1 ACTION NIL /* IF HB_ISARRAY(oTsb1:aMsgPost) .and. LenU(oTsb1:aMsgPost) > 0 FOR EACH nTmp IN oTsb1:aMsgPost (This.Object):Event( nTmp, {|ow,ky,ob| MsgBox("Press: "+cValToChar(ky)+"-"+ob:cControlName, ow:Name), ob:SetFocus() } ) NEXT ENDIF */ FOR EACH aTmp IN oTsb1:aUserKeys (This.Object):Event( aTmp[1], {|ow,ky,ob| MsgBox("Press: "+cValToChar(ky)+"-"+ob:cControlName, ow:Name), ob:SetFocus() } ) NEXT END WINDOW //CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL
|
| |
|
gfilatov2002
|
| moderator
|
Пост N: 2012
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.22 19:01. Заголовок: SergKis пишет: моди..
SergKis пишет: цитата: | модифицировал пример, добавив в ini события для клавиш |
| Благодарю за помощь SergKis пишет: цитата: | вариант этого же решения с событиями, кому интересно |
| Надеюсь, что эти примеры будут кому-нибудь полезны
| |
|
Andrey
|
| постоянный участник
|
Пост N: 7222
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.22 19:28. Заголовок: Haz пишет: Почти у ..
Haz пишет: цитата: | Почти у всех есть свои библиотеки, это не повод под них батник править. |
| Может быть и не повод, но большее кол-во инструментов для МиниГуи будет полезней, особенно для новичков. Не смотря на ограниченность TsbViewer, я делал его под свою часто используемую работу с базой. Такого не было в МиниГуи, вот и сделал в качестве инструмента для баз. Больше никто не предлагал подобный функционал для баз, только внешние утилиты. Если кто-то делал инструмент работы с базой - было бы полезно выложить его в Минигуи, для всех. А то пока наработаешь свои библиотеки и примеры для МиниГуи - года 3-4 пройдёт... gfilatov2002 пишет: цитата: | Надеюсь, что эти примеры будут кому-нибудь полезны |
| Ещё как нужны. Работа с событиями очень нужная вещь в МиниГуи, особенно для больших проектов. Прога перестаёт падать, если использовать события, а не функции.
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|