On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Dima
администратор




Пост N: 6596
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.09.17 17:07. Заголовок: Andrey Попробуй пои..


Andrey
Попробуй поиграть с nfreeze и lLockFreeze

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




Пост N: 5535
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.17 12:55. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй поиграть с nfreeze и lLockFreeze



У меня уже стоит :
     oBrw1:nFreeze     := 1     // Заморозить столбец 
oBrw1:lLockFreeze := .T. // Избегать прорисовки курсора на замороженных столбцах


А если убрать, то всё равно пустой столбец появляется, последним и вся таблица с пустым столбцом становиться.

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


Пост N: 1560
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 25.09.17 13:06. Заголовок: Andrey пишет: У мен..


Andrey пишет:

 цитата:
У меня уже стоит :
oBrw1:nFreeze := 1


Ну так все 8 или сколько там есть попробуйте заморозить.

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




Пост N: 5536
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.17 14:44. Заголовок: Петр пишет: Ну так ..


Петр пишет:

 цитата:
Ну так все 8 или сколько там есть попробуйте заморозить.



Сразу не понял что нужно заморозить ВСЕ столбцы.
Сделал ! Получилось !!! Таблица вправо перестала сдвигаться.
Спасибо БОЛЬШОЕ !

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




Пост N: 5537
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.17 15:27. Заголовок: Рано радовался. Табл..


Рано радовался. Таблица заморозилась и выбора в колонках теперь НЕТ !!!
Значит заморозку использовать НЕЛЬЗЯ для этих целей...

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


Пост N: 1561
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 25.09.17 15:54. Заголовок: Andrey пишет: выбо..


Andrey пишет:

 цитата:
выбора в колонках теперь НЕТ


И при oBrw1:lLockFreeze := .F. ?

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




Пост N: 6597
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.09.17 15:54. Заголовок: oBrw1:lLockFreeze :=..


oBrw1:lLockFreeze := .F.

PS
Хэх одновременно написали

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




Пост N: 5538
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.17 16:27. Заголовок: Dima пишет: oBrw1:l..


Dima пишет:

 цитата:
oBrw1:lLockFreeze := .F.


Enter заработал, двойной клик мышки нет !
Ерунда опять получается...
Писать отдельную функцию на срабатывание мышки - не есть хорошо, когда уже стандартная подключена по умолчанию.
Дело в том что хочется обойтись стандартным кодом.
У меня везде на нужных колонках стоит только:
         // обработка до ввода 
oBrw1:aColumns[2]:bPrevEdit := {|| FieldEditFile(1), FALSE }
oBrw1:aColumns[5]:bPrevEdit := {|| FieldImageEdit(), FALSE }
oBrw1:aColumns[6]:bPrevEdit := {|| FieldEditFile(2), FALSE }



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




Пост N: 1633
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.09.17 12:57. Заголовок: SergKis пишет STATI..


SergKis пишет
 цитата:
STATIC FUNC On_DrawLine( oBr ) ...


Правильно так
 
STATIC FUNC On_DrawLine( oBr )
LOCAL nRow

If oBr:lPainted
nRow := oBr:nPaintRow
If nRow == 1
AFill(oBr:aRowPosRec, 0)
EndIf

oBr:aRowPosRec[ nRow ] := (oBr:cAlias)->( RecNo() )
EndIf

RETURN Nil


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


Пост N: 736
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.12.17 10:40. Заголовок: oBrw1:aColumns:bPre..



 цитата:
oBrw1:aColumns[2]:bPrevEdit := ...



А можно сделать вызов общий для всех колонок, без указания № колонки ?
Т.е. при выходе с редактирования из любой колонки вызывается одна функция или блок.

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




Пост N: 1659
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.17 10:52. Заголовок: Vlad04 1. AEval(oBr..


Vlad04
1.
 
AEval(oBrw1:aColumns, {|oCol| oCol:bPrevEdit := {|val, brw | Prev( val, brw ) }, ;
oCol:bPostEdit := {|val, brw, add| Post( val, brw, add ) } )

2. или FOR ... применить

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


Пост N: 737
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.12.17 11:06. Заголовок: Ниже неправильно (вы..


Ниже неправильно (выдает ошибку)

AEval(Brw_3:aColumns, {|oCol| oCol:bPostEdit := {|val, brw, add| brw_3:Upstable() } )

Но как-то так хочется, т.е. для всех колонок Brw_3 при выходе с редактирования выполнять стабилизацию Бровса


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




Пост N: 1660
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.17 11:12. Заголовок: Vlad04 в блок кода ..


Vlad04
в блок кода передаются параметры val, brw, add, используйте их
{|val, brw| brw:Upstable() }



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




Пост N: 1661
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.17 11:17. Заголовок: PS Vlad04 пишет Но к..


PS
Vlad04 пишет
 цитата:
Но как-то так хочется, т.е. для всех колонок Brw_3 при выходе с редактирования выполнять стабилизацию Бровса


усложните блок кода, если надо после 2-ой колонки, то
AEval(Brw_3:aColumns, {|oCol,nCol| oCol:bPostEdit := iif( nCol == 2, {|val, brw, add| brw:Upstable() }, NIL ) )



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


Пост N: 738
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.12.17 11:20. Заголовок: Скобка одна } пропу..


Скобка одна } пропущена, а так нормально

 цитата:
AEval(Brw_3:aColumns, {|oCol| oCol:bPostEdit := {|val, brw | brw:Upstable() }} )



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




Пост N: 5613
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.17 14:40. Заголовок: Пробежаться для чтен..


Пробежаться для чтения по колонке для oBrw := SetArrayTo(...) можно так:

// Итог по колонке 
FUNCTION ItogoColumn( oBrw, cNameColumn )
LOCAL nCol := oBrw:nColumn(cNameColumn)
LOCAL oCol, nItg := 0

aEval(oBrw:aArray, { |aVal,nElm| nItg += aVal[ nCol ] })

oCol:GetColumn(cNameColumn):cFooting := hb_ntos(nItg)
oBrw:DrawFooters()

// или
// oCol := oBrw:GetColumn(nCol)
// oCol:cFooting := hb_ntos(nItg)

RETURN NIL

или так
   LOCAL nCol := oBrw:nColumn(cNameColumn) 
LOCAL nItg := 0

FOR nI := 1 TO LEN(oBrw:aArray) // или oBrw:nLen
nItg += oBrw:aArray[ nI, nCol ]
NEXT

Пробежаться для записи по всей таблице для oBrw := SetArrayTo(...) можно так:
( Запись осуществляется средствами таблицы !)

   // допустим колонка LMETKA 
nCol := oBrw:nColumn("LMETKA")
FOR nI := 1 TO LEN(oBrw:aArray) // или oBrw:nLen
lMark := oBrw:aArray[nI,nCol]
oBrw:aArray[nI,nCol] := !lMark
NEXT

А как такую же операцию сделать для обычного TBROWSE, средствами таблицы ?
И не средствами драйвера базы - (oBrw:cAlias)->LMETKA := !lMark



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




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


Andrey пишет:

 цитата:
А как такую же операцию сделать для обычного TBROWSE, средствами таблицы ?


Примерно так
 
FOR nI := 1 TO oBrw:nLen
AEval( oBrw:aColumns, {|oCol| Eval(oCol:bData, !Eval(oCol:bData)) })
NEXT



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




Пост N: 5614
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.17 16:59. Заголовок: Haz пишет: Примерно..


Haz пишет:

 цитата:
Примерно так


А позиционирование по строке таблицы - разве не нужно ?

По массиву же стоит - oBrw:aArray[nI,nCol] =
Или я просто не понял...
Можешь написать без Eval() ...

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




Пост N: 1138
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.12.17 17:36. Заголовок: Andrey пишет: А поз..


Andrey пишет:

 цитата:
А позиционирование по строке таблицы - разве не нужно


нужно добавить
oBrw:GoTop()
а в цикле
oBrw:Skip(1)
и указать по какой колонке . в моем примере - по всем ( да и пример этот только показывает как использовать ::bData )

Без Eval() только через драйвер базы, да и Eval тоже неявно использует драйвер.
Зачем такой изврат , если драйвер самое быстрое и надежное решение ?


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




Пост N: 1139
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.12.17 17:47. Заголовок: Haz пишет: пример э..


Haz пишет:

 цитата:
пример этот только показывает как использовать ::bData


bData - это блок выборки / записи , такой же как и в Clipper , он же возвращается функцией FieldWBlock().
при предаче в блок парамера как Eval( ::bData, x ) -этот параметр присваивается в поле.
При вызове без параметра - как Eval(::bdata ) возвращает значение поля.
в классическом виде это примерно так {|x| if(pCount() == 0, FieldGet(nCol), FieldPut(nCol, x))}.
Замечу - блок не заботится о блокировке записи.
PS впрочем именно этот блок мы с тобой уже неоднократно обсуждали на форуме.
PPS Оно тебе надо ? чем драйвер не угодил то
if (oBrw:cAlias)->(Rlock())
(oBrw:cAlias)->&(oBrw:aColumns[oBrw:nCell]:cName) := 'новое значение'
(oBrw:cAlias)->(dbUnlock())
end

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