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: 3222
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.05.20 21:08. Заголовок: Andrey пишет А как м..


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


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

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




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


SergKis пишет:

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


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

Спасибо !

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




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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
Andrey
постоянный участник




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


SergKis пишет:

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


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

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




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


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

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




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


Andrey пишет:

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


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

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





Пост 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 
Профиль
Haz
администратор




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


Andrey пишет:

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

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

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




Пост 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 
Профиль
Andrey
постоянный участник




Пост 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 
Профиль
Andrey
постоянный участник




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


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

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




Пост 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 
Профиль
Andrey
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
Andrey
постоянный участник




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