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 [только новые]


SergKis
постоянный участник




Пост N: 3834
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.21 17:55. Заголовок: Haz пишет вот на вся..


Haz пишет
 цитата:
вот на всякий последние исходники теста


Игорь, можешь забросить на ftp, что менял в TsBrowse и окончательный пример ?
Похоже завтра (может и дальше) еще на опытной экспл. сдаваемого проекта, а выглядывать и выкусывать изменения
с темы не хочется, скорее вытащу что то не так.
Спасибо.

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




Пост N: 1742
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.08.21 17:59. Заголовок: SergKis пишет: Игор..


SergKis пишет:

 цитата:
Игорь, можешь забросить на ftp, что менял в TsBrowse и окончательный пример ?

у меня сейчас другой комп , учетка ftp затерялась
Выложу сюда ссылку на архив со всеми изменениями и описанием

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




Пост N: 1743
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.08.21 18:58. Заголовок: Haz пишет: Выложу с..


Haz пишет:

 цитата:
Выложу сюда ссылку на архив со всеми изменениями и описанием


Сергей все тут, в комплекте Readme.txt
https://drive.google.com/file/d/1iniM62TywOa8JagiIquyt9OqmfUsCIMj/view?usp=sharing

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




Пост N: 3837
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.21 19:08. Заголовок: Haz Спасибо :sm36:..


Haz
Спасибо

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




Пост N: 3838
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.21 09:34. Заголовок: Haz пишет Сергей все..


Haz пишет
 цитата:
Сергей все тут, в комплекте Readme.txt


Сделал правку, убрал только +1
iFree = rct.bottom - rct.top - iSupH - iHead - iFoot - iSpcH;
Примеры работают нормально, затыков не выявил, но в них нет динамических изменений высот, у меня их нигде нет.
Проверил, сделав правку, версию unicode то же.
Пример "TsBrowse hole test " погонял, но не азартно, т.к. считаю этот режим экстремальным использованием тсб и клиенту не предложу, без особой надобности, скорее крайний случай. А с примером тоже все ok!
В свою версию тсб 7.0, изменения вносить не буду, т.к. там добавлены свои сопли по борьбе с затыком отображения

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




Пост N: 1915
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.08.21 09:51. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Примеры работают нормально, затыков не выявил, но в них нет динамических изменений высот, у меня их нигде нет.
Проверил, сделав правку, версию unicode то же.


Благодарю за помощь
У меня получились такие же результаты...
Эта правка будет включена в 3-й апдейт сборки 21.07, которая выйдет завтра.

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




Пост N: 1745
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.08.21 09:54. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал правку, убрал только +1
iFree = rct.bottom - rct.top - iSupH - iHead - iFoot - iSpcH;


не принципиально, тк rct.top всегда == 0
Но если кто- то потом полезет в исходник , то в голове будет каша ( не ясно зачем минусуем )
У себя проекты все пересобрал с
iFree = rct.bottom - iSupH - iHead - iFoot - iSpcH; полет нормальный

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




Пост N: 3839
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.21 10:27. Заголовок: Haz пишет Но если кт..


Haz пишет
 цитата:
Но если кто- то потом полезет в исходник , то в голове будет каша ( не ясно зачем минусуем )


Оставил rct.top т.к. без нее, когда смотрю, кажется чего то не хватает. Выше GetClientRect и понятно становится. Смотрел др. места с GetClientRect, в целом не складывается впечатление, что человек перепутал применение ф-ии, скорее ошибся с +1, т.к. есть места где играется +-1 в высотах, в тех же scroll. Без +1 точнее расчет в этом месте

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




Пост N: 1746
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.08.21 11:33. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что человек перепутал применение ф-ии, скорее ошибся с +1,


Ну мы можем только гадать выискивая тут умысел этой +1
Возможно сначала было GetWindowRect() и тогда +1 оправдана,
в бровсе 5 строк , начинается с 10 строки экрана и заканчивается на 14 ( 1=10, 2=11, 3=12,4=13, 5=14 ) , как узнать высоту всего бровса ? правильно, nBottom - nTop + 1 или 14 - 10 + 1 = 5
потом автор наткнулся на Hscroll и изменил на GetClientRect().
Я бы тоже не обратил внимание в таком случае на +1 , тк возвращаемая структура путает названиями nTop и nBottom, хотя в них уже совсем другие сущности.
при GetClientRect() высоту считать не надо, она уже есть в nBottom, поэтому nBottom - nTop + 1 нужно заменить на nBottom


 цитата:
есть места где играется +-1 в высотах


но это не то место. Как посчитать сколько строк поместиться в окно бровса целиком ?
Надо взять общую высоту и отнять все высоты занятые НЕ строками , результат поделить на высоту строки и выделить целое.
все значения достоверно известны, играть тут нечем

отдельно про Scroll. В окне бровса он реализуется вызовом ScrollWindowEx() , который меняет стиль окна и создает скролл в клиентской области ( уменьшая ее )
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-scrollwindowex
Скрытый текст


и кстати автор тут +1 не использует хотя видно что тексты копипастились
скорее всего именно миграция c GetWindowRect() на GetClientRect() и была т.к. rct.top остался рудиментом

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




Пост N: 3840
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.21 13:31. Заголовок: Haz пишет Ну мы може..


Haz пишет
 цитата:
Ну мы можем только гадать выискивая тут умысел этой +1


Согласен.

 цитата:
кстати автор тут +1 не использует хотя видно что тексты копипастились


но правка на -1 есть, хотя линии прорисовываются внутри, как выясняли
rct.top += ( nHeightHead + nHeightSuper - ( nHeightSuper ? 1 : 0 ) + nHeightSpecHd - ( nHeightSpecHd ? 1 : 0 ) ); // exclude heading from scrolling
для вычисления
rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); // exclude unused portion at bottom

В COUNTROWS сейчас все по делу

PS. Использовать в расчете rct.top скорее привычка, т.е.
y := 0 ; h := This.ClientHeight - y * 2 // т.е. y := This.ClientRow ; x := This.ClientCol
h -= GetWindowHeight(hSplit)
...

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




Пост N: 7030
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.08.21 13:38. Заголовок: Haz пишет: отдельно..


Haz пишет:

 цитата:
отдельно про Scroll. В окне бровса он реализуется вызовом ScrollWindowEx()


А можно как то цвет этого поменять на свой ?
А то серый не очень красиво смотрится....

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




Пост N: 1747
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.08.21 17:59. Заголовок: Andrey пишет: А мож..


Andrey пишет:

 цитата:
А можно как то цвет этого поменять на свой ?


Скорее всего можно
 
CLASS TSBScrlBar FROM TControl

DATA lVertical, lReDraw, lIsChild, nMin, nMax, nPgStep
DATA bGoUp, bGoDown, bGoTop, bGoBottom, bPageUp, bPageDown, bPos
DATA bTrack
DATA l32Bit
DATA lShowDisabled, hWnd, oWnd
DATA lUpdate AS LOGICAL // TControl
DATA bWhen // TWindow
DATA bValid // TWindow

CLASSDATA aProperties INIT { "cVarName", "nMin", "nMax",;
"nPgStep", "nTop", "nLeft", "Cargo" }

METHOD New( nRow, nCol, nMin, nMax, nPgStep, lVertical, oWnd, nWidth, nHeight,;
bUpAct, bDownAct, bPgUp, bPgDown, bPos, lPixel, nClrText,;
nClrBack, cMsg, lUpdate, bWhen, bValid, lDesign ) CONSTRUCTOR

METHOD WinNew( nMin, nMax, nPgStep, lVertical, oWnd, bUpAction,;
bDownAction, bPgUp, bPgDown, bPos, nClrText, nClrBack,;
lUpdate, bWhen, bValid ) CONSTRUCTOR


и далее
 
nClrText := GetSysColor( COLOR_WINDOW ),;
nClrBack := GetSysColor( COLOR_SCROLLBAR ),;



но эти переменные нигде не используются ....

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




Пост N: 1748
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.08.21 20:19. Заголовок: SergKis пишет: но п..


SergKis пишет:

 цитата:
но правка на -1 есть

Ты про это
rct.top += ( nHeightHead + nHeightSuper - ( nHeightSuper ? 1 : 0 ) ...
мож кто то объяснит тут синтаксис .... мне кажется это тоже самое hb_default(@nHeightSuper , 0)
но будем считать разобрались, понаблюдаем за результатами, может кто сюда отпишет

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




Пост N: 3841
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.21 21:12. Заголовок: Haz пишет мож кто то..


Haz пишет
 цитата:
мож кто то объяснит тут синтаксис ....


Это если есть nHeightSuper, т.е > 0, то будет -1, иначе 0, так же и с наличием SupHd,
Для чего это, не понимаю. Т.к. Если для красоты (WScroll красиво вписывался в клиентскую область), то -1 сверху и с низу можно делать не зависимо от наличия SuperHd и SuperHeader, а та к как написано .. , я не понимаю почему

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




Пост N: 1749
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.08.21 22:21. Заголовок: SergKis пишет: я не..


SergKis пишет:

 цитата:
я не понимаю почему


В такой постановке тоже не понимаю

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




Пост N: 1753
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.09.21 16:47. Заголовок: ::CellInfo() непонятка


Сергей
Возник вопрос о координатe oCell:nRow из ::GetCellInfo()
никак не пойму что не так в примере , почему не совпадает с ячейкой. Может не правильно метод использую ?
Пример простой
в бровсе по bPrevEdit стоит показ окна в координатах ячейки и потом отказ в редактировании.
Окно открывается ниже чем нужно на величину ::nTop
вот пример
Скрытый текст



это смещение получается из ::GetcellInfo()
Скрытый текст



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




Пост N: 3859
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.09.21 18:21. Заголовок: Haz пишет Может не п..


Haz пишет
 цитата:
Может не правильно метод использую ?


Так и есть. Твой пример, немного поправил (как я делаю) Скрытый текст

Поправки координаты nY тоже делаю

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




Пост N: 3860
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.09.21 19:02. Заголовок: PS Добавляю в modal ..


PS
Добавляю в modal окно Cell еще такое (выделил цветом)

PS2
не забываем делать
 
FUNCTION PrevEdit(xVal, oBrw)
...
LOCAL oWnd, hWnd
LOCAL hOld := _HMG_InplaceParentHandle
LOCAL oParent := _WindowObj(oBrw:cParentWnd)
_HMG_InplaceParentHandle := oParent:Handle


DEFINE WINDOW Cell AT nY,nX WIDTH nW - 2 HEIGHT nH - 2 MODAL NOCAPTION ;
...
oBrw:DrawSeLect() ; DO EVENTS

_HMG_InplaceParentHandle := hOld

...


PS3
Создание контролов и тсб делаю до END WINDOW, т.е.
 
END SPLITBOX

This.Maximize
oBrw := CreateBrowse( This.Object, GetWindowHeight(hSpl) + 2, 2 )

END WINDOW

//DoMethod(oMain:Name, "maximize")
//oBrw := CreateBrowse( oMain, GetWindowHeight(hSpl) + 2, 2 )

ACTIVATE WINDOW &(oMain:Name)

Тогда не надо писать для контролов окна OF &(oWnd:Name), т.е. имеем куски кода с привязкой к тек. окну. Их можно комбинировать на разных окнах

PS4
Не стал править в исходнике, думаю и так знаешь. Просто вариант
 
DEFINE SPLITBOX HANDLE hSpl
DEFINE TOOLBAR ToolBar_1 CAPTION "" BUTTONSIZE nBtnW, nBtnH FLAT
BUTTON 01 CAPTION 'Справочники' PICTURE 'NEWSUPLOAD16' ACTION _wPost(01) SEPARATOR
BUTTON 02 CAPTION 'Портфель' PICTURE 'n2' WHOLEDROPDOWN SEPARATOR
DEFINE DROPDOWN MENU BUTTON 02
ITEM "Моделирование 1" IMAGE 'factory16' ACTION _wPost(02,, This.Name) NAME 201
ITEM "Моделирование 2" IMAGE 'factory16' ACTION _wPost(02,, This.Name) NAME 202
ITEM "Моделирование 3" IMAGE 'factory16' ACTION _wPost(02,, This.Name) NAME 203
END MENU
END TOOLBAR
DEFINE TOOLBAR ToolBar_2 CAPTION "" BUTTONSIZE nEndW, nBtnH FLAT
BUTTON 99 CAPTION 'Выход' PICTURE 'exit' ACTION _wPost(99)
END TOOLBAR
END SPLITBOX

This.Maximize
oBrw := CreateBrowse( This.Object, GetWindowHeight(hSpl) + 2, 2 )

WITH OBJECT This.Object
:Event(01, {| | Nil })
:Event(02, {|ow,ky,cItm|
Local cBtn := StrZero(ky, 2), nItm, oBrw
This.&(cBtn).Enabled := .F.
oBrw := This.oBrw.Object
nItm := Val(cItm) - ky * 100
IF nItm == 1
// ...
ELSEIF nItm == 2
// ...
ELSEIF nItm == 3
// ...
ENDIF
SetProperty(ow:Name, cBtn, "Enabled", .T.)
Return Nil
})
:Event(99, {|ow| ow:Release() })
END WITH

END WINDOW


PS5
убрал в CreateBrowse() лишнее oBrw между DEFINE TBROWSE и END TBROWSE, т.е.
 
oBrw:SetArray( aDatos, .T. )
oBrw:nWheelLines := 1
... на
:SetArray( aDatos, .T. )
:nWheelLines := 1
...


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




Пост N: 1754
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.09.21 23:07. Заголовок: SergKis пишет: Твой..


SergKis пишет:

 цитата:
Твой пример, немного поправи

спасибо, посмотрю завтра. Сегодня целый день был посвящён совещаниям ни о чем. Только приехал, голова пустая совершенно

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




Пост N: 7039
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.09.21 04:58. Заголовок: Haz пишет: А можно ..


Haz пишет:

 цитата:
А можно как то цвет Scroll поменять на свой ?
Скорее всего можно
и далее
nClrText := GetSysColor( COLOR_WINDOW ),;
nClrBack := GetSysColor( COLOR_SCROLLBAR ),;
но эти переменные нигде не используются ....


А как его поменять можно ?
Т.е. допустим в последнем примере который дал Сергей - Пост N: 3859 можешь показать ?
А то я не знаю как это сделать, давно очень хотел поменять.

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