On-line: NickSam, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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:....



Спасибо: 0 
Профиль
Ответов - 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

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 685
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.11.14 13:42. Заголовок: Andrey пишет: Как с..


Andrey пишет:

 цитата:
Как сделать правильно ?


Ответ отправил по почте

Спасибо: 0 
Профиль
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]
...


Спасибо: 0 
Профиль
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]

Спасибо: 0 
Профиль
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 ) }







Спасибо: 0 
Профиль
Haz
администратор




Пост N: 350
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.11.14 23:44. Заголовок: Andrey пишет: oBrw:..


Andrey пишет:

 цитата:
oBrw:aColumns[nI]:Cargo



Андрей, выведи чему равно значение ::cData для каждой колонки и у тебя появится четвертый вариант

Спасибо: 0 
Профиль
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()
координаты МАРКЕРА/КУРСОРА ? И длину маркера тоже как получить ?



Спасибо: 0 
Профиль
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 и тд

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 3720
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.14 13:26. Заголовок: Спасибо Haz за разъя..


Спасибо Haz за разъяснения !

Haz пишет:

 цитата:
и читаем его переменные oEdit:oWnd:nTop. oEdit:oWnd:nLeft и тд


НЕ читаются. Пишет Метод не экспортирован: OWND или другую хрень.
Покажи пожалуйста как правильно прочитать для моего примера ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 353
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.11.14 14:38. Заголовок: Andrey пишет: НЕ чи..


Andrey пишет:

 цитата:
НЕ читаются.



Похоже добраться до объекта oEdit можно только через :SetBtnGet(), а точнее через его bAction.
Андрей , зачем тебе это , поделись что удумал. Может есть какой выход


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 3730
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.14 15:58. Заголовок: Haz пишет: Андрей ,..


Haz пишет:

 цитата:
Андрей , зачем тебе это , поделись что удумал. Может есть какой выход



Хочу для юзеров сделать показ подсказки типа такой:


А то при редактировании юзера не будут закрывать поле и данные не сохранятся.

А еще есть всплывающие подсказки, их тоже можно прикрутить.

Только координаты маркера нужны ! Как их получить ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 354
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.11.14 16:15. Заголовок: Andrey пишет: А то ..


Andrey пишет:

 цитата:
А то при редактировании юзера не будут закрывать поле и данные не сохранятся.



стандартными средствами похоже не сделать , надо менять исходники или TGetBox или TSBrowse.

я для таких забывчивых пользователей так и делаю в каждом релизе HMG чтоб было как в Excel сдвинул фокус и данные уже сохранились

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 3732
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.14 16:27. Заголовок: Haz пишет: стандарт..


Haz пишет:

 цитата:
стандартными средствами похоже не сделать , надо менять исходники или TGetBox или TSBrowse.

я для таких забывчивых пользователей так и делаю в каждом релизе HMG чтоб было как в Excel сдвинул фокус и данные уже сохранились


А почему дополнительный флаг не сделать сразу в исходники ?
Григорий бы внес и все пользовались бы ?
Не только у меня проблемы такие, у всех....

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 432
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.11.14 22:13. Заголовок: PS это делаешь в сво..


PS
это делаешь в своем коде, после создания oBrw или всех колонок - смотря что выбрал для реализации

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 355
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.11.14 14:16. Заголовок: SergKis пишет: это ..


SergKis пишет:

 цитата:
это делаешь в своем коде, после создания oBrw



Думаю, Андрей имел в виду "флаг" при переключении которого запись в редактируемую ячейку происходила бы при потере фокуса get объектом даже если LastKey() <> VK_ENTER (просто ткнули мышом в другую ячейку) . В TSB сейчас редактирование прерывается и значение не сохраняется ,Get закрыт и значение его буфера потеряно.




Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 433
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.11.14 18:46. Заголовок: Haz пишет:запись в р..


Haz пишет:
 цитата:
запись в редактируемую ячейку происходила бы при потере фокуса get объектом даже если


Я тоже это имел ввиду, т.е. если не хватает флага, то можно добавить на oBrw или на каждую колонку oTsColumn.
Можно добавить новый или изменить сущест. метод объекта (см. Harbour для начинающих), без обращения к Григорию
Я с TsBrowse не работаю, но GetBox использую, а в него из TsColumn передается блок LostFocus, а в нем (блоке) спокойно,
получив oGet проделать операции по сохранению ...

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 356
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.11.14 19:32. Заголовок: SergKis пишет: полу..


SergKis пишет:

 цитата:
получив oGet проделать операции по сохранению ...


спасибо за идею, я просто менял исходники постояннно

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 3739
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.14 22:28. Заголовок: Возвращаюсь дальше к..


Возвращаюсь дальше к моему примеру. Вот возник следующий вопрос:
Как мне сделать редактирование ТОЛЬКО первой колонки ("Код") ТОЛЬКО по клавише F10 ?
Вот пример тут - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 212
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет