Автор | Сообщение |
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:....
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
Haz
|
| |
Пост N: 342
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 15:20. Заголовок: Andrey пишет: Или э..
Andrey пишет: похоже что невозможно , сам остановился на варианте с PrevEdit
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3712
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.11.14 13:28. Заголовок: Хочу сделать обработ..
Хочу сделать обработку полей в своей ОТДЕЛЬНОЙ функции. //* | наименование | алиас | поле | формат поля | AADD( aPole, { "Дата" , "" , "DATE" , "99.99.9999" , .... AADD( aPole, { "Время" , "" , "TIME" , "99:99:99" , ... AADD( aPole, { "Код" , "" , "NEVENT" , "@Z 999" , ... ..... aPole := ListFieldsTbrws() // считать структуру таблицы FOR nI := 1 TO LEN(aPole) ADD COLUMN TO TBROWSE oBrw // добавить новую колонку в TBROWSE .... aDimPole := aPole[nI] oBrw:aColumns[nI]:lEdit := .T. oBrw:aColumns[nI]:bPrevEdit := {|| MyEditPole( aDimPole ) } .... NEXT ... При вызове MyEditPole( aDimPole ) всегда показывается последний массив aPole[ПОСЛЕДНИЙ!!!]. FUNCTION MyEditPole( aPole ) LOCAL lRet := .F. MsgDebug("Здесь хочу сделать обработку ВСЕХ полей БД !",aPole) RETURN lRet Почему ? Как сделать правильно ? Пример тут - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 685
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.11.14 13:42. Заголовок: Andrey пишет: Как с..
Andrey пишет: Ответ отправил по почте
|
|
|
Haz
|
| |
Пост N: 349
Зарегистрирован: 20.02.11
|
|
Отправлено: 13.11.14 14:52. Заголовок: Andrey пишет: Как с..
Andrey пишет: gfilatov2002 пишет: думаю в почте примерно так oBrw:aColumns[nI]:bPrevEdit := &("{|| MyEditPole( " + NTOC(nI) + ") }" ) FUNCTION MyEditPole( nI ) ... aDimPole := aPole[nI] ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 686
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.11.14 15:20. Заголовок: Haz пишет: oBrw:aCo..
Haz пишет: цитата: | oBrw:aColumns[nI]:bPrevEdit := &("{|| MyEditPole( " + NTOC(nI) + ") }" ) |
| Да, так сработает... Но я предложил не использовать макроподстановку, и выкрутился с помощью массива oBrw:aColumns[oBrw:nCell]
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3713
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.11.14 19:18. Заголовок: Спасибо за помощь ! ..
Спасибо за помощь ! Что выбрать даже и не знаю... Глаза разбегаются... Я сделал еще вариант: oBrw:aColumns[nI]:Cargo := aPole[nI] oBrw:aColumns[nI]:bPrevEdit := {|| MyEditPole( oBrw:aColumns[oBrw:nCell]:Cargo ) }
|
|
|
Haz
|
| |
Пост N: 350
Зарегистрирован: 20.02.11
|
|
Отправлено: 13.11.14 23:44. Заголовок: Andrey пишет: oBrw:..
Andrey пишет: Андрей, выведи чему равно значение ::cData для каждой колонки и у тебя появится четвертый вариант
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3719
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.14 01:23. Заголовок: Не совсем понял для ..
Не совсем понял для чего выводить - значение ::cData для каждой колонки.... Мне вообще то нужно передать всю строку (текущую) массива aPole[nI], для дальнейшего анализа. Более подробно функция MyEditPole() в примере - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample А как получить допустим по нажатии Enter или мышки в функцию MyEditPole() координаты МАРКЕРА/КУРСОРА ? И длину маркера тоже как получить ?
|
|
|
Haz
|
| |
Пост N: 351
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.11.14 10:39. Заголовок: Andrey пишет: Не со..
Andrey пишет: цитата: | Не совсем понял для чего выводить - значение ::cData для каждой колонки |
| чтобы убедиться что cData после значка алиаса содержит имя поля базы Alias->FieldName по которому эта колонка построена . Т.к. колонки можно менять местами , удалять и пр. то номер колонки бровса очень часто НЕ совпадает с номером поля базы . И попытки вытянуть поле по номеру приведут к ошибке. Правильным будет решение выделять имя поля например как сFieldName := Substr( oBrw:aColumns[x]:cData, ">") или найти номер колонки , соответствующий полю nCol := Ascan( oBrw:aColumns, {|e| Substr(e:cData, ">") == cField ) }) Andrey пишет: при нажатии Enter попадаем в oEdit объект и читаем его переменные oEdit:oWnd:nTop. oEdit:oWnd:nLeft и тд
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3720
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.14 13:26. Заголовок: Спасибо Haz за разъя..
Спасибо Haz за разъяснения ! Haz пишет: цитата: | и читаем его переменные oEdit:oWnd:nTop. oEdit:oWnd:nLeft и тд |
| НЕ читаются. Пишет Метод не экспортирован: OWND или другую хрень. Покажи пожалуйста как правильно прочитать для моего примера ?
|
|
|
Haz
|
| |
Пост N: 353
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.11.14 14:38. Заголовок: Andrey пишет: НЕ чи..
Andrey пишет: Похоже добраться до объекта oEdit можно только через :SetBtnGet(), а точнее через его bAction. Андрей , зачем тебе это , поделись что удумал. Может есть какой выход
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3730
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.11.14 15:58. Заголовок: Haz пишет: Андрей ,..
Haz пишет: цитата: | Андрей , зачем тебе это , поделись что удумал. Может есть какой выход |
| Хочу для юзеров сделать показ подсказки типа такой: А то при редактировании юзера не будут закрывать поле и данные не сохранятся. А еще есть всплывающие подсказки, их тоже можно прикрутить. Только координаты маркера нужны ! Как их получить ?
|
|
|
Haz
|
| |
Пост N: 354
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.11.14 16:15. Заголовок: Andrey пишет: А то ..
Andrey пишет: цитата: | А то при редактировании юзера не будут закрывать поле и данные не сохранятся. |
| стандартными средствами похоже не сделать , надо менять исходники или TGetBox или TSBrowse. я для таких забывчивых пользователей так и делаю в каждом релизе HMG чтоб было как в Excel сдвинул фокус и данные уже сохранились
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3732
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.11.14 16:27. Заголовок: Haz пишет: стандарт..
Haz пишет: цитата: | стандартными средствами похоже не сделать , надо менять исходники или TGetBox или TSBrowse. я для таких забывчивых пользователей так и делаю в каждом релизе HMG чтоб было как в Excel сдвинул фокус и данные уже сохранились |
| А почему дополнительный флаг не сделать сразу в исходники ? Григорий бы внес и все пользовались бы ? Не только у меня проблемы такие, у всех....
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 431
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.11.14 22:11. Заголовок: Andrey пишет:А почем..
Andrey пишет: цитата: | А почему дополнительный флаг не сделать сразу в исходники ? Григорий бы внес и все пользовались бы ? |
| Сам внеси или на весь объект TsBrowse или в каждую колонку (объект) : IF ! __objHasData(oBrw, 'nModify_Rec') // добавим переменну в oBrw __objAddData (oBrw, 'nModify_Rec' ) ENDIF oBrw:nModify_Rec := 0 при модификации +1 и обрабатывай когда надо и не забываем в 0 ставить или на колонки FOR i := 1 TO len(oBrw:aColumns) oCol := oBrw:aColumns[ i ] IF ! __objHasData(oCol, 'nModify_Col') // добавим переменну в oCol __objAddData (oCol, 'nModify_Col' ) ENDIF oCol:nModify_Col := 0 NEXT во When на колонку oCol:nModify_Col := 0 в OnChange +1
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 432
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.11.14 22:13. Заголовок: PS это делаешь в сво..
PS это делаешь в своем коде, после создания oBrw или всех колонок - смотря что выбрал для реализации
|
|
|
Haz
|
| |
Пост N: 355
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.11.14 14:16. Заголовок: SergKis пишет: это ..
SergKis пишет: цитата: | это делаешь в своем коде, после создания oBrw |
| Думаю, Андрей имел в виду "флаг" при переключении которого запись в редактируемую ячейку происходила бы при потере фокуса get объектом даже если LastKey() <> VK_ENTER (просто ткнули мышом в другую ячейку) . В TSB сейчас редактирование прерывается и значение не сохраняется ,Get закрыт и значение его буфера потеряно.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 433
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.11.14 18:46. Заголовок: Haz пишет:запись в р..
Haz пишет: цитата: | запись в редактируемую ячейку происходила бы при потере фокуса get объектом даже если |
| Я тоже это имел ввиду, т.е. если не хватает флага, то можно добавить на oBrw или на каждую колонку oTsColumn. Можно добавить новый или изменить сущест. метод объекта (см. Harbour для начинающих), без обращения к Григорию Я с TsBrowse не работаю, но GetBox использую, а в него из TsColumn передается блок LostFocus, а в нем (блоке) спокойно, получив oGet проделать операции по сохранению ...
|
|
|
Haz
|
| |
Пост N: 356
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.11.14 19:32. Заголовок: SergKis пишет: полу..
SergKis пишет: цитата: | получив oGet проделать операции по сохранению ... |
| спасибо за идею, я просто менял исходники постояннно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3739
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.11.14 22:28. Заголовок: Возвращаюсь дальше к..
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|