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


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




Пост N: 1293
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.11.16 10:22. Заголовок: Делал для Andrey при..


Делал для Andrey примеры, может кому сгодится (на одну тему, но по разному сделаны)
http://my-files.ru/1quo1w
http://my-files.ru/ct7m3d

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




Пост N: 1294
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.11.16 10:49. Заголовок: PS копипастил и забы..


PS
копипастил и забыл исправить в примере из Tsb_form_1.7z функция MyButton на всех кнопках надо заменить
 
ACTION ( MsgBox(This.Name+CRLF+This.BaseName.Value, cForm), ;
TBrw_Obj(cBrw, cForm):SetFocus() ) ;



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




Пост N: 1040
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.11.16 12:05. Заголовок: Почему не работает поиск?


Задачка для знатоков TSBrowse

Получил такой вопрос (в заголовке поста) на бразильском форуме.

Текст примера см. ниже
Скрытый текст



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




Пост N: 1304
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.11.16 15:54. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Получил такой вопрос ... Почему не работает поиск?


 
1.
J := 0
For i = 1 To 30
File2->( DBAppend() )
File2->Codigo := StrZero( j, 4 )
File2->Descri := 'Product Name ' + StrZero( j, 4 )
j += 500 // будет переполнение StrZero( j, 4 ), т.е. ****
Next

2.
Function oAuxDSMGPosi()
cClassif := oAuxDSMG.Lb_xxx.Value
_LogFile(.T., cClassif) // ==> 00000000000
If cClassif <> Space( 11 ) // это не сработает, т.к. len(cClassif) == 11 тут

3. Так работает

Function Main()

Local NomArq1 := {}
Local NomArq2 := {}
Local NomArq3 := {}

PRIV cClassif, oBrw_Div, oBrw_Sec, oBrw_Mar, oBrw_Gru

SET SOFTSEEK ON

RDDSETDEFAULT('DBFCDX')

FErase('File1.DBF')
FErase('File1.CDX')
FErase('File2.DBF')
FErase('File2.CDX')
FErase('File3.DBF')
FErase('File3.CDX')
FErase('File4.DBF')
FErase('File4.CDX')
...
Function oAuxDSMGPosi()
Local nRec
// cClassif := oAuxDSMG.Lb_xxx.Value
// If cClassif <> Space( 11 )
File1->( DBSetOrder( 1 ) )
File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) )
nRec := File1->( RecNo() )
File1->( DBSetOrder( 2 ) )
oBrw_Div:SetFocus()
oBrw_Div:Reset() // если коменировать эти строки, то
oBrw_Div:GotoRec(nRec) // раскоментировать которые ниже (вроде и так и так работает)

// oAuxDSMG.oBrw_Div.Value := nRec
// oBrw_Div:SetFocus()
// oBrw_Div:DrawSelect()
// oBrw_Div:Refresh( .T. )
// For i = 1 To 13
// oBrw_Div:RefreshARow( i )
// Next
...
// EndIf

дальше не анализировал.


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




Пост N: 1041
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.11.16 16:36. Заголовок: SergKis пишет: даль..


SergKis пишет:

 цитата:
дальше не анализировал


Благодарю за проведенный анализ

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



Пост N: 195
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 23.11.16 09:26. Заголовок: Функции ChangeXX сра..


Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi соответственно
oAuxDSMG.Lb_xxx.Value уже обновилось значениями с текущей позиции в DBF, т.е. нулями,
затем выполняется поиск в oAuxDSMGPosi

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




Пост N: 1042
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.11.16 11:16. Заголовок: nick_mi пишет: Функ..


nick_mi пишет:

 цитата:
Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi


Благодарю за Ваше пояснение
Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE

Полный код исправленного примера см. ниже
Скрытый текст


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




Пост N: 1306
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.16 12:50. Заголовок: Может не очень вруба..


Может не очень врубаюсь в сущность примера, но когда и от чего должны происходить переотображения тсб и в какой последовательности, т.е. где паровоз\лошадь ?
Вроде пример на создание\расшифровку составного кода, если да, то должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб).
Если это просто передвигаем любой тсб и что то должно произойти во ВСЕХ тсб, то это другое и должно происходить по таймеру (сменилось в label, сменилось в тсб).


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




Пост N: 1307
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.16 12:54. Заголовок: PS или onchange labe..


PS
или onchange label, в который пишем

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




Пост N: 1043
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.11.16 13:34. Заголовок: SergKis пишет: когд..


SergKis пишет:

 цитата:
когда и от чего должны происходить переотображения тсб


Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE.
Он заметил, что если мало строк до конца списка в окошке, то TBROWSE корректно не обновляется, что и демонстрирует этот пример для случая File2. Если лучше обновлять по таймеру, то возможно ли отрехтовать данный пример для корректного отображения данных после поиска при инициализации окна

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



Пост N: 196
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 23.11.16 14:05. Заголовок: SergKis пишет: не о..


SergKis пишет:

 цитата:
не очень врубаюсь в сущность примера


SergKis пишет:

 цитата:
должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб)


Там, похоже, из 4-х разных таблиц набирают какие-то коды характеристик, независимые от предыдущих и
последующих характеристик

gfilatov2002 пишет:

 цитата:
Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE


Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально
            File2->( DBSetOrder( 1 ) )  
File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) )
nRec := File2->( RecNo() )
File2->( DBSetOrder( 2 ) )
oBrw_Sec:SetFocus()
oBrw_Sec:Reset()
oBrw_Sec:GotoRec(nRec)
oBrw_Sec:Skip(0)





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




Пост N: 1308
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.16 14:13. Заголовок: gfilatov2002 пишет С..


gfilatov2002 пишет
 цитата:
Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE.


Т.е. это расшифровка составного кода, т.к. сами тсб между собой не связаны. Попробую порихтовать с этой позиции.

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




Пост N: 1309
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.16 14:21. Заголовок: nick_mi пишет Объясн..


nick_mi пишет
 цитата:
Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально


Если это годится, то рихтовать не буду.
nick_mi

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


Пост N: 1336
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.11.16 14:26. Заголовок: SergKis пишет: сам..


SergKis пишет:

 цитата:
сами тсб между собой не связаны.


Вот-вот

gfilatov2002 пишет:

 цитата:
чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE.


Так вы посоветуйте челу изучить азы ООП

если он создал 4 объекта browse, то пускай их и спользует через доступные методы, а не напрямую

File2->( DBSetOrder( 1 ) )
File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) )

Да это чаще всего будет работать - но при этом вы игнорируете всю внутреннюю логику работы browse.
И не позволит обнаружить ошибки в логике такой роботы - если они там есть.

Для синхронизации связанных browse есть метод SyncChild (я что-то нигде не увидел примера его использования), так будет корректнее чем через таймер (ИМХО здесь таймер - извращение).

Не ищите костыль

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




Пост N: 1044
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.11.16 14:33. Заголовок: nick_mi пишет: врод..


nick_mi пишет:

 цитата:
вроде все нормально


Благодарю за помощь
Обновляется, однако...

Петр пишет:

 цитата:
вы посоветуйте челу изучить азы ООП


Вот с этим как раз проблема - программируют на минигуи, в основном, люди старой школы

Не по теме.
На мой взгляд, это во многом объясняет использование Минигуи вместо полноценных ООП-систем типа HwGUI,
на изучение корректной работы которых требуется время


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


Пост N: 1337
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.11.16 14:47. Заголовок: Так обьясните ему, ..


Так обьясните ему, что ошибку он сотворил сам, не проводя процедур синхронизации состояния обьектов.
Но мой пост адресовался не только ему


 цитата:
	File1->( DBSetOrder( 1 ) )  
File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) )
nRec := File1->( RecNo() )
File1->( DBSetOrder( 2 ) )

_SyncObject( oBrw_Div, nRec )

File2->( DBSetOrder( 1 ) )
File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) )
nRec := File2->( RecNo() )
File2->( DBSetOrder( 2 ) )

_SyncObject( oBrw_Sec, nRec )
...

static procedure _SyncObject( o, nRec )

o:SetFocus()
o:Reset()
o:GotoRec(nRec)
o:Skip(0)
// and more

return




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




Пост N: 1310
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.16 14:47. Заголовок: Петр пишет так будет..


Петр пишет
 цитата:
так будет корректнее чем через таймер (ИМХО здесь таймер - извращение).


Достаточно спорное утверждение. Крутим колесико и мелькание связанных тсб обеспечено. У Димы, недавно, была задачка на эту тему.
 цитата:
Для синхронизации связанных browse есть метод SyncChild


Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода.
Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих)

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


Пост N: 1338
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.11.16 15:11. Заголовок: SergKis пишет: Дост..


SergKis пишет:

 цитата:
Достаточно спорное утверждение.


Там было ИМХО, а потом здесь. Про проблемы Димы читал, но утверждать, что решить их нельзя и др. способами не буду

Смысл моего поста - нельзя игнорировать логику поведения обьекта. А потом еще и удивляться (или, не дай бог, возмущаться).
Для любителей ООП в этом случае есть возможность наследования, для остальных - костыль или не пользоваться

SergKis пишет:

 цитата:
Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода.
Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих)



Нет-нет, спора не будет


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




Пост N: 5188
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.11.16 20:10. Заголовок: Вопрос возник уже да..


Вопрос возник уже давно решить не могу !
Как бороться с не показом вертикального скролинга (стрелка внизу отгрызана) ? Юзера прикалываются....

При показе таблицы делаю:
oBrwX:lNoHScroll := .T. // НЕТ показа горизонтального скролинга
oBrwX:ResetVScroll() // показ вертикального скролинга

Первый раз таблица отображается нормально.

После перепоказа по другим индексам делаю типа так:
nOrder := IIF(lCity,2,1)
SELECT(cAlias)
DBSetOrder(nOrder)
SetProperty(oBrwX:cParentWnd, oBrwX:cControlName, "Enabled", .F.)
oBrwX:lNoHScroll := .T. // НЕТ показа горизонтального скролинга
oBrwX:ResetVScroll() // показ вертикального скролинга
oBrwX:Reset()
oBrwX:Refresh(.T.)
oBrwX:Upstable()
SetProperty(oBrwX:cParentWnd, oBrwX:cControlName, "Enabled", .T.)
oBrwX:Setfocus()

Показывается вертикальный скролинг и стрелка внизу отгрызана.....
Да и в добавок потом НИКАК не убирается горизонтальный скролинг.
Что не так делаю ?


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




Пост N: 6140
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.11.16 22:31. Заголовок: Andrey пишет: Как б..


Andrey пишет:

 цитата:
Как бороться с не показом вертикального скролинга


oBrw4:bChange := {|| oBrw4:oVScroll:SetRange( 0, 0 ) }

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