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: 3326
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.20 11:21. Заголовок: Andrey пишет Можно л..


Andrey пишет
 цитата:
Можно ли при открытие базы в ТСБ (метод dbf) создать 6 своих виртуальных колонок перед колонками dbf ?


Вариантов много. Вот один из них
 
BEGIN SEQUENCE WITH { |e|break(e) }
DbUseArea( .F., cRdd, cFile, cAls, lShared, , cCdp )
lUse := ! NetErr() .and. Used()
nMsg := 0
END SEQUENCE

IF lUse
k := 6
aField := Array(FCount()+k)
aField[1] := FieldName(1)
aField[2] := FieldName(1)
aField[3] := FieldName(1)
aField[4] := FieldName(1)
aField[5] := FieldName(1)
aField[6] := FieldName(1)
FOR i := 1 TO FCount() ; aField[ k+i ] := FieldName(i)
NEXT
ENDIF
...
DEFINE TBROWSE oBrw AT y,x WIDTH w HEIGHT h CELL ;
ALIAS ALIAS() ;
FONT (App.Object):Cargo:aFonts ;
BRUSH { 255, 255, 230 } ;
COLORS aClr ;
ON GOTFOCUS oCar:FocusedControl := "oBrw" ;
COLUMNS aField ;
FOOTER .T. ;
FIXED COLSEMPTY ;
LOADFIELDS GOTFOCUSSELECT ;
COLNUMBER { k+1, 60 } ;
ENUMERATOR LOCK
...
FOR i := 1 TO :aColumns
o := :aColumns[ i [
IF o:cName == "ORDKEYNO" ; EXIT
ENDIF
o:cAlias := :cAlias
o:bData := {|| Nil }
o:bValue := {|u,obr,ncol,ocol|
Local nrec := (obr)->( RecNo() )
u := ocol[ncol]:Cargo[nrec] // вирт. значение
Return u
}
o:cField := ""

switch i
case 1
o:Cargo := aVirtual1 // массив виртуальных данных
o:cName := VIRT1
o:cFieldTyp := "C"
o:nFieldLen := 20
o:nFieldDec := 0
o:nWidth := o:ToWidth(o:nFieldLen, 0.8)
exit
case 2
o:Cargo := aVirtual2 // массив виртуальных данных
o:cName := VIRT2
o:cFieldTyp := "N"
o:nFieldLen := 7
o:nFieldDec := 0
o:nWidth := o:ToWidth(o:nFieldLen)
exit
case 3
...
exit
case 4
...
exit
case 5
...
exit
case 6
...
exit
end switch
NEXT
...


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




Пост N: 3327
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.20 11:36. Заголовок: PS Еще сбросить или ..


PS
Еще сбросить или поставить Picture для колонки
o:cPicture := Nil

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




Пост N: 3328
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.20 20:41. Заголовок: SergKis пишет Вот од..


SergKis пишет
 цитата:
Вот один из них


Работающий вариант с 6-ю вирт. колонками Скрытый текст


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



Пост N: 37
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 26.08.20 18:24. Заголовок: CONTEXT NENU CONTROL TsBrowse


При вызове CONTEXT MENU для TsBrowse , CONTEXT MENU в другом окне не работает. Хотя для других контролов все нормально.
Так в примере ниже:
CONTEXT MENU OF Form2 появляется после ITEM "Item 1 from TBROWSE" ACTION Window2(), а после ITEM "Item 1 from BUTON" ACTION Window2() - нет.


Скрытый текст



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




Пост N: 6793
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.08.20 13:26. Заголовок: Уважаемый Avf 1) Оч..


Уважаемый Avf
1) Очень тяжело смотреть исходник без форматирования, я думаю что никто и не смотрел больше.
2) Пример собрался, а дальше что смотреть ?
Мне не понятно. Может другие поняли.

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



Пост N: 38
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 27.08.20 14:11. Заголовок: Я очень извиняюсь, ф..


Я очень извиняюсь, форматирование чего-то исчезло(был невнимателен) при копировании на форум.
С контролов TsBrowse и Button вызывается контекстное меню.
После выбора Item открывается новое окно.
В новом окне тоже вызывается контекстное меню.
В случае, если пришли через Button - все работает.
Если через TsBrowse, меню не отображается.
Еще раз, извиняюсь, у нас тут и так бошка на части разваливается(РБ).

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




Пост N: 3971
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.08.20 14:13. Заголовок: Движок форума съедае..


Движок форума съедает пробелы слева. Надо использовать стиль - моноширинный шрифт

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




Пост N: 6795
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.08.20 14:22. Заголовок: Мне сложно на это от..


Мне сложно на это ответить. Я ещё не такой большой спец по МиниГуи.

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




Пост N: 7241
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.08.20 14:36. Заголовок: Avf пишет: Я очень ..


Avf пишет:

 цитата:
Я очень извиняюсь, форматирование чего-то исчезло(был невнимателен) при копировании на форум.


я поправил , сейчас нормально

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



Пост N: 39
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 27.08.20 14:51. Заголовок: Спасибо, Дима...


Спасибо, Дима.

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




Пост N: 3336
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.20 16:28. Заголовок: Avf Работает вариан..


Avf
Работает вариант Скрытый текст


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



Пост N: 40
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 27.08.20 23:48. Заголовок: Спасибо, Ceргей. Да,..


Спасибо, Ceргей. Да, действительно, работая с eventами, можно обойти все недочеты в подобных ситуациях.

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




Пост N: 6804
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.08.20 19:14. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для Timestamp колонок это как в h_tbrowse.prg, можешь подобрать длину в символах не 20, а сколько надо у тебя



Перенес эту тему сюда.
Нужно наверное поставить там 24 знака для ВСЕХ, чтобы не съедались колонки ?
А для этих колонок сделать вот так !
           ELSEIF cType $ "+^" // Type: [+] [^] 
// если в базе будет 1 000 000 записей, то нужно 7 знаков
oCol:nWidth := GetTextWidth( Nil, REPL("9",7), hFont ) // 7 знака


У меня разрешение экрана 1920х1080, может из-за этого съедаются колонки ?

Сделал отдельный пример, первую таблицу по умолчанию, во вторую таблицу
добавил свою функцию myPartWidthTsb( oBrw ) // поправить ширину колонок
Тогда колонки 24,26,27,28 показываются полностью.

Вот проект - https://cloud.mail.ru/public/2h5G/5HCw2TY2G
Народ, посмотрите на своих мониторах, будут у вас съедаться колонки 24,26,27,28 в первой таблице ?

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




Пост N: 3349
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.08.20 22:46. Заголовок: Andrey DEFINE TB..


Andrey
 
DEFINE TBROWSE oBrw1 ;
AT nY, nX ALIAS aArray WIDTH nW HEIGHT nH CELL ;
FONT aFont ;
BRUSH YELLOW ;
HEADERS aHead ;
COLSIZES aSize ;
PICTURE aPict ;
JUSTIFY aAlign ;
COLUMNS aField ;
COLNAMES aName ;
FOOTERS aFoot ;
FIXED COLSEMPTY ;
LOADFIELDS ;
/*COLNUMBER { 1, 40 } */ ;
ENUMERATOR LOCK EDIT
? procname(), "FontWidth =", GetTextWidth( 0, Replicate( "9", 24 ), GetFontHandle(aFont[ 1 ]) ), GetFontWidth(aFont[ 1 ], 20), GetTextWidth( 0, Replicate( "B", 20 ), GetFontHandle(aFont[ 1 ]) )

дает у меня
MYBRW1 FontWidth = 216 220 220
216 - это что предлагаешь ты
220 - это то что стоит в :LoadFields(), получено 2-мя способами
т.е. вариант в тсб на 4 pixel > твоего варианта

Что дает у тебя ?

Andrey пишет
 цитата:
если в базе будет 1 000 000 записей, то нужно 7 знаков


Тогда увеличишь, когда надо будет, я же показывал, к примеру
:GetColumn("ID"):nWidth := (App.Object):W1
:GetColumn("VM"):nWidth := (App.Object):W1
или др. способом
:GetColumn("ID"):nWidth := GetFontWidth(aFont[ 1 ], 7)
:GetColumn("VM"):nWidth := GetFontWidth(aFont[ 1 ], 12)
к примеру, если поле "N" и короткое, и надо по нему подводить итог (сумму), то делаю так
 
ELSEIF o:cFieldTyp == "N" .and. o:nFieldLen < 10
o:nWidth += GetFontWidth("Normal", 3)

т.е. все ситации не засунешь во внутрь h_tbrowse.prg, что то придется писать и для своих баз можешь учесть все, что надо

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




Пост N: 3350
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.08.20 23:07. Заголовок: Andrey пишет посмот..


Andrey пишет
 цитата:
посмотрите на своих мониторах, будут у вас съедаться колонки 24,26,27,28 в первой таблице ?


на 3х PC нормально показывает не съедает ничего (1. win 8.1 [15"], 2. win 10 [14"], 3. win 8.1 [11"] ), exe твоей сборки

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




Пост N: 6805
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.08.20 00:19. Заголовок: SergKis пишет: ? pr..


SergKis пишет:

 цитата:
? procname(), "FontWidth =", GetTextWidth( 0, Replicate( "9", 24 ), GetFontHandle(aFont[ 1 ]) ), GetFontWidth(aFont[ 1 ], 20), GetTextWidth( 0, Replicate( "B", 20 ), GetFontHandle(aFont[ 1 ]) )

дает у меня
MYBRW1 FontWidth = 216 220 220
216 - это что предлагаешь ты
220 - это то что стоит в :LoadFields(), получено 2-мя способами
т.е. вариант в тсб на 4 pixel > твоего варианта

Что дает у тебя ?


MYBRW1 FontWidth = 240 200 200
У меня разрешение 1920х1080, win 8.1 [24"]
Вот наверное из-за этого и съедаются колонки.
Т.е. на всех мониторах красивого оформления НЕ ПОЛУЧИТСЯ без доп.функций, например как я написал
myPartWidthTsb( oBrw ) // поправить ширину колонок

SergKis пишет:

 цитата:
т.е. все ситации не засунешь во внутрь h_tbrowse.prg, что то придется писать и для своих баз можешь учесть все, что надо


Хорошо, понял. Буду делать свою добавку к ТСБ.

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




Пост N: 3351
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.20 00:55. Заголовок: Andrey Попробуй доба..


Andrey Попробуй добавку
? procname(), "FontWidth =", GetTextWidth( 0, Replicate( "9", 24 ), GetFontHandle(aFont[ 1 ]) ), GetFontWidth(aFont[ 1 ], 20), ;
GetTextWidth( 0, Replicate( "B", 20 ), GetFontHandle(aFont[ 1 ]) )
?? (App.Object):W(2.3)

она у меня 218
что у тебя ?

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




Пост N: 6806
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.08.20 01:16. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что у тебя ?


(App.Object):W(2.3)= 218

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




Пост N: 3352
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.20 01:25. Заголовок: Andrey Попробуй при..


Andrey
Попробуй присвоить :nWidth := (App.Object):W(2.4) или (App.Object):W(2.5)
для колонок "T"
как будет выглядеть tsb

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




Пост N: 6807
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.08.20 16:37. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуй присвоить :nWidth := (App.Object):W(2.4) или (App.Object):W(2.5)
для колонок "T"
как будет выглядеть tsb


Отлично выглядит на (App.Object):W(2.5) !

Попробовал фонт "Arial" вместо "DejaVu Sans Mono" для TsbNorm - стало лучше.
Фонт "DejaVu Sans Mono" моноширинный, а Arial обычный
Вот и компенсируются размеры ячеек.

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