On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник


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


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




Пост N: 3222
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.05.20 21:08. Заголовок: Andrey пишет А как м..


Andrey пишет
 цитата:
А как можно отдельно задать фонт для суперхидера, сразу.
Пробовал так:
:hFontSupHdSet := GetFontHandle("CardSuperH") // 5-доп.фонт
Прога вылетает с ошибкой:


У тебя богатая фантазия
Делай так как написал выше, команда и метод

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




Пост N: 6692
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 21:14. Заголовок: SergKis пишет: У те..


SergKis пишет:

 цитата:
У тебя богатая фантазия


Да не фантазия, а простая невнимательность. Слишком тороплюсь сделать.
Понял в чём дело, нужно так:
  :hFontSupHdSet( , GetFontHandle("TsbSuperH") )   // 5-доп.фонт 

Спасибо !

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




Пост N: 3223
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.05.20 21:32. Заголовок: Andrey Это будет на..


Andrey
Это будет на 1-ю колонку, а остальные ... + высота у фонта будет другая, т.е. этого мало.
Лучше команда или метод AddSuperHeader(), в них "букав больше"

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




Пост N: 6693
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 22:06. Заголовок: SergKis пишет: Лучш..


SergKis пишет:

 цитата:
Лучше команда или метод AddSuperHeader(), в них "букав больше"



Тогда так примерно ?
   // суперхидер 
//:AddSuperHead( nFromCol, nToCol, uHead, nHeight, aColors, l3dLook, uFont, uBitMap, lAdjust, lTransp, ...)
:AddSuperHead( 1 , :nColCount() , aSupHd[1], , , , GetFontHandle("TsbSuperH") )


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




Пост N: 3224
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.05.20 22:09. Заголовок: Andrey пишет Понял в..


Andrey пишет
 цитата:
Понял в чём дело, нужно так:
:hFontSupHdSet( , GetFontHandle("TsbSuperH") ) // 5-доп.фонт


5-ый фонт и 6-ой можно сделать тоже, в целом, наверно, удобно будет
 
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
IF ! Empty( FontName ) .and. HB_ISARRAY( FontName )
AEval( FontName, { |cf| AAdd( aFonts, cf ) } )
aFont := ASize( aFonts, 6 )
FontName := aFont[1]
...
oBrw := TSBrowse():New( ControlName, nRow, nCol, nWidth, nHeight, ;
bFields, aHeaders, aWidths, ParentFormName, ;
change, bDblClick, bRClick, fontname, fontsize, ;
hCursor, aTmpColor, aBmp, cMsg, update, uAlias, uWhen, value, cell, ;
nStyle, bLClick, aFlds, aHeadClick, nLineStyle, lRePaint, ;
Delete, aJust, lock, appendable, lEnum, ;
lAutoSearch, uUserSearch, lAutoFilter, uUserFilter, aPicture, ;
lTransparent, uSelector, lEditable, lAutoCol, aColSel, tooltip )

IF HB_ISARRAY( aFont ) .and. Len(aFont) > 3
IF HB_ISCHAR(aFont[ 4 ])
oBrw:hFontSpcHd := GetFontHandle(aFont[ 4 ])
ENDIF
IF HB_ISCHAR(aFont[ 5 ])
oBrw:hFontSupHd := GetFontHandle(aFont[ 5 ])
ENDIF
IF HB_ISCHAR(aFont[ 6 ])
oBrw:hFontEdit := GetFontHandle(aFont[ 6 ])
ENDIF
ENDIF

...
CLASS TSBrowse FROM TControl
...
DATA hFontSpcHd AS NUMERIC // special header font
DATA hFontSupHd // super header font

...
Method AddSuperHead( nFromCol, nToCol, uHead, nHeight, aColors, l3dLook, uFont, uBitMap, lAdjust, lTransp, ;
...
Default lAdjust := .F., ;
...
uHead := "", ;
uFont := ::hFontSupHd

...


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




Пост N: 6694
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 23:00. Заголовок: SergKis пишет: 5-ый..


SergKis пишет:

 цитата:
5-ый фонт и 6-ой можно сделать тоже, в целом, наверно, удобно будет


Да удобней и логичней !
И проще программировать, один раз задать и не делать потом различных манипуляций !
Везде параметры задал и всё, а с фонтами фокусами нужно заниматься...

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




Пост N: 6719
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.05.20 16:49. Заголовок: Григорий, а можно оп..


Григорий, а можно описать порядок загрузки фонтов по новому в ChangeLog.txt ?
А то сейчас помню, а потом забуду.
А так будет напоминалка для всех !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7199
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.05.20 17:00. Заголовок: Andrey пишет: А то ..


Andrey пишет:

 цитата:
А то сейчас помню, а потом забуду.


Ты по любому забудешь

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 195
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 05.06.20 12:48. Заголовок: TBrowse: SET AUTOADJUST ON


Не могу побороть в TBrowse один неприятный момент:
Если установлен SET AUTOADJUST ON -> изменяю (увеличиваю Height) размеры окна -> затем при редактировании
ячейка улетает вверх!
Я хочу програмно увеличить окно в зависимости от разрешения монитора - и тут такой казус ):

Протестировал от h_tbrowse.prg - > TGetBox.prg -> h_getbox.prg -> координаты передает правильные.
Пример: miniGui\SAMPLES\Advanced\Tsb_BitMaps\demo.prg - сделал поле "Name" редактируемым и вот результат:
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1554
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.06.20 22:19. Заголовок: Andrey пишет: Григо..


Andrey пишет:

 цитата:
Григорий, а можно описать порядок загрузки фонтов по новому в ChangeLog.txt ?
А то сейчас помню, а потом забуду.
А так будет напоминалка для всех !

можно, начинай пока не забыл.

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




Пост N: 6724
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.06.20 08:34. Заголовок: Подскажите как можно..


Подскажите как можно самому ПРАВИЛЬНО рассчитать высоту ТСБ.
Что-то не учитываю в расчётах.

Задаю фонты для таблицы:
   DEFINE FONT TsbNorm   FONTNAME "DejaVu Sans Mono" SIZE 12 
DEFINE FONT TsbBold FONTNAME "Tahona" SIZE 12 BOLD
DEFINE FONT TsbSuperH FONTNAME "Comic Sans MS" SIZE 18 BOLD

aTsbFont := { "TsbNorm", "TsbBold", "TsbBold", "TsbSpecH", "TsbSuperH", "TsbEdit" }

DEFINE TBROWSE oBrw ;
............
FONT aTsbFont ;

Высота одной строки таблицы:
   nHCell := GetTextHeight( 0, "B", GetFontHandle( "Norm" ) ) + 10 
Кол-во строк в таблице nTsbMaxRow = 8
Добавляем высоту суперхидера + шапки + подвала:
   nHFSupHd   := GetTextHeight( 0, "B", GetFontHandle( "TsbSuperH" ) ) 
nHFHead := GetTextHeight( 0, "B", GetFontHandle( "TsbBold" ) )
nHFFoot := 0
nTsbHeight := nHCell * nTsbMaxRow + nHFSupHd + nHFHead + nHFFoot

nHFntSupHd = 35
nHFntHead = 19

nTsbHeight = 303

При создании ТСБ прописываю любые параметры, кроме высоты ячейки, всё равно они игнорируются кроме 0:
      :nHeightSuper  := 16      // можно задать, если не определен фонт при построении     
:nHeightHead := 20 // можно задать, если не определен фонт при построении
:nHeightFoot := 0 // можно задать, если не определен фонт при построении
:nHeightCell := nHCell // высота ячейки берется ТОЛЬКО отсюда
// :nHeightCell := 0 - прога повисает и всё, нет проверки на 0

Вывод отладки из таблицы на форме:
   1) :nHeight = 303 
2) :nHeightSuper = 49
3) :nHeightHead = 32

4) :nHeightFoot = 0
5) :nHeightSpecHd = 0
6) :nHeightCell = 29
7) GetHScrollBarHeight() = 17
8) :nRowCount() Кол-во строк = 7

Т.е. на форме всего 7 строк таблицы из заданных 8 !!!
Почему ? Что не учитываю ?
Почему меняется автоматом высота HeightSuper и HeightHead ?
Исходник h_tbrowse.prg смотрел, нифига не понял, как они считаются.
Как вручную можно рассчитать :nHeightSuper ?

Если отключить метод убирания дырки внизу ТСБ
    END TBROWSE // ON END {|ob| ob:SetNoHoles() }

то тогда :nHeightHead получается правильно заданным,
но суперхидер всё равно сам по себе считается.

Ради интереса задал
      :nHeightSuper  := 0       
:nHeightHead := 0
:nHeightFoot := 0

Шапки нет, а суперхидер всё равно показывается в ТСБ. Почему ?

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




Пост N: 6748
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.20 19:41. Заголовок: Пытаюсь сделать курс..


Пытаюсь сделать курсор с окантовкой черного цвета.
Не получается...
Как этот цвет задать ?
      :nHRED      :=  CLR_HRED 
:n_HRED := -CLR_HRED
:n_HBLUE := -RGB(128,225,225)
:nHBLUE := RGB(128,225,225)
:nBLACK := CLR_BLACK
:n_BLACK := -CLR_BLACK

-0 же не бывает

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




Пост N: 6749
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.20 19:48. Заголовок: Блин, не сообразил с..


Блин, не сообразил сразу...
Сделал вот так -RGB(1,1,1)

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




Пост N: 6750
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.20 16:40. Заголовок: А как править ключев..


А как править ключевое поле по индексу в ТСБ ?
Сделал вот такой код:
      nI := :nColumn( 'NN' ) 
:aColumns[nI]:lEdit := .T.
:aColumns[nI]:nEditMove := 0
oCol := :GetColumn('NN')
// обработка до ввода
oCol:bPrevEdit := { |lR,ob| nRecno := (ob:cAlias)->( RecNo() ) ,;
lR := (ob:cAlias)->( RLock() ) ,;
iif( lR, nil , MsgInfo("Запись заблокирована!") ) ,;
lR }
// обработка после ввода
oCol:bPostEdit := { |uv,ob| uv := (ob:cAlias)->( dbUnLock() ) ,;
ob:Reset() , ob:Refresh(.T.) ,;
ob:GoToRec( nRecno ), ob:Setfocus() }

В таблице 24 записей, помещается 20.
Беру 3-ю запись с NN=3 меняю на 15.
В ТСБ остаётся только одна запись 15 - остальных нет ...
Стрелкой вверх/вниз и другие записи появляются.
Меняем NN=15 обратно на 3. В таблице опять только одна запись - 3.
Как сделать правильно ?

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




Пост N: 6754
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.07.20 16:24. Заголовок: Заработало ! Вот так..


Заработало ! Вот так надо:
      DEFINE TBROWSE oBrw   ; 
....
LOADFIELDS LOCK // блокировка записей в автомате
.....

oCol := :GetColumn('NN')
// обработка до ввода
oCol:bPrevEdit := { |lR,ob| lR := (ob:cAlias)->( RLock() ), ;
nRecno := (ob:cAlias)->( RecNo() ) , lR }

// обработка после ввода
oCol:bPostEdit := { |xv,ob| xv := nil, ob:Refresh(.T.) , ob:GoToRec( nRecno ), ;
ob:Upstable() , ob:Setfocus() }


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




Пост N: 3285
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.07.20 11:08. Заголовок: Andrey пишет Заработ..


Andrey пишет
 цитата:
Заработало ! Вот так надо:


Взял пример Tsb_Basic\demo2.prg, поменял структуру dbf, сделал tag на поле F2 назвав NN
 
FUNCTION UseOpenBase()
...
IF ( lDbfNo := ! File( cDbf+'.dbf' ) )
AAdd( aStr, { 'F1', 'D', 8, 0 } )
AAdd( aStr, { 'F2', 'C', 10, 0 } )

AAdd( aStr, { 'F3', 'N', 10, 2 } )
AAdd( aStr, { 'F4', 'L', 1, 0 } )
dbCreate( cDbf, aStr )
ENDIF

IF lDbfNo .OR. !File( cIndx+'.cdx' )
USE ( cDbf ) ALIAS TEST EXCLUSIVE NEW

WHILE TEST->( RecCount() ) < 30
TEST->( dbAppend() )
TEST->F1 := Date() + n++
TEST->F2 := StrZero( n, 2 )
TEST->F3 := n
TEST->F4 := ( n % 2 ) == 0
END

GO TOP
INDEX ON F2 TAG NN FOR !Deleted()

INDEX ON RECNO() TAG NN2 FOR !Deleted()
INDEX ON RECNO() TAG DEL FOR Deleted()
USE
ENDIF
...

Добавил LOCK в
 
DEFINE TBROWSE oBrw AT 5 + Form_0.Button_Ins.Height + 5, 5 ;
...
GRID LOCK ;
...

Режимы Insert и Edit работают и отображают тсб нормально без добавок, т.е. аналог твоего примера на изменение ключа работает.

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




Пост N: 3286
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.07.20 11:12. Заголовок: PS работает и без до..


PS
работает и без добавки LOCK и
USE ( cDbf ) ALIAS TEST SHARED NEW

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




Пост N: 6755
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.07.20 19:04. Заголовок: SergKis пишет: Режи..


SergKis пишет:

 цитата:
Режимы Insert и Edit работают и отображают тсб нормально без добавок, т.е. аналог твоего примера на изменение ключа работает.


У меня в задаче 2 индекса по базе:
      cFldKey  := "NN"  
cFilter1 := "PART==1 .AND. !Deleted()"
cFilter2 := "PART==2 .AND. !Deleted()"
INDEX ON &cFldKey TAG PART1 TO (cFileIndx) FOR &cFilter1
INDEX ON &cFldKey TAG PART2 TO (cFileIndx) FOR &cFilter2

Может из-за этого ?

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




Пост N: 3287
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.07.20 20:04. Заголовок: Andrey пишет Может и..


Andrey пишет
 цитата:
Может из-за этого ?


Поправил, по мне, так правильнее работать, ставить SET SCOPE TO ...
 
IF ( lDbfNo := ! File( cDbf+'.dbf' ) )
AAdd( aStr, { 'F0', 'N', 1, 0 } )

AAdd( aStr, { 'F1', 'D', 8, 0 } )
AAdd( aStr, { 'F2', 'C', 10, 0 } )
AAdd( aStr, { 'F3', 'N', 10, 2 } )
AAdd( aStr, { 'F4', 'L', 1, 0 } )
dbCreate( cDbf, aStr )
ENDIF

IF lDbfNo .OR. !File( cIndx+'.cdx' )
USE ( cDbf ) ALIAS TEST EXCLUSIVE NEW

WHILE TEST->( RecCount() ) < 30
TEST->( dbAppend() )
TEST->F0 := (n % 2) + 1

TEST->F1 := Date() + n++
TEST->F2 := StrZero( n, 2 )
TEST->F3 := n
TEST->F4 := ( n % 2 ) == 0
END

GO TOP
INDEX ON STR(F0)+F2 TAG NN FOR !Deleted()

INDEX ON RECNO() TAG NN2 FOR !Deleted()
INDEX ON RECNO() TAG DEL FOR Deleted()
USE
ENDIF

SET AUTOPEN ON

USE ( cDbf ) ALIAS TEST SHARED NEW
OrdSetFocus('NN')
SET SCOPE TO "1","1"

GO TOP

Работает

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




Пост N: 6783
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.08.20 23:13. Заголовок: Всем привет ! Можно ..


Всем привет !
Можно ли при открытие базы в ТСБ (метод dbf) создать 6 своих виртуальных колонок перед колонками dbf ?
Одну колонку можно же делать через COLNUMBER { 1, 50 } , а ещё 6 нужно.
И как им присвоить имена и размеры ?
a1ColTitle := {"(1)","(2)","(3)","(4)","(5)","(6)","#"}
a1Name := {"CF1","CF2","CF3","CF4","CF5","CF6","ORDKEYNO"}
a1Type := {"N","N","N","N","N","N","N"}
a1Size := {50,50,50,50,50,50,50}

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

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 249
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет