Автор | Сообщение |
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:....
|
|
|
Ответов - 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) Извиняюсь за повторные (тупые) вопросы. Память уже не та...
|
|
|
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 ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3693
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.11.14 18:28. Заголовок: Блин, разобрался... ..
Блин, разобрался... Нужно вместо nWidth := GetTextWidth( NIL, nLenPole, GetFontHandle(hFont) ) Задавать текст, а не число...
|
|
|
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 .... Что не так делаю ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3695
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.14 01:30. Заголовок: Andrey пишет: LoadF..
Разобрался. Мой косяк. Оказывается я два раза делал в программе загрузку файлов... LoadFields( oBrw, 'Form_0' ) oBrw:LoadFields( .F. ) // все поля НЕ редактируемые
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3697
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.14 17:38. Заголовок: Как можно вывести МЕ..
Как можно вывести МЕМО поле в TBROWSE в одну строчку, чтобы таблица не увеличивалась на две строки ?
|
|
|
Dima
|
| |
Пост N: 4254
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.11.14 17:48. Заголовок: написать свой блок к..
написать свой блок кода для вывода этого поля
|
|
|
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) Где неправ, подскажите пожалуйста...
|
|
|
Dima
|
| |
Пост N: 4255
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.11.14 18:09. Заголовок: Примеры смотрел ? Ts..
Примеры смотрел ? TsB_Mdi.prg TsBtest.prg
|
|
|
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() + "№№") ..... А как я не знаю... Подскажите пожалуйста, может я и не прав.
|
|
|
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
|
|
|
|
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/
|
|
|
Haz
|
| |
Пост N: 337
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.11.14 12:00. Заголовок: Andrey пишет: Что-т..
Andrey пишет: цитата: | Что-то не получается это окно... |
| 1. EdtiBox value нужно присваивать не пустую строку а значение мемо поля 2. Forma_memo должна вернуть .F. чтоб не пустить в редактирование поля бровс
|
|
|
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/ Только базу удалить старую нужно.
|
|
|
Haz
|
| |
Пост N: 338
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.11.14 22:24. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как теперь сделать: 1) Возврат и запись отредактированного мемо-поля ? 2) Кнопочку маленькую (квадратненькую, в размер ячейки) повесить на активное мемо-поле в TBROWSE |
| 1. При закрытии окна если мемо поле редактировалось - запросить сохранение и если пользователь скажет ДА - то присвоить значение Value из Editbox в мемо поле ( возможно через RLock() ). 2. Посмотри в примерах TsBrowse использование метода :SetBtnGet() это и есть кнопочка
|
|
|
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 дернули ? Помогите пожалуйста разобраться.
|
|
|
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 появляется внутри ячейки редактируемой
|
|
|
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/
|
|
|
Haz
|
| |
Пост N: 341
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 15:01. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если убрать oBrw:aColumns[nI]:bPrevEdit := {|| FORMA_MEMO( &( bBlock2 ) ) } , то кнопка появляется ТОЛЬКО при редактировании. |
| так и должно быть это btnGET - т.е. кнопка в GET объекте , поэтому и писал что нужно не использовать PrevEdit (иначе GET не создается )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3706
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.11.14 15:10. Заголовок: Haz пишет: так и до..
Haz пишет: цитата: | так и должно быть это btnGET - т.е. кнопка в GET объекте , поэтому и писал что нужно не использовать PrevEdit (иначе GET не создается ) |
| А как тогда быть ? Кнопка на МАРКЕРЕ НЕ ПОКАЗЫВАЕТСЯ, только при редактировании ? А я хочу показ кнопки без редактирования, а при редактировании чтобы срабатывала функция FORMA_MEMO( &( bBlock2 ) ? Или это сделать нельзя ?
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|