Автор | Сообщение |
Vlad04
|
| постоянный участник
|
Пост N: 420
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)
TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру цитата: | DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID |
| Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 4805
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.03.16 22:11. Заголовок: SergKis пишет: прощ..
SergKis пишет: цитата: | проще сделать GetBox вместе с tsb |
| Это действительно проще. В примере который я дал выше - есть такой метод....
| |
|
SergKis
|
| постоянный участник
|
Пост N: 906
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 01:59. Заголовок: Andrey пишет:есть та..
Andrey пишет: Я такой имел ввиду: Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "tsbrowse.ch" Memvar oBrw Static Ledit:=.F.,nOrd :=0,sSeek:='' *----------------------------------- PROCEDURE Main *----------------------------------- LOCAL i,nArea SET SOFTSEEK ON SET DELETED ON REQUEST DBFCDX , DBFFPT Use STREET Via "DBFCDX" ALIAS BASE shared New if !File('STREET.cdx') INDEX ON Upper(NAME) Tag NAME endif dbSetOrder(1) nArea:=Select() DEFINE WINDOW win_1 AT 0, 0 WIDTH 1200 HEIGHT 700 ; MAIN TITLE "TSBrowse Add Record Demo" NOMAXIMIZE NOSIZE @ 5,10 BUTTON ttop PICTURE "First" TOOLTIP "Первая " ACTION TbMove(1,obrw,nArea) WIDTH 20 HEIGHT 18 // (EkspeD->(DbGoTop()),EkspeDitor.Brw_1.Value := EkspeD->(RecNo())) @ 5,10+20 BUTTON prev PICTURE "prior" TOOLTIP "Предыдущая" ACTION TbMove(3,obrw,nArea) WIDTH 20 HEIGHT 18 @ 5,10+40 BUTTON nnext PICTURE "next" TOOLTIP "Следующая " ACTION TbMove(4,obrw,nArea) WIDTH 20 HEIGHT 18 @ 5,10+60 BUTTON bott PICTURE "Last" TOOLTIP "Последняя " ACTION TbMove(6,obrw,nArea) WIDTH 20 HEIGHT 18 @ 5,10+100 BUTTON delRec PICTURE "Delete" TOOLTIP "Удалить !" ACTION {||DeleteRecall(obrw,nArea), oBrw:Refresh(.t.) } WIDTH 20 HEIGHT 18 @ 5,10+120 BUTTON readRec PICTURE "editNo" TOOLTIP "Редактированиe " ACTION Edit(1,'win_1',obrw,nArea) WIDTH 20 HEIGHT 18 // (EkspeDitor.Brw_1.ALLOWEDIT:=.T.) @ 5,10+120 BUTTON readRecN PICTURE "edit" TOOLTIP "Изменить " ACTION Edit(2,'win_1',obrw,nArea) WIDTH 20 HEIGHT 18 // (EkspeDitor.Brw_1.ALLOWEDIT:=.T.) @2,10+180 BUTTON BRUN CAPTION "Add Record" ACTION AddRecord( obrw,nArea ) DEFAULT DEFINE STATUSBAR STATUSITEM '' WIDTH 20 END STATUSBAR OpenBrows( "oBrw", 'win_1', 30, 2, win_1.Width-20, win_1.Height-95,nArea ) // 'BASE' // oBrw:bKeyDown := { | nKey | MyKeyAction(nKey,oBrw,'win_1'), lOk := nKey != VK_ESCAPE } oBrw:bKeyDown := { | nKey | MyKeyAction(nKey,'win_1',oBrw,'win_1'), lOk := nKey != VK_ESCAPE } @ 0, 0 GETBOX MyFind HEIGHT 10 WIDTH 10 VALUE "" ; ON LOSTFOCUS ( win_1.MyFind.Hide, win_1.oBrw.SetFocus ) ; ON CHANGE ( MyFind(oBrw) ) oBrw:SetFocus() END WINDOW CENTER WINDOW win_1 ACTIVATE WINDOW win_1 RETURN *-------------------------------- FUNCTION OpenBrows( cBrw, cParent, nRow, nCol, nWidth, nHeight, cAlias ) Public &cBrw DEFINE TBROWSE &cBrw ; AT nRow, nCol ; ALIAS cAlias ; OF &cParent ; WIDTH nWidth ; HEIGHT nHeight ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 :SetAppendMode( .F. ) :SetDeleteMode( .F. ) :lNoHScroll := .T. :lCellBrw := .F. ADD COLUMN TO obrw HEADER "Name" FOOTER "" ; SIZE 600 ; DATA FieldWBlock( "name", Select( "base" ) ) EDITABLE ADD COLUMN TO obrw HEADER "SOCR" FOOTER "" ; SIZE 350 ; DATA FieldWBlock( "SOCR", Select( "base" ) ) EDITABLE ADD COLUMN TO obrw HEADER "CODE" FOOTER "" ; SIZE 400 ; DATA FieldWBlock( "CODE", Select( "base" ) ) EDITABLE &cBrw:nHeightCell += 6 &cBrw:nHeightHead += 14 &cBrw:nHeightFoot := &cBrw:nHeightHead &cBrw:nWheelLines := 1 &cBrw:lDrawFooters := .T. &cBrw:lNoHScroll := .T. // LoadFields( cBrw, cParent ) END TBROWSE // !!! RETURN Static Function MyFind( oBrw ) Local cVal := win_1.MyFind.Value If ! empty(cVal) (oBrw:cAlias)->( dbSeek(upper(trim(cVal))) ) oBrw:GotoRec((oBrw:cAlias)->( RecNo()) ) EndIf Return nil *----------------------------------- PROCEDURE AddRecord( obrw ,cAlias) *----------------------------------- Local nRec:=Recno() Local nArea := Select() Select(cAlias) /* DbAppend() nRec:=Recno() obrw:GoToRec( nRec ) oBrw:Refresh(.t.) */ (obrw:cAlias)->( DbAppend() ) (obrw:cAlias)->( FieldPut( 1, Procname()+": "+strzero(RecNo(),7 )+str(procline(), 7) ) ) (obrw:cAlias)->( FieldPut( 3, Str(RecNo(),5) ) ) obrw:GoToRec( RecNo() ) obrw:SetFocus() Select(nArea) RETURN /*-------------------------------- */ FUNCTION TbMove(met,oBrw,cAlias) Local nArea := Select() Select(cAlias) DO CASE CASE met == 1 oBrw:GoTop() CASE met == 2 oBrw:PageUp() CASE met == 3 oBrw:GoUp() CASE met == 4 oBrw:GoDown() CASE met == 5 oBrw:PageDown() CASE met == 6 oBrw:GoBottom() ENDCASE oBrw:Refresh(.t.) Select(nArea) RETURN NIL *---------------------------------- Static Procedure DeleteRecall(obrw,cAlias) Local nArea := Select() Select(cAlias) if MsgOkCancel('Запись будет удалена! Удалить?','Удаление записи!') = .T. if ( Rlock() ) ( DbDelete()) ( dbUnlock() ) oBrw:Refresh(.t.) endif end Select(nArea) Return Static Procedure Edit(met,cForm,oBrw,cAlias) ******************** Local nArea := Select() Select(cAlias) if met = 1 // oBrw:lCellBrw := .t. // выделена строка или ячейка // Ledit := .t. // &(cForm).readRec.Visible:=.t. // &(cForm).readRecN.Visible:=.f. else // oBrw:lCellBrw := .f. // выделена строка или ячейка // Ledit := .f. // &(cForm).readRec.Visible:=.t. // &(cForm).readRecN.Visible:=.f. endif // &(cForm).Brw_1.SetFocus oBrw:Refresh(.t.) Select(nArea) Return //------------------------------------------------------------------------------ Function KeyToChar( nVirtKey ) //------------------------------------------------------------------------------ LOCAL i, cRetChar := "" LOCAL nKeyboardMode := GetKeyboardMode() LOCAL lShift := CheckBit( GetKeyState( 16 ), 32768 ) LOCAL aKeysNumPad := { 96,97,98,99,100,101,102,103,104,105,106,107,109,110,111 } LOCAL cKeysNumPad := "0123456789*+-./" LOCAL aKeys1 := { 192,189,187,219,221,220,186,222,188,190,191 } LOCAL cKeys1US := "`-=[]\;',./" LOCAL cKeys1ShiftUS := '~_+{}|:"<>?' LOCAL cKeys1RU := "Ё-=ХЪ\ЖЭБЮ." LOCAL cKeys1ShiftRU := "Ё_+ХЪ/ЖЭБЮ," LOCAL cKeys2US := "1234567890QWERTYUIOPASDFGHJKLZXCVBNM " LOCAL cKeys2ShiftUS := "!@#$%^&*()QWERTYUIOPASDFGHJKLZXCVBNM " LOCAL cKeys2RU := "1234567890ЙЦУКЕНГШЩЗФЫВАПРОЛДЯЧСМИТЬ " LOCAL cKeys2ShiftRU := '!"№;%:?*()ЙЦУКЕНГШЩЗФЫВАПРОЛДЯЧСМИТЬ ' i := ascan( aKeysNumPad, nVirtKey ) if i > 0 RETURN substr( cKeysNumPad, i, 1 ) endif i := ascan( aKeys1, nVirtKey ) if i > 0 if nKeyboardMode == 1033 // US if lShift cRetChar := substr( cKeys1ShiftUS, i, 1 ) else cRetChar := substr( cKeys1US, i, 1 ) endif elseif nKeyboardMode == 1049 // RU if lShift cRetChar := substr( cKeys1ShiftRU, i, 1 ) else cRetChar := substr( cKeys1RU, i, 1 ) endif endif RETURN cRetChar endif i := at( chr( nVirtKey ), cKeys2US ) if i > 0 if nKeyboardMode == 1033 // US if lShift cRetChar := substr( cKeys2ShiftUS, i, 1 ) else cRetChar := substr( cKeys2US, i, 1 ) endif elseif nKeyboardMode == 1049 // RU if lShift cRetChar := substr( cKeys2ShiftRU, i, 1 ) else cRetChar := substr( cKeys2RU, i, 1 ) endif endif endif RETURN cRetChar ************************** STATIC FUNCTION MyKeyAction(l_Key,cForm,oBrw, cParent) Local sL_key:='',nRec:=0 Local oCell, hBrw, nRow, oGet, uRet //MsgInfo('l_key='+Str(l_key)) Select(oBrw:cAlias) If Indexord() =0 Return endif DO CASE // CASE l_key==8 //VK_BACK //.or.l_key>31.and.l_key<242 // if l_key==VK_BACK // if Len(sSeek) > 0 // sSeek:=left(sSeek,Len(sSeek)-1) // &(cForm).STATUSBAR.Item(1):=sSeek // endif // else CASE l_key>32.and.l_key<254 // sl_key := KeyToChar(l_key ) // моя функция обработки клавиш / my processing function keys oCell := oBrw:GetCellInfo() hBrw := oBrw:hWnd nRow := GetWindowHeight(hBrw) + win_1.oBrw.Row - oBrw:nHeightFoot win_1.MyFind.Row := nRow win_1.MyFind.Col := oCell:nCol win_1.MyFind.Width := oCell:nWidth win_1.MyFind.Height := oBrw:nHeightFoot win_1.MyFind.Show() win_1.MyFind.SetFocus() win_1.MyFind.Value := space(10) _PushKey(l_key) uRet := .F. // обработка завершена (nil - продолжит tsb) ENDCASE Return uRet #pragma begindump #include <windows.h> #include "hbapi.h" HB_BOOL flag_hhk = FALSE; HB_BOOL PAUSE_hhk = FALSE; HHOOK hhk = NULL; HB_LONG VK_PRESIONADO = 0; HB_LONG VK_lParam = 0; HB_FUNC( GETKEYBOARDMODE ) { HKL kbl; HWND CurApp; DWORD idthd; int newmode; CurApp=GetForegroundWindow(); idthd=GetWindowThreadProcessId(CurApp,NULL); kbl=GetKeyboardLayout(idthd); newmode=(int)LOWORD(kbl); hb_retnl(newmode); } #pragma enddump
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 907
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 02:03. Заголовок: PS пропустил после @..
PS пропустил после @ 0, 0 GETBOX MyFind ... win_1.MyFind.Hide
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 528
Зарегистрирован: 13.10.05
|
|
Отправлено: 24.03.16 05:28. Заголовок: SergKis Поиск и фуну..
SergKis Поиск и фунукцию обработки клавиатуры прикрутил из другого примера ( Окно и бровс в одной функции), там все нормально работает. В этом примере ругается на &(cForm), так как надо чтобы форма реагирвала на события.
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 529
Зарегистрирован: 13.10.05
|
|
Отправлено: 24.03.16 06:31. Заголовок: SergKis ок! Нормаль..
SergKis ок! Нормальный поиск
| |
|
SergKis
|
| постоянный участник
|
Пост N: 908
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 10:29. Заголовок: Vlad04 Совет. испол..
Vlad04 Совет. используйте блоки код (параметры), как прописаны их вызовы в tsb, проще будет и проблем меньше, например METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse ... If ::bUserKeys != Nil uReturn := Eval( ::bUserKeys, nKey, nFlags, Self ) If uReturn != Nil .and. ValType( uReturn ) == "N" .and. uReturn < 200 // interpreted as a virtual key code to nKey := uReturn // change the original key pressed ElseIf uReturn != Nil .and. ValType( uReturn ) == "L" .and. ! uReturn ::nUserKey := 255 // want to inhibit the KeyDown and KeyChar Methods for key pressed Return 0 EndIf EndIf ... т.е. вместо oBrw:bKeyDown := { | nKey | MyKeyAction(nKey,'win_1',oBrw,'win_1'), lOk := nKey != VK_ESCAPE } делать oBrw:bKeyDown := { | nKey,nFlags,oBrw| MyKeyAction(nKey,nFlag,oBrw) } где Funct MyAction(l_key, nFlags, oBrw ) Local cForm := oBrw:cParentWnd Local cBrw := oBrw:cControlName Local hBrw := oBrw:hWnd ... см. свойства tsb
| |
|
SergKis
|
| постоянный участник
|
Пост N: 909
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 10:33. Заголовок: PS по инерции копипа..
PS по инерции копипастил не oBrw:bKeyDown, на мой взгляд, а oBrw:bUserKeys := ...
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 530
Зарегистрирован: 13.10.05
|
|
Отправлено: 24.03.16 12:17. Заголовок: SergKis Не сочтите ..
SergKis Не сочтите за наглость, не могли бы вы подправить ПРИМЕР в Вашей редакции. Думаю, многим было бы полезно. Спасибо.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 910
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 20:40. Заголовок: Vlad04 пишет: подпра..
Vlad04 пишет: цитата: | подправить ПРИМЕР в Вашей редакции. |
| тут Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "tsbrowse.ch" *----------------------------------- PROCEDURE Main *----------------------------------- LOCAL i,nArea LOCAL nY := 5, nX := 10 LOCAL nW := 24, nH := 24 SET SOFTSEEK ON SET DELETED ON REQUEST DBFCDX , DBFFPT Use STREET Via "DBFCDX" ALIAS BASE shared New if !File('STREET.cdx') INDEX ON Upper(NAME) Tag NAME endif dbSetOrder(1) DEFINE WINDOW win_1 AT 0, 0 WIDTH 1200 HEIGHT 700 ; MAIN TITLE "TSBrowse Add Record Demo" NOMAXIMIZE NOSIZE @ nY, nX BUTTON ttop PICTURE "First" TOOLTIP "Первая " ; ACTION ( oBrw:Gotop() , oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON prev PICTURE "prior" TOOLTIP "Предыдущая" ; ACTION ( oBrw:GoUp() , oBrw:SetFocus() ) WIDTH nH HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON nnext PICTURE "next" TOOLTIP "Следующая " ; ACTION ( oBrw:GoDown() , oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON bott PICTURE "Last" TOOLTIP "Последняя " ; ACTION ( oBrw:GoBottom() , oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW + 40 @ nY, nX BUTTON delRec PICTURE "Delete" TOOLTIP "Удалить !" ; ACTION ( oBrw:DeleteRow(), oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON readRec PICTURE "editNo" TOOLTIP "Редактированиe " ; ACTION ( MsgBox(_HMG_ThisControlName, _HMG_ThisFormName), oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON readRecN PICTURE "edit" TOOLTIP "Изменить " ; ACTION ( MsgBox(_HMG_ThisControlName, _HMG_ThisFormName), oBrw:SetFocus() ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW @ nY, nX BUTTON BRUN PICTURE "AddRec" TOOLTIP "Добавить " ; ACTION ( AddRecord( oBrw ) ) WIDTH nW HEIGHT nH ; NOTABSTOP nX += nW DEFINE STATUSBAR STATUSITEM " " END STATUSBAR OpenBrows( "oBrw", 'win_1', 30, 2, win_1.Width-20, win_1.Height-95,nArea ) // 'BASE' oBrw:bUserKeys := {|nKy,nFlg,oBr| MyKeyAction(nKy,nFlg,oBr) } @ 0, 0 GETBOX MyFind HEIGHT 10 WIDTH 10 VALUE "" ; ON LOSTFOCUS ( win_1.MyFind.Hide, win_1.oBrw.SetFocus ) ; ON CHANGE ( MyFind(oBrw) ) ; INVISIBLE oBrw:SetFocus() END WINDOW CENTER WINDOW win_1 ACTIVATE WINDOW win_1 RETURN *-------------------------------- FUNCTION OpenBrows( cBrw, cParent, nRow, nCol, nWidth, nHeight, cAlias ) Public &cBrw DEFINE TBROWSE &cBrw ; AT nRow, nCol ; ALIAS cAlias ; OF &cParent ; WIDTH nWidth ; HEIGHT nHeight ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 oBrw:SetAppendMode( .F. ) oBrw:SetDeleteMode( .T., .T. ) oBrw:lNoHScroll := .T. oBrw:lCellBrw := .F. ADD COLUMN TO obrw HEADER "Name" FOOTER "" SIZE 600 ; DATA FieldWBlock( "name", Select( "base" ) ) EDITABLE ADD COLUMN TO obrw HEADER "SOCR" FOOTER "" SIZE 350 ; DATA FieldWBlock( "SOCR", Select( "base" ) ) EDITABLE ADD COLUMN TO obrw HEADER "CODE" FOOTER "" SIZE 200 ; DATA FieldWBlock( "CODE", Select( "base" ) ) EDITABLE &cBrw:nHeightCell += 6 &cBrw:nHeightHead += 14 &cBrw:nHeightFoot := &cBrw:nHeightHead &cBrw:nWheelLines := 1 &cBrw:lDrawFooters := .T. &cBrw:lNoHScroll := .T. // LoadFields( cBrw, cParent ) END TBROWSE // !!! RETURN Static Function MyFind( oBrw ) Local cVal := win_1.MyFind.Value If ! empty(cVal) (oBrw:cAlias)->( dbSeek(upper(trim(cVal))) ) oBrw:GotoRec((oBrw:cAlias)->( RecNo()) ) EndIf Return nil *----------------------------------- PROCEDURE AddRecord( oBrw ) *----------------------------------- Local nRec (obrw:cAlias)->( DbAppend() ) nRec := (obrw:cAlias)->( RecNo() ) (obrw:cAlias)->( FieldPut( 1, Procname()+": "+strzero(nRec,7 )+str(procline(), 7) ) ) (obrw:cAlias)->( FieldPut( 3, Str(nRec,5) ) ) obrw:GoToRec( nRec ) obrw:SetFocus() RETURN STATIC FUNCTION MyKeyAction( nKey, nFlag, oBrw ) Local oCell, hBrw, nRow, uRet If nKey > 32 .and. nKey < 254 If (oBrw:cAlias)->( Indexord() ) == 0 Return endif oCell := oBrw:GetCellInfo(1, 1) hBrw := oBrw:hWnd nRow := GetWindowHeight(hBrw) + win_1.oBrw.Row - oBrw:nHeightFoot win_1.MyFind.Row := nRow win_1.MyFind.Col := oCell:nCol win_1.MyFind.Width := oCell:nWidth win_1.MyFind.Height := oBrw:nHeightFoot win_1.MyFind.Show() win_1.MyFind.SetFocus() win_1.MyFind.Value := space(10) _PushKey(nKey) uRet := .F. // обработка завершена (nil - продолжит tsb) EndIf Return uRet
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 911
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.16 20:42. Заголовок: PS подправить OpenBr..
PS подправить OpenBrows( "oBrw", 'win_1', 30, 2, win_1.Width-20, win_1.Height-95, Alias() )
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 531
Зарегистрирован: 13.10.05
|
|
Отправлено: 25.03.16 10:15. Заголовок: оК Спасибо, но вопро..
оК Спасибо, но вопросы остались. Как обратится к элементам, объектам формы из функций ? &(cForm) вместо win_1 не работает ?
| |
|
|
Andrey
|
| постоянный участник
|
Пост N: 4806
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.03.16 10:48. Заголовок: SetProperty( This..
SetProperty( ThisWindow.Name, "объект", "Enabled", .F. ) или SetProperty( cForm, "MyFind", "Value", "проба" ) // записать в объект cVal := GetProperty( cForm, "MyFind", "Value" ) // считать из объекта
| |
|
SergKis
|
| постоянный участник
|
Пост N: 912
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.03.16 10:59. Заголовок: Vlad04 тот же приме..
Vlad04 тот же пример без Public переменной click here
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 532
Зарегистрирован: 13.10.05
|
|
Отправлено: 26.03.16 09:36. Заголовок: SergKis Ок. Все ч..
SergKis Ок. Все четко работает, но что ж так сложно. Все сложности должны быть в библиотеке (может у вас так и сделано). А если на форме несколько Бровзов и другие компоненты ?
| |
|
SergKis
|
| постоянный участник
|
Пост N: 914
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.03.16 11:50. Заголовок: Vlad04 В чем сложно..
Vlad04 В чем сложность ? По моему очень похоже, как было в clipper tbrowse (координаты, алиас и UserFunc). Ф-ии TBrw_... надергал из своего класса TBrw (служит надстройкой над tsb) и лежит вместе с TBrowse в либе. Убрав этот код, что останется от примера ?
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 533
Зарегистрирован: 13.10.05
|
|
Отправлено: 26.03.16 15:58. Заголовок: По моему очень похо..
цитата: | По моему очень похоже ,, как было в clipper tbrowse |
| Так понятно цитата: | Ф-ии TBrw_... надергал из своего класса TBrw |
| Буду разбираться..
| |
|
Andrey
|
| постоянный участник
|
Пост N: 4808
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.03.16 23:23. Заголовок: Можно ли определить ..
Можно ли определить нажатие мышки в подвале таблицы ? Т.е. на какой колонке подвала была нажата мышка, ну и вызвать функцию какую либо...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 917
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.03.16 23:52. Заголовок: Andrey пишет:Можно л..
Andrey пишет: цитата: | Можно ли определить нажатие мышки в подвале таблицы ? |
| см. TSCOLUMN.PRG а то будет снова твоя цитата цитата: | Спасибо ! Не сообразил сразу там посмотреть ! |
|
| |
|
Andrey
|
| постоянный участник
|
Пост N: 4809
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.16 12:56. Заголовок: Можно ли определить ..
цитата: | Можно ли определить нажатие мышки в подвале таблицы ? |
| Можно сделать так: For nI := 1 To oBrw1:nColCount() oBrw1:aColumns[ nI ]:bFLClicked := &("{|| MyFunctionSelect("+HB_NtoS(nI)+") }") Next
| |
|
SergKis
|
| постоянный участник
|
Пост N: 925
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.03.16 13:34. Заголовок: Andrey Если поищешь..
Andrey Если поищешь в h_tbrowse.prg bFLClicked (всего одно место), то увидишь If ::aColumns[ nAtCol ]:bFLClicked != Nil Eval( ::aColumns[ nAtCol ]:bFLClicked, uPar1, uPar2, ::nAt, Self ) ... выше увидишь uPar1 := nRowPix, ; uPar2 := nColPix, ; и твой блок кода будет таким {|nRowPix,nColPix,nAt,oBrw| MyFunctionSelect(nRowPix,nColPix,nAt,oBrw) } и номер колонки в ф-ии будет oBrw:nCell, а oBrw:nRowPos тек. строка и т.д.
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|