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


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




Пост N: 6819
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.20 17:27. Заголовок: Строю ТСБ, удаляю(ск..


Строю ТСБ, удаляю(скрываю) колонки, делаю заморозку столбцов:
          :nFreeze     := :nColumn("TEVENT") // заморозить таблицу до этого столбца 
:lLockFreeze := .T. // избегать прорисовки курсора на замороженных столбцах

Курсор на таблице, но нет активного ввода, нужно стрелкой вправо или Enter нажать, тогда появляется активный ввод.
И ещё при движении налево, т.е. где замороженные столбцы - курсор уходит на эти столбцы, т.е. пропадает.
Почему, установил же :lLockFreeze := .T. ?

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




Пост N: 1599
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.09.20 18:23. Заголовок: Andrey пишет: И ещё..


Andrey пишет:

 цитата:
И ещё при движении налево, т.е. где замороженные столбцы - курсор уходит на эти столбцы, т.е. пропадает.
Почему, установил же :lLockFreeze := .T. ?


проверил на последней сборке все работает , ищи у себя ошибку
Andrey пишет:

 цитата:
Курсор на таблице, но нет активного ввода,


ху из активный ввод ?

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




Пост N: 6820
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.20 19:03. Заголовок: Haz пишет: ху из ак..


Haz пишет:

 цитата:
ху из активный ввод ?


Вот это, активный курсор для ввода:


При построении ТСБ надо ENTER нажать, только тогда появляется активный ввод.

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




Пост N: 3372
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.20 19:07. Заголовок: Andrey Что бы не бы..


Andrey
Что бы не было разных непоняток, можно делать так (на базе примера Tsb_MoreFields\demo.prg)Скрытый текст

Всегда будут только нужные столбцы в колонках тсб.
Клавиши Ctrl+1,...,Ctrl+8,Ctrl+0 меняют список колонок в просмотре от имени колонки oCol:cName

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




Пост N: 3373
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.20 19:13. Заголовок: Andrey пишет При пос..


Andrey пишет
 цитата:
При построении ТСБ надо ENTER нажать, только тогда появляется активный ввод.


А добавить
oBrw:SetFocus() // можно добавить oBrw:GoPos(1, oBrw:nFreeze+1)
oBrw:DrawSelect()

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




Пост N: 6821
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.20 19:37. Заголовок: SergKis пишет: А до..


SergKis пишет:

 цитата:
А добавить
oBrw:SetFocus() // можно добавить oBrw:GoPos(1, oBrw:nFreeze+1)
oBrw:DrawSelect()


Это не спасает, попробовал.

Попробовал убрать скрытие столбцов в таблице,
активный курсор появляется и передвижение на замороженные столбцы прекращается.
Что-то с удалением/скрытием столбцов - ломается алгоритм движения курсора...
Я с этим уже раз 5 сталкиваюсь, думал что-то я сам нахимичил, а это не я...
Удаляю столбцы вот так:
   oBrw:HideColumns( {1,2,3,4,5,12,18..} ,.t.)   // скрыть колонки


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




Пост N: 3374
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.20 20:32. Заголовок: Andrey пишет Я с эти..


Andrey пишет
 цитата:
Я с этим уже раз 5 сталкиваюсь, думал что-то я сам нахимичил, а это не я...
Удаляю столбцы вот так:
oBrw:HideColumns( (1,2,3,4,5,12,18..) ,.t.) // скрыть колонки


Думаю, что это ТВОЯ химия, т.к. колонок :lVisible := .F. не должно быть до :nFreeze, т.е. скрываемые колонки должны находится ПОСЛЕ :nFreeze, т.к. до :nFreeze методы :nAtCol() и :nAtActual считают все колонки безусловно видимыми

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




Пост N: 6822
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.20 22:47. Заголовок: SergKis пишет: Дума..


SergKis пишет:

 цитата:
Думаю, что это ТВОЯ химия, т.к. колонок :lVisible := .F. не должно быть до :nFreeze


Есть метод скрытия колонок, я скрыл колонки которые мне нужны.
Показываю ТСБ, без заморозки колонок - нет активного курсора.
       ............. 
myDelColumnTsb( oBrw, aTsbColumn ) // убрать колонки из таблицы

//:nFreeze := :nColumn("TEVENT") // заморозить таблицу до этого столбца
//:lLockFreeze := .T. // избегать прорисовки курсора на замороженных столбцах

:GoPos(1, :nColumn("TEVENT") ) - без этого не пашет
//:DrawSelect()
............
END TBROWSE ON END {|ob| ob:SetNoHoles(), ob:oPhant:nClrHeadBack := ob:Cargo:nClr4, ;
ob:oPhant:nClrFootBack := ob:Cargo:nClr10,;
ob:Refresh() }

Т.е. убрал колонки - нужно позаботиться самому, чтобы показать активный курсор ...
Блин, а я считал что ТСБ сам поставит на первую видимую колонку.

Получается нет проверки, когда двигаем курсор - колонка заморожена или нет.
Можно это как то проверить, чтобы курсор не улетал.
Не особо это и критично, но так чтобы знать как это можно делать.

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




Пост N: 6824
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.20 12:18. Заголовок: Всем привет ! Есть п..


Всем привет !
Есть построенный ТСБ, в нём суперхидер из одной колонки.
Как узнать - сколько букв поместится в суперхидере ?
Размеры получил, а кол-во букв не могу высчитать.
      nWTsb  := oBrw:GetAllColsWidth()           // ширина всех колонок видимых 
hFont := oBrw:aSuperHead[ 1, 7 ] // 4-special header font
If hFont != Nil
aFont := GetFontParam(hFont)
cFontName := aFont[1]
nFontSize := aFont[2]
lFontBold := aFont[3]
ENDIF

? "hFont=", hFont, HB_ValToExp(aFont)

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




Пост N: 3381
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.20 13:57. Заголовок: Andrey Смотри свой ..


Andrey
Смотри свой же пример ButtonEx_DynamicMenu

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




Пост N: 6825
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.20 15:14. Заголовок: SergKis пишет: Смот..


SergKis пишет:

 цитата:
Смотри свой же пример ButtonEx_DynamicMenu


Там другое.
Возвращает максимальный размер фонта от кол-ва символов в строке.
Мне нужно наоборот, от ширины шрифта и WIDTH объекта - получить
максимальное кол-во символов которые влезут в WIDTH объекта.

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




Пост N: 3384
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.20 15:21. Заголовок: Andrey пишет Там дру..


Andrey пишет
 цитата:
Там другое.
Возвращает максимальный размер фонта от кол-ва символов в строке.
Мне нужно наоборот, от ширины шрифта и WIDTH объекта - получить
максимальное кол-во символов которые влезут в WIDTH объекта.


И что там другого ?
Перебираются размеры фонта для строки, а наоборот (перебрать буквы для одного фонта) ты принять не можешь, религия не позволяет или арифметика другая

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




Пост N: 6826
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.09.20 17:00. Заголовок: SergKis пишет: рели..


SergKis пишет:

 цитата:
религия не позволяет или арифметика другая


Да вчера делал, не получилось.
Сегодня по другому сделал, вроде работает...
Вот так сделал -
Скрытый текст


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




Пост N: 3385
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.20 21:20. Заголовок: Andrey пишет // Функ..


Andrey пишет
 цитата:
// Функция вернет максимальное количество букв "Н"


Почему именно "H". Используют в практике 3-и буквы, если от букв прыгать, а не от конкретного текста.
"A" - min длина
"B" - средняя длина
"W" - max длина
Если у тебя регистрирован фонт SET FONT Normal ..., то ты можешь получать длину от буквы "B" автоматом
nWidth := GetFontWidth("Normal", 50 /* длина в символах */)
Такой алгоритм применен в Tsb_DemoMdi примере для "M" полей и длинных "C" полей. Колонка шириной oCol:ToWidth(50 /*символов*/) и EditBox встраивает текст с переносами в эти 50 символов.
Если в выводе преобладают маленькие буквы, то можно еще уменьшить nWidth *= 0.8 (или даже 0.7) или увеличить вывод кол-ва символов в полученный nWidth ~ 15-20%? т.е. 50+10(15) символов.

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




Пост N: 6828
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.09.20 12:24. Заголовок: SergKis пишет: Поче..


SergKis пишет:

 цитата:
Почему именно "H"


Да не подумал сразу.
Текст состоит у меня сейчас как правило только из нескольких заглавных букв.
Поставил "х" и сразу стал текст в размер суперхидера попадать.
Фонты уже зарегистрированны, спасибо за подсказку.

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




Пост N: 244
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 09.03.21 16:41. Заголовок: Здравствуйте! Давно ..


Здравствуйте! Давно вам не писал - тут у меня личные проблемы были.

И теперь вот вопрос: как открыть CSV-файл с заголовками в TsBrowse. Заголовки полей CSV можно брать в качестве заголовков TsBrowse.
Есть поля текстовые, дата, время и одно длинное MEMO. Это экспортный файл из Google Calendar.

Заранее благодарен

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




Пост N: 3587
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.03.21 17:05. Заголовок: Dr. Oldwarez пишет Е..


Dr. Oldwarez пишет
 цитата:
Есть поля текстовые, дата, время и одно длинное MEMO


Пару записей показать бы.
Можно dbf создавать а append from ... DELIMITED ..., но предложу через массив
 
aBuf := hb_ATokens( hb_memoread(cFie), CRLF)
aDim := {}
aHdr := {}
FOR nI := 1 TO Len(aBuf)
IF nI == 1 // header
// как заданы заголовки в "..." или без них ?
FOR EACH t IN hb_AToekns(aBuf[ nI ]) ; AAdd(aHdr, t) // без
NEXT
ELSE
AAdd(aDim, &( "{"+aBuf[ nI ]+"}" ))
ENDIF
NEXT
Далее подать aHdr и aDim в tsb, как в примерах Tsb_array_2, например


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




Пост N: 245
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 09.03.21 17:18. Заголовок: SergKis пишет: Пару..


SergKis пишет:

 цитата:
Пару записей показать бы.


Пожалуйста!
Subject,Start Date,Start Time,End Date,End Time,Location,Description 
OLDWAREZ :Покупка компьютера,04/01/2021,10:00 AM,02/01/2021,12:30 PM,Вещевой рынок,Всего за 1500 руб.

Это стандартный экспорт календаря Гугл.

Subject
Start Date
Start Time
End Date
End Time
Location
Description
Это заголовки

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




Пост N: 3588
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.03.21 18:02. Заголовок: Dr. Oldwarez Не сов..


Dr. Oldwarez
Не совсем стандартный csv по мне, но
1.принимаем в массив строковый все
2. опр. типы колонок
3. переводим данные строковые колонок по типам или показываем в тсб строковый вариант
 
aBuf := hb_ATokens( hb_memoread(cFie), CRLF)
aDim := {}
aTyp := {}
aLen := {}
aHdr := {}
FOR nI := 1 TO Len(aBuf)
IF nI == 1 // header
FOR EACH t IN hb_AToekns(aBuf[ nI ], ",") ; AAdd(aHdr, t)
NEXT
ELSE
aTmp := {}
FOR EACH t IN hb_AToekns(aBuf[ nI ], ",")
cTyp := "C"
nLen := 0
IF "/" $ t
cTyp := "D"
t := CtoD(t)
nLen := 8
ELSEIF ":" $ t .and. " AM" $ t
cMilTime := ft_Civ2Mil( t ) // " 5:40 am" 0540
t := left(cMilTime, 2)+":"+right(cMilTime, 2)+":00"
nLen := len(t)
ELSEIF ":" $ t .and. " PM" $ t
cMilTime := ft_Civ2Mil( t ) // " 5:40 pm" 1740
t := left(cMilTime, 2)+":"+right(cMilTime, 2)+":00"
nLen := len(t)
ELSE
nLen := len(t)
ENDIF
AAdd(aTmp, t)
AAdd(aTyp, cTip)
AAdd(aLen, nLen)
NEXT
ENDIF
NEXT

можно подавать в тсб массивы или создавть dbf и в тсб (подключать hbnf.lib )
на выбор

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




Пост N: 3589
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.03.21 18:11. Заголовок: PS пропустил ..


PS
пропустил
 
AAdd(aLen, nLen)
NEXT
AAdd(aDim, aTmp)
ENDIF

и везде hb_ATokens(...) конечно

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