On-line: гостей 2. Всего: 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 [только новые]


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




Пост N: 3687
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.11.14 22:00. Заголовок: Haz пишет: тогда пр..


Haz пишет:

 цитата:
тогда пример richEditEx в помощь ( уже вроде говорили про него в этом контексте месяца три назад )
там как раз показано как использовать _SetFont(), и правильно что туда заглянул



Про него уже забыл. Увидел в h_tbrowse.prg :
oBrw:hFont := _SetFont (ControlHandle,FontName,FontSize,bold,italic,underline,strikeout)

Извиняюсь за повторные (тупые) вопросы. Память уже не та...

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




Пост N: 3692
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.11.14 18:19. Заголовок: Подскажи пожалуйста ..


Подскажи пожалуйста как сделать автоматический расчет ширины колонок ?

Есть окно:
DEFINE WINDOW Form_0
На нем
DEFINE TBROWSE oBrw
END TBROWSE

hFont := oBrw:hFont // считать размер шрифта
MsgDebug(hFont,GetFontParam(hFont)) // вроде правильно выдает...

Хочу автоматом вычислять размер колонок в зависимости от шрифта:
For nI := 1 TO ...
oBrw:aColumns[nI]:cHeading := aTitleTbrw[nI]
nLenPole := LEN( FIELDGET( FIELDNUM(aPole[nI]) ) )
nWidth := GetTextWidth( NIL, nLenPole, GetFontHandle(hFont) )
oBrw:SetColSize(nI, nWidth)
oBrw:aColumns[nI]:nAlign := DT_CENTER
.............

Только вот nWidth выдает всегда 0 ?



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




Пост N: 3693
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.11.14 18:28. Заголовок: Блин, разобрался... ..


Блин, разобрался...
Нужно вместо
nWidth := GetTextWidth( NIL, nLenPole, GetFontHandle(hFont) )
Задавать текст, а не число...

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




Пост N: 3694
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.11.14 19:30. Заголовок: Косяк при выводе таб..


Косяк при выводе таблицы - дублирование полей базы !!!

В моей базе 14 полей (включая мемо поле), в таблицу вывожу только 10 !
А при выводе в таблице показывает 20 полей, причем 10 с русским заголовком + 10 с английским.
Вот примерно код:
aTbHead := { 'Дата' , 'Время' , 'Код' , 'Наименование события', .... }
aTbField:= { 'DATE' , 'TIME' , 'NEVENT' , 'EVENT' , ... }
aTbAlign:= { DT_CENTER, DT_CENTER, DT_CENTER, DT_LEFT , ... }
*/
// Стандартная функция загрузки базы
LoadFields( "oBrw", 'Form_0', , aTbField )

FOR nI := 1 TO LEN(aTbHead)
cStr := SPACE( FieldSize( FieldPos(aTbField[nI]) ) )
nTbColWidth := GetTextWidth( NIL, cStr, GetFontHandle(hFont) )
oBrw:aColumns[nI]:cHeading := aTbHead[nI]
oBrw:SetColSize(nI, nTbColWidth)
oBrw:aColumns[nI]:nAlign := aTbAlign[nI]
NEXT
....

Что не так делаю ?

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




Пост N: 3695
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.14 01:30. Заголовок: Andrey пишет: LoadF..


Разобрался. Мой косяк.
Оказывается я два раза делал в программе загрузку файлов...
LoadFields( oBrw, 'Form_0' )

oBrw:LoadFields( .F. ) // все поля НЕ редактируемые


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




Пост N: 3697
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.14 17:38. Заголовок: Как можно вывести МЕ..


Как можно вывести МЕМО поле в TBROWSE в одну строчку, чтобы таблица не увеличивалась на две строки ?

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




Пост N: 4254
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.11.14 17:48. Заголовок: написать свой блок к..


написать свой блок кода для вывода этого поля

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




Пост N: 3698
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.14 17:55. Заголовок: Haz пишет: через oB..


Haz пишет:

 цитата:
через oBrw_1:aColumns[1]:bData



Что то не получается у меня....
Я отказался от функции (h_tbrowse.prg) :
//LoadFields( "oBrw", 'Form_0', .F., aTbField ) // все поля НЕ редактируемые

Воn мой код:

END TBROWSE

//* | наименование | алиас | поле | формат поля |
AADD( aPole, { "Дата" , "" , "DATE" , "99.99.9999" , ....
AADD( aPole, { "Время" , "" , "TIME" , "99:99:99" , ...
AADD( aPole, { "Код" , "" , "NEVENT" , "@Z 999" , ...
AADD( aPole, { "Наименование" , "" , "EVENT" , REPLICATE("x",60) , ...

FOR nI := 1 TO LEN(aPole)
cStr := aPole[nI,4] // шаблон вывода поля
nTbColWidth := GetTextWidth( NIL, cStr, GetFontHandle(hFont) )
oBrw:aColumns[nI]:cHeading := aPole[nI,1] // Строка 106
oBrw:aColumns[nI]:bData := &('{ || "'+aPole[nI,3]+'" }')
oBrw:SetColSize(nI, nTbColWidth)
oBrw:aColumns[nI]:nAlign := aPole[nI,6]
oBrw:aColumns[nI]:cPicture := aPole[nI,4]
NEXT

Выдает ошибку:
Error BASE/1132 Переполнение массива: Неверное количество аргументов
Called from MAIN(106)


Где неправ, подскажите пожалуйста...



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




Пост N: 4255
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.11.14 18:09. Заголовок: Примеры смотрел ? Ts..


Примеры смотрел ?
TsB_Mdi.prg
TsBtest.prg

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




Пост N: 3699
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.14 19:02. Заголовок: Dima пишет: Примеры..


Dima пишет:

 цитата:
Примеры смотрел ?


Вот мой исходник - https://cloud.mail.ru/public/6fedc2671caf/Tsb_Config0.prg

Там удалил пару строк - теперь ошибка в 104 строке.
В примере нужно наверно создавать колонки типа
oBrw:AddColumn( TSColumn():New( If(.F., OemToAnsi(hb_eol() + "№№"), hb_eol() + "№№") .....
А как я не знаю... Подскажите пожалуйста, может я и не прав.




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




Пост N: 3700
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.14 20:41. Заголовок: Вот, разобрался. ..


Вот, разобрался.

FOR nI := 1 TO LEN(aPole)

ADD COLUMN TO TBROWSE oBrw // добавить новую колонку в TBROWSE

cStr := aPole[nI,4] // шаблон вывода поля
nTbColWidth := GetTextWidth( NIL, cStr, GetFontHandle(hFont) )
oBrw:aColumns[nI]:cHeading := aPole[nI,1]

bBlock := FieldBlock( aPole[nI,3] )
IF VALTYPE(FIELDGET(FIELDNUM(aPole[nI,3]))) == "M"
ELSE
oBrw:aColumns[nI]:bData := bBlock
ENDIF
oBrw:SetColSize(nI, nTbColWidth)
oBrw:aColumns[nI]:nAlign := aPole[nI,6]
oBrw:aColumns[nI]:cPicture := aPole[nI,4]
NEXT


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




Пост N: 3701
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.11.14 00:09. Заголовок: Хотелось бы сделать ..


Хотелось бы сделать показ мемо в отдельном (дополнительном) окне

Haz пишет:

 цитата:
если примерно как на картинке то
добавить в бровс пустую колонку , дать ей болк выборки { || 'MEMO'}. разрешить редактирование :lEdit := .T.и через oBrw_1:aColumns[11]:bPrewEdit := {|| ...} вызывать функцию которая в окне показывает мемо, Эта функция должна вернуть FALSE ( ну или через BtnBox делать чтоб совсем как на картинке)



Что-то не получается это окно.... Пожалуйста помоги подправить...
Вот исходник мой - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample/



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




Пост N: 337
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.11.14 12:00. Заголовок: Andrey пишет: Что-т..


Andrey пишет:

 цитата:
Что-то не получается это окно...



1. EdtiBox value нужно присваивать не пустую строку а значение мемо поля
2. Forma_memo должна вернуть .F. чтоб не пустить в редактирование поля бровс

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




Пост N: 3702
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.11.14 16:31. Заголовок: Haz пишет: 1. EdtiB..


Haz пишет:

 цитата:
1. EdtiBox value нужно присваивать не пустую строку а значение мемо поля
2. Forma_memo должна вернуть .F. чтоб не пустить в редактирование поля бровс



Сделал и получилось ! Спасибо !!!

А как теперь сделать:
1) Возврат и запись отредактированного мемо-поля ?
2) Кнопочку маленькую (квадратненькую, в размер ячейки) повесить на активное мемо-поле в TBROWSE
как в DBFNavigator-e ?

Пример там же - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample/
Только базу удалить старую нужно.


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




Пост N: 338
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.11.14 22:24. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как теперь сделать:
1) Возврат и запись отредактированного мемо-поля ?
2) Кнопочку маленькую (квадратненькую, в размер ячейки) повесить на активное мемо-поле в TBROWSE



1. При закрытии окна если мемо поле редактировалось - запросить сохранение и если пользователь скажет ДА - то присвоить значение Value из Editbox в мемо поле ( возможно через RLock() ).

2. Посмотри в примерах TsBrowse использование метода :SetBtnGet() это и есть кнопочка

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




Пост N: 3703
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.11.14 23:47. Заголовок: Haz пишет: 2. Посмо..


Haz пишет:

 цитата:
2. Посмотри в примерах TsBrowse использование метода :SetBtnGet() это и есть кнопочка


В одно примере TsBtest.prg есть только одно использование:
Brw_4:SetBtnGet( 5, "", { | oEdit, dVar | dVar := fBtnGet( dVar, oEdit:oWnd ),;
oEdit:VarPut( dVar ), oEdit:Refresh() }, 16 )


В другом примере TsB_Mdi.prg все (кроме одного) закомментировано:
// activating BtnGet to column 7 - not impement yet
// Brw_6:SetBtnGet( 7, "Calen16", { | oGet, dVar | aRect := GetCoors( oGet:hWnd ), ;
// dVar := FwCalendar( oGet:Value(), aRect[ 1 ], aRect[ 2 ], oGet:oWnd ),;
// oGet:cText( dVar ), oGet:Refresh(), oGet:KeyDown( VK_RETURN, 0 ) }, 16 )


Как у себя сделать, вообще не пойму ...
И почему текст закомментирован ?
И вдобавок еще FwCalendar() - наверно из FiveWin'a дернули ?
Помогите пожалуйста разобраться.



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




Пост N: 339
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.11.14 09:19. Заголовок: Andrey пишет: В одн..


Andrey пишет:

 цитата:
В одно примере TsBtest.prg есть только одно использование:
Brw_4:SetBtnGet( 5, "", { | oEdit, dVar | dVar := fBtnGet( dVar, oEdit:oWnd ),;
oEdit:VarPut( dVar ), oEdit:Refresh() }, 16 )



а чего тут разбираться
колонке 5 назначается кнопка размером 16 пикселей, на нажатие которой вешаем кодовый блок .
в сам блок передаем параметрами объект редактирования и значение до редактирования dVar.
после редактирования dVar содержит новое значение и через VarPut присваиваем ее значение буферу редактора , потом делаем Refresh чтоб на экране значение поля ввода перерисовалось на значение буфера.

В твоем случае dVar это значение мемо поля , fBtnGet - функция внешнего редактора которая возвращает - значение новое для мемо
Но тогда :PrevEdit не надо использовать т.к. BtnGet появляется внутри ячейки редактируемой



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




Пост N: 3705
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.14 14:49. Заголовок: Нет не появляется кн..


Нет не появляется кнопка при активном маркере, как картинке:

oBrw:SetBtnGet( nI, "", { | oEdit, dVar | dVar := fBtnGet( dVar, oEdit:oWnd ),;
oEdit:VarPut( dVar ), oEdit:Refresh() }, 16 )
oBrw:aColumns[nI]:bPrevEdit := {|| FORMA_MEMO( &( bBlock2 ) ) }

Если убрать oBrw:aColumns[nI]:bPrevEdit := {|| FORMA_MEMO( &( bBlock2 ) ) } , то кнопка появляется ТОЛЬКО при редактировании.

Пример там же - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample/


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




Пост N: 341
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.11.14 15:01. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если убрать oBrw:aColumns[nI]:bPrevEdit := {|| FORMA_MEMO( &( bBlock2 ) ) } , то кнопка появляется ТОЛЬКО при редактировании.



так и должно быть это btnGET - т.е. кнопка в GET объекте , поэтому и писал что нужно не использовать PrevEdit (иначе GET не создается )

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




Пост N: 3706
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.14 15:10. Заголовок: Haz пишет: так и до..


Haz пишет:

 цитата:
так и должно быть это btnGET - т.е. кнопка в GET объекте , поэтому и писал что нужно не использовать PrevEdit (иначе GET не создается )



А как тогда быть ? Кнопка на МАРКЕРЕ НЕ ПОКАЗЫВАЕТСЯ, только при редактировании ?
А я хочу показ кнопки без редактирования, а при редактировании чтобы срабатывала
функция FORMA_MEMO( &( bBlock2 ) ?
Или это сделать нельзя ?

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