Автор | Сообщение |
|
| постоянный участник
|
Пост 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:....
| |
|
Ответов - 181
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 7166
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.12.21 22:37. Заголовок: Опять старая проблем..
Опять старая проблема вылезла, несколько лет назад такое было и не решили как исправить. Глюк показа в левом нижнем углу колонки SELECTOR - при условии что цвет фона ПОДВАЛА последней колонки отличается от основного цвета. Вот так на картинке: Т.е. цвет фона последней колонки ОРАНЖЕВЫЙ и он перескакивает на SELECTOR - кружок (2). Вот код как это происходит: // цвета изменить nClrNoDbf := GetSysColor( COLOR_BTNFACE ) oCol := oBrw:GetColumn("ORDKEYNO") oCol:nClrBack := nClrNoDbf // цвет фона шапки таблицы + подвала списка колонок - (1) FOR nI := oBrw:nColumn("ORDKEYNO") TO Len( oBrw:aColumns ) oCol := oBrw:aColumns[ nI ] cCol := oCol:cName cTyp := oCol:cFieldTyp IF cTyp $ "+=^" // Type: [+] [=] [^] oCol:nClrHeadBack := CLR_ORANGE oCol:nClrFootBack := CLR_ORANGE ENDIF NEXT // Левый верхний уголок - (3) исправление фона oBrw:nClrSelectorHdBack := nClrNoDbf Как исправить уголок (2) ? Может можно сделать в коде ТСБ примерно такую переменную ? // Левый нижний уголок oBrw:nClrSelectorHdFoot := nClrNoDbf
| |
|
|
| постоянный участник
|
Пост N: 3993
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.12.21 22:57. Заголовок: Andrey пишет Как исп..
Andrey пишет цитата: | Как исправить уголок (2) ? Может можно сделать в коде ТСБ примерно такую переменную ? |
| Можно использовать ту же переменную, что и для Header, т.е. сделать такую правку METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse ... IF ::lFooting .AND. ::lDrawFooters ... If !( nJ == 1 .AND. ::lSelector ) // JP nClrBack := iif( oColumn:nClrFootBack != NIL, oColumn:nClrFootBack, nClrFootBack ) ELSEIF ::nClrSelectorHdBack != NIL nClrBack := ::nClrSelectorHdBack ELSE nClrBack := ATail( ::aColumns ):nClrFootBack ENDIF nClrBack := ::GetValProp( nClrBack, nClrBack, nJ )
| |
|
|
| |
Пост N: 217
Зарегистрирован: 17.10.05
|
|
Отправлено: 11.12.21 13:18. Заголовок: SergKis пишет: Жела..
SergKis пишет: цитата: | Желательно, перейти на MODA |
| Сергей, спасибо за такой детальный совет, буду копать у себя. PS: Помогло DO EVENTS. Нет, не помогло. SergKis пишет: цитата: | А как вы получаете :nCell := 0 ? |
| Нашел ошибку! Да, у меня перед Activate формы с броузом, стоял блок восстанова параметров из INI-файла - там был ноль и тупо присвоило ::nCell := 0 У себя я, конечно, исправил, но, может для присвоения ::nCel сделать метод класса с проверкой?
| |
|
|
| постоянный участник
|
Пост N: 7171
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.21 22:41. Заголовок: Пытаюсь положить окн..
Пытаюсь положить окно в размер ТСБ, не получается... Окно больше и со сдвигом идёт ... Делаю так: cForm := oBrw:cParentWnd nRow := GetProperty(cForm, "Row") + GetTitleHeight() + oBrw:nTop nCol := GetProperty(cForm, "Col") + GetBorderWidth() + oBrw:nLeft nH := oBrw:nBottom - oBrw:nTop nW := oBrw:nRight - oBrw:nLeft DEFINE WINDOW Forma_Zero AT nRow, nCol CLIENTAREA nW, nH MODAL NOCAPTION ; BACKCOLOR aBColor ON LOSTFOCUS oWnd:Release() oWnd := ThisWindow.Object Подскажите пожалуйста, где промахнулся...
| |
|
|
| |
Пост N: 1820
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.12.21 09:55. Заголовок: Andrey пишет: где п..
Andrey пишет: В алгоритме, берешь oBrw:hWnd и по его координатам (getwindowrect() ) рисуешь свое
| |
|
|
| постоянный участник
|
Пост N: 7174
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.12.21 16:55. Заголовок: Haz пишет: берешь o..
Haz пишет: цитата: | берешь oBrw:hWnd и по его координатам (getwindowrect() ) рисуешь свое |
| Спасибо БОЛЬШОЕ ! Вот пример. Когда окно по ценру, то окно wZero по таблице закрывается пиксель в пиксель !!! А если окно сдвинуть, то наступает фигня... Может команда нужна типа SET DIALOGBOX CENTER OF PARENT ? Как исправить ? Вот исходник - Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2021 Sergej Kiselev <bilance@bilance.lv> */ #include "hmg.ch" #include "tsbrowse.ch" REQUEST DBFCDX, DBFFPT Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL cForm := "wMain" LOCAL oBrw1, oBrw2, nY, nX, nH, nW, nG, oTsb1, oTsb2 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 "HMG_ICO" SET FONT TO cFont, nSize USE ( "CUSTOMER" ) ALIAS CUST1 NEW SHARED USE ( "CUSTOMER" ) ALIAS CUST2 NEW SHARED DEFINE WINDOW &cForm TITLE "Demo 2 TBrowse" MAIN TOPMOST ; ON INIT ( This.Topmost := .F. ) ; ON RELEASE ( dbCloseAll() ) This.Maximize nY := nX := nG := 20 nW := This.ClientWidth - nG * 2 nH := Int( This.ClientHeight / 2 ) - nG - nG/2 oTsb1 := oHmgData() oTsb1:lDrawSpecHd := .T. oTsb1:uSelector := .T. @ 0, 5 LABEL Label_1 VALUE "F1-window to table" FONTCOLOR RED SIZE 8 AUTOSIZE TRANSPARENT oBrw1 := _TBrowse( oTsb1, "CUST1", "Brw_1", nY, nX, nW, nH ) ; DO EVENTS nY += nH + 1 + nG nH -= 1 oTsb2 := oHmgData() oTsb2:lDrawSpecHd := .T. oTsb2:uSelector := .T. @ nH + 22, 5 LABEL Label_2 VALUE "F2-window to table" FONTCOLOR RED SIZE 8 AUTOSIZE TRANSPARENT oBrw2 := _TBrowse( oTsb2, "CUST2", "Brw_2", nY, nX, nW, nH ) ; DO EVENTS oBrw1:SetFocus() ; DO EVENTS ON KEY F1 ACTION NIL ON KEY TAB ACTION { |cf| cf := ThisWindow.FocusedControl, ; iif( cf == "Brw_1", This.Brw_2.SetFocus, This.Brw_1.SetFocus ) } ON KEY ESCAPE ACTION ( iif( oBrw1:IsEdit, oBrw1:SetFocus(), ; iif( oBrw2:IsEdit, oBrw2:SetFocus(), ; ThisWindow.Release ) ) ) (This.Object):Event(1, {|ow| myWin(ow, "Brw_1", .F.) }) (This.Object):Event(2, {|ow| myWin(ow, "Brw_2", .T.) }) ON KEY F1 ACTION _wPost(1) ON KEY F2 ACTION _wPost(2) END WINDOW //CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL FUNCTION myWin(oWnd, cBrw, lHead) Local ob, hb, nY, nX, nW, nH, nRow, nCol SET WINDOW THIS TO oWnd:Name ob := This.&(cBrw).Object hb := ob:hWnd nY := GetWindowRow(hb) nX := GetWindowCol(hb) nW := GetWindowWidth(hb) nH := GetWindowHeight(hb) nRow := iif( oWnd:Row >= 0, oWnd:Row, 0 ) + nY nCol := iif( oWnd:Col >= 0, oWnd:Col, 0 ) + nX IF !Empty(lHead) nRow += ( ob:nHeightHead + 1 + ob:nHeightSpecHd ) // + 1 это линия сверху nH -= ( ob:nHeightHead + 1 + ob:nHeightSpecHd + GetHScrollBarHeight() + 1 ) // и снизу nCol += ( ob:GetColumn("SELECTOR"):nWidth + 1 ) // + 1 это линия слева nW -= ( ob:GetColumn("SELECTOR"):nWidth + 1 + GetVScrollBarWidth() + 1 ) // и справа ENDIF SET DIALOGBOX CENTER OF PARENT DEFINE WINDOW wZero AT nRow, nCol WIDTH nW HEIGHT nH MODAL NOCAPTION NOSIZE BACKCOLOR YELLOW This.Cargo := oHmgData() This.Cargo:oParent := oWnd This.Cargo:cBrw := cBrw This.Cargo:oBrw := ob @ 20, 20 LABEL Label_0 VALUE "ESC - exit" FONTCOLOR RED SIZE 28 AUTOSIZE TRANSPARENT ON KEY F1 ACTION NIL ON KEY ESCAPE ACTION ThisWindow.Release END WINDOW ACTIVATE WINDOW wZero SET WINDOW THIS TO ob:SetFocus() Return Nil
|
| |
|
|
| постоянный участник
|
Пост N: 4008
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.12.21 21:15. Заголовок: Andrey пишет Как исп..
Andrey пишет Вспомнил, что с Игорем сделали недавно метод :GetCellSize(), применил Скрытый текст
FUNCTION myWin(oWnd, cBrw, lHead) Local ob, nY, nX, nW, nH, nRow, nCol, oc1, oc2 SET WINDOW THIS TO oWnd:Name ob := This.&(cBrw).Object oc1 := ob:GetCellSize(1, 1) oc2 := ob:GetCellSize(ob:nRowCount(), 1) nRow := oc1:nRow nRow -= ( ob:nHeightSpecHd + ob:nHeightHead ) nCol := oc1:nCol + 1 nW := GetWindowWidth (ob:hWnd) - 2 nH := GetWindowHeight(ob:hWnd) - 2 DEFINE WINDOW wZero AT nRow, nCol WIDTH nW HEIGHT nH MODAL NOCAPTION NOSIZE BACKCOLOR YELLOW This.Cargo := oHmgData() This.Cargo:oParent := oWnd This.Cargo:cBrw := cBrw This.Cargo:oBrw := ob ON KEY F1 ACTION NIL ON KEY ESCAPE ACTION ThisWindow.Release END WINDOW ACTIVATE WINDOW wZero SET WINDOW THIS TO ob:SetFocus() Return Nil
|
| |
|
|
| |
Пост N: 1825
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.12.21 21:23. Заголовок: SergKis пишет: прим..
SergKis пишет: необычное решение
| |
|
|
| постоянный участник
|
Пост N: 7176
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.12.21 13:27. Заголовок: Супер ! :sm208:..
Супер !
| |
|
|
| постоянный участник
|
Пост N: 4009
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.12.21 14:41. Заголовок: Andrey Обработаем l..
Andrey Обработаем lHead и передадим параметры Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2021 Sergej Kiselev <bilance@bilance.lv> */ #include "hmg.ch" #include "tsbrowse.ch" REQUEST DBFCDX, DBFFPT Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL cForm := "wMain" LOCAL oBrw1, oBrw2, nY, nX, nH, nW, nG, oTsb1, oTsb2 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 "HMG_ICO" SET FONT TO cFont, nSize USE ( "CUSTOMER" ) ALIAS CUST1 NEW SHARED USE ( "CUSTOMER" ) ALIAS CUST2 NEW SHARED DEFINE WINDOW &cForm TITLE "Demo 2 TBrowse" MAIN TOPMOST ; ON INIT ( This.Topmost := .F. ) ; ON RELEASE ( dbCloseAll() ) This.Maximize nY := nX := nG := 20 nW := This.ClientWidth - nG * 2 nH := Int( This.ClientHeight / 2 ) - nG - nG/2 oTsb1 := oHmgData() oTsb1:lDrawSpecHd := .T. oTsb1:uSelector := .T. oTsb1:nBrw := 1 @ 0, 5 LABEL Label_1 VALUE "F1-window to table" FONTCOLOR RED SIZE 8 AUTOSIZE TRANSPARENT oBrw1 := _TBrowse( oTsb1, "CUST1", "Brw_1", nY, nX, nW, nH ) ; DO EVENTS nY += nH + 1 + nG nH -= 1 oTsb2 := oHmgData() oTsb2:lDrawSpecHd := .T. oTsb2:uSelector := .T. oTsb2:nBrw := 2 @ nH + 22, 5 LABEL Label_2 VALUE "F2-window to table" FONTCOLOR RED SIZE 8 AUTOSIZE TRANSPARENT oBrw2 := _TBrowse( oTsb2, "CUST2", "Brw_2", nY, nX, nW, nH ) ; DO EVENTS oBrw1:SetFocus() ; DO EVENTS ON KEY F1 ACTION NIL ON KEY TAB ACTION { |cf| cf := ThisWindow.FocusedControl, ; iif( cf == "Brw_1", This.Brw_2.SetFocus, This.Brw_1.SetFocus ) } ON KEY ESCAPE ACTION ( iif( oBrw1:IsEdit, oBrw1:SetFocus(), ; iif( oBrw2:IsEdit, oBrw2:SetFocus(), ; ThisWindow.Release ) ) ) (This.Object):Event(1, {|ow| myWin(ow, "Brw_1", .F.) }) (This.Object):Event(2, {|ow| myWin(ow, "Brw_2", .T.) }) ON KEY F1 ACTION _wPost(1) ON KEY F2 ACTION _wPost(2) END WINDOW //CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL FUNCTION myWin( oWnd, cBrw, lHead ) Local oBrw, nBrw, nY, nX, nW, nH, nRow, nCol, oTsb, oc1, oc2, nw1 SET WINDOW THIS TO oWnd:Name oBrw := This.&(cBrw).Object oTsb := oBrw:Cargo:oParam // parameters oTsb1 or oTsb2 nBrw := oTsb:nBrw oc1 := oBrw:GetCellSize(1, 1) oc2 := oBrw:GetCellSize( oBrw:nRowCount(), 1 ) nw1 := oBrw:GetColumn( "SELECTOR" ):nWidth nRow := oc1:nRow nCol := oc1:nCol + 1 nW := GetWindowWidth ( oBrw:hWnd ) - 2 nH := GetWindowHeight( oBrw:hWnd ) - 2 IF Empty( lHead ) nRow -= ( oBrw:nHeightSpecHd + oBrw:nHeightHead ) nRow += 1 nCol += 1 nW -= 1 ELSE nCol += nw1 nRow += 1 nCol += 1 nW -= ( nw1 + GetVScrollBarWidth() + 1 ) nH -= ( oBrw:nHeightHead + oBrw:nHeightSpecHd + GetHScrollBarHeight() + 1 ) ENDIF DEFINE WINDOW wZero AT nRow, nCol WIDTH nW HEIGHT nH MODAL NOCAPTION NOSIZE BACKCOLOR YELLOW This.Cargo := oHmgData() This.Cargo:oParent := oWnd This.Cargo:cBrw := cBrw This.Cargo:oBrw := oBrw This.Cargo:nBrw := nBrw This.Cargo:oTsb := oTsb ON KEY F1 ACTION NIL ON KEY ESCAPE ACTION ThisWindow.Release END WINDOW ACTIVATE WINDOW wZero SET WINDOW THIS TO oBrw:SetFocus() RETURN Nil
|
| |
|
|
| постоянный участник
|
Пост N: 7196
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.12.21 07:15. Заголовок: Непонятка возникла п..
Непонятка возникла по ТСБ. Ставлю отключение вывода суперхидера/шапки/нумератора/подвала oBrw:lDrawHeaders := .F. Всё скрывается, отлично но: (1) теряется формат полей "T=@" (2) размеры ТСБ уменьшаются снизу Вот картинка: И ещё один вопрос. Как мне можно оставить Нумератор и Подвал в ТСБ ? Или только отдельно Подвал ? Или только отдельно Нумератор ?
| |
|
|
|
| |
Пост N: 220
Зарегистрирован: 17.10.05
|
|
Отправлено: 14.01.22 12:34. Заголовок: Копирование TSBrowse
Никто не копировал объект OBRW TSBrowse? Я сформировал TSBrowse на одной форме со всеми картинками, блоками кода и т.д. и хотел бы скопировать(клонировать) этот объект на другую форму, это возможно?
| |
|
|
| постоянный участник
|
Пост N: 4033
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.01.22 14:40. Заголовок: krutoff пишет Я сфор..
krutoff пишет цитата: | Я сформировал TSBrowse на одной форме со всеми картинками, блоками кода и т.д. и хотел бы скопировать(клонировать) этот объект на другую форму, это возможно? |
| Чисто технически копировать можно, но колонки это объекты и в скопированном варианте будут ссылки на одни и те же колонки, при lEdit := .T. каждый тсб будет создавать каждый свои :oEdit, хорошо это или плохо, хз. Делал копирование колонок aColOld := {} FOR EACH oCol IN oBrw:aColumns AADD( aColOld, oCol:Clone() ) NEXT менял колонки в oBrw:aColumns (добавлял переменные в oCol) и потом восстанавливал обратно из aColOld. Можно создать новый DEFINE TBROWSE ... и методом oBrw:AddColumn( oCol ) перегнать туда массив aColOld, но надо помнить, что в колонках в :bData, через FieldWBlock("FieldName", select(oBrw:cAlias)), заложена область dbf файла. Можно создать базу колонок и потом исп. ее для создания разных тсб (алиас для тсб задается). Примеры: app_oopcolumns и app_ooptsbbox Если исп. _TBrowse(...) с oTsb := oHmgData() ... параметрами, то для др. разных тсб можно использовать параметры настройки одного объекта oTsb, возможно, это неплохой вариант.
| |
|
|
| постоянный участник
|
Пост N: 4086
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.03.22 13:06. Заголовок: Пример из серии Craz..
| |
|
|
| |
Пост N: 160
Зарегистрирован: 12.07.06
|
|
Отправлено: 26.04.22 15:19. Заголовок: Редактирование даты
Имеется код: DEFINE TBROWSE Br_sch AT h_tlbar,0 ALIAS 'sch' WIDTH w_br HEIGHT h_br BOLD CELLED ... ADD COLUMN TO Br_sch HEADER 'Ввод в'+CRLF+'работу' SIZE w_dtv ; DATA FieldWBlock('dtuse', Select('sch')) ; ALIGN DT_CENTER, DT_CENTER ; PREEDIT {|uVar| oldVal := uVar, IF(Status = 1, .T., .F.)} ; POSTEDIT {|uVar| postMod(uVar,'введен'), Br_sch:DrawSelect()} ; EDITABLE ... Пользователи недовольны тем, как приходится набирать дату, процесс получается довольно протяженный пока выберешь год, потом месяц и наконец дату. В примере d:\MiniGUI\SAMPLES\Advanced\Tsb_Basic дата вводится простыми цифрами, но как это сделать в моём случае я так и не сообразил. Помогите люди добрые.
| |
|
|
| |
Пост N: 7649
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.04.22 17:05. Заголовок: у меня так примерно ..
у меня так примерно oBrw3:SetColSize("data_c", 85 ) oBrw3:GetColumn("data_c"):cHeading :="Дата"+CRLF+"создания" oBrw3:GetColumn("data_c"):cPicture :="@D" oBrw3:GetColumn( "data_c"):lEdit := kaka("master") obrw3:GetColumn("data_c"):bPrevEdit := { |a, b, lLock| SetGetAdjustBrw(b,{2,0,-2,-3}) , If( lLock := (b:cAlias)->(RLock()), (b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock } oBrw3:GetColumn("data_c"):nAlign:=DT_CENTER oBrw3:lPickerMode := .F.
| |
|
|
| |
Пост N: 161
Зарегистрирован: 12.07.06
|
|
Отправлено: 27.04.22 05:13. Заголовок: Dima пишет: oBrw3:l..
Dima пишет: Спасибо, помогла данная установка.
| |
|
|
| |
Пост N: 162
Зарегистрирован: 12.07.06
|
|
Отправлено: 08.06.22 18:08. Заголовок: Редактирование логического поля
Наткнулся на непонятную ситуацию DEFINE TBROWSE ... ... ADD COLUMN TO Br_sch HEADER '' SIZE w_lod ; DATA FieldWBlock('lm1', Select('sch')) ; CHECKBOX ; PREEDIT {|| preMod('lm1')} ; EDITABLE ... У меня редактирование логического поля происходит по уcловию из preMod. Всё работает, когда используется клавиатура, но когда используется мышь то двойной клик по полю хоть и вызывает выполнение функции preMod, её возврат не анализируется и поле lm1 всегда меняет своё значение на противоположное. Такое впечатление, что двойной клик мышью вызывает сначала безусловное редактирование логического поля, а потом обработку из PREEDIT.
| |
|
|
| постоянный участник
|
Пост N: 4134
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.06.22 20:47. Заголовок: alex_II пишет PREEDI..
alex_II пишет цитата: | PREEDIT {|| preMod('lm1')} |
| Что возвращает эта конструкция и какие значения имеют oCol:lCheckBoxNoReturn .OR. ::lCheckBoxAllReturn ? То о чем спрашиваете тут (метод :Edit(...)) Скрытый текст
... IF oCol:bPrevEdit != NIL IF ::lIsArr .AND. ( ::lAppendMode .OR. ::nAt > Len( ::aArray ) ) // append mode for arrays ELSEIF nKey != VK_RETURN // GF 15-10-2015 uVar := Eval( oCol:bPrevEdit, uValue, Self, nCell, oCol ) IF ValType( uVar ) == "A" uVar := uVar[ 1 ] uValue := uVar[ 2 ] ENDIF IF ValType( uVar ) == "L" .AND. ! uVar nKey := VK_RETURN ENDIF ENDIF ENDIF ::FastDrawClear( hb_ntos( ::nAtPos ) + "." + hb_ntos( oCol:nId ) ) cMsg := iif( ValType( cMsg ) == "B", Eval( cMsg, Self, nCell ), cMsg ) IF cType == "L" .AND. oCol:lCheckBox IF nKey != VK_RETURN .OR. ! oCol:lCheckBoxNoReturn .OR. ::lCheckBoxAllReturn IF Upper( Chr( nKey ) ) $ "YCST1" ::lChanged := ( uVar == .F. ) uVar := .T. ELSEIF Upper( Chr( nKey ) ) $ "FN0" ::lChanged := ( uVar == .T. ) uVar := .F. ELSEIF nKey == VK_SPACE .OR. nKey == VK_RETURN uVar := ! uValue ::lChanged := .T. ELSE RETURN 0 ENDIF ::lHasChanged := iif( ::lChanged, .T., ::lHasChanged ) ::oWnd:nLastKey := VK_RETURN ::PostEdit( uVar, nCell ) ::lPostEdit := .F. RETURN 0 ELSE ::lPostEdit := .T. ::lChanged := .F. ::oWnd:nLastKey := nKey ::PostEdit( uValue, nCell ) ::lPostEdit := .F. RETURN 0 ENDIF ENDIF
|
| |
|
|
| |
Пост N: 163
Зарегистрирован: 12.07.06
|
|
Отправлено: 09.06.22 05:30. Заголовок: PREEDIT возвращает ...
PREEDIT возвращает .F. oCol:lCheckBoxNoReturn = .T. ::lCheckBoxAllReturn = .T.
| |
|
Ответов - 181
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|