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


администратор




Пост N: 1903
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.03.23 18:22. Заголовок: Andrey пишет: Народ..


Andrey пишет:

 цитата:
Народ, отзовитесь ... Как это можно реализовать ?


FreeImage в помощь.
Смотри примеры , как минимум Advanced\Freeimage , там как раз загрузка картинки из базы.

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




Пост N: 7324
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.23 09:22. Заголовок: Спасибо за ссылку. П..


Спасибо за ссылку.
Посмотрел примеры, ну там и наворочено...
Не знаю как и прикрутить это к ТСБ...

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




Пост N: 1904
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 09:50. Заголовок: Andrey пишет: Посмо..


Andrey пишет:

 цитата:
Посмотрел примеры, ну там и наворочено...
Не знаю как и прикрутить это к ТСБ


Ты притворяешься?
Один из самых мелких примеров. Получить картинку из базы, грузнуть в память и получив хендл указать в uBmpCell.
В примере картинку берут из базы sql запросом , с этой строки чуть ниже всего одна строчка кода для получения хендла.
Удачи.

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




Пост N: 7325
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.23 10:22. Заголовок: Haz пишет: Ты притв..


Haz пишет:

 цитата:
Ты притворяешься?


Да нет.
Не совсем ясен будет механизм показа.

Haz пишет:

 цитата:
Получить картинку из базы, грузнуть в память и получив хендл указать в uBmpCell


И как это сделать - грузнуть в память ?
Если в базе будет 10 тыс. записей, то все картинки нужно будет грузить в память ?
А она выдержит столько ?
Пример давал выше - там все картинки уже в базе.
Если не сложно, покажи пожалуйста на примере, как это сделать.
Думаю, что и другим будет интересно.

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




Пост N: 1905
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 10:41. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если в базе будет 10 тыс. записей, то все картинки нужно будет грузить в память


Хендл картинки нужен в момент прорисовки строки.Нет надобности весь миллиард держать в памяти. При желании можно динамичную подкачку сделать и загрузку хендлов в хеш по номеру записи на пару страниц бровса вверх и вниз и отслеживать диапазон по событиям бровса.

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




Пост N: 1906
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 11:16. Заголовок: Andrey пишет: Не со..


Andrey пишет:

 цитата:
Не совсем ясен будет механизм показа.


LoadImage() в блоке ubmpCell вопросов же не вызовет с механизмом. И тут тоже самое, вместо LoadImage() функция freeimage которая выдаёт хендл по строке.

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




Пост N: 1907
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 14:13. Заголовок: Haz пишет: FreeImag..


Haz пишет:

 цитата:
FreeImage в помощь.


Андрей!
Плохие новости , через FI не получится в ТСБ скормить хендл картинки, ТСБ не понимает хендл возвращаемый FI_LoadImage...()
Не трать время, ищи другой способ

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




Пост N: 7326
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.23 16:54. Заголовок: Haz пишет: Плохие н..


Haz пишет:

 цитата:
Плохие новости , через FI не получится в ТСБ скормить хендл картинки, ТСБ не понимает хендл возвращаемый FI_LoadImage...()
Не трать время, ищи другой способ


Огромное СПАСИБО за то что проверил это.
А то я бы ... и нифига бы не понял.

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




Пост N: 1908
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 17:26. Заголовок: В FW есть функция за..


В FW есть функция загрузки битмапа из строки, в MG нет такой. Здесь только LoadImage() из файла или ресурсов. Поэтому решение будет кривым :
Из блоба писать в файл , а из Файла LoadImage()
Более того, сам код TsBrowse использует именно такой подход. Функция StockBmp() из ТСБ для графических иконок пользует последовательность кода
 
nHandle := FCreate( cBmpFile )
nWrite := FWrite( nHandle, cBmp, Len( cBmp ) )
FClose( nHandle )
hBmp := LoadImage( cBmpFile )
FErase( cBmpFile )


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




Пост N: 7327
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.23 22:00. Заголовок: Haz пишет: В FW ест..


Haz пишет:

 цитата:
В FW есть функция загрузки битмапа из строки, в MG нет такой.


А взять такую функцию и добавить в МиниГуи можно ?
Или кто-то поможет это сделать ?
Без нарушения авторских прав FW....

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




Пост N: 1909
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.03.23 23:13. Заголовок: Andrey пишет: А взя..


Andrey пишет:

 цитата:
А взять такую функцию и добавить в МиниГуи можно ?


Ну если кто возьмётся с код править, то можно добавить.

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




Пост N: 7328
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.23 11:14. Заголовок: Буду думать над этим..


Буду думать над этим вопросом.
Может кто из наших форумчан поможет ?

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




Пост N: 7329
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.23 11:17. Заголовок: Ещё один вопрос по Т..


Ещё один вопрос по ТСБ.
При первом показе ТСБ делаю показ ПУСТОЙ таблицы (ну юзер так привык), как а Экселе.
Мешают/раздражают значки логического поля.

Как их можно убрать на время ?

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




Пост N: 1910
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 15.03.23 11:30. Заголовок: Andrey пишет: Как и..


Andrey пишет:

 цитата:
Как их можно убрать на время


oCol:bDecode := { lxl if( время не прошло, nil, x )}

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




Пост N: 7330
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.23 12:42. Заголовок: Спасибо ! :sm36: Н..


Спасибо !
Нашёл ещё одно решение.
При старте делаю так:
    oBrw:aCheck   := { LoadImage("CheckT28"), /*LoadImage("CheckF28")*/ }   // заменяем колонку CHECKBOX на свои картинки

А потом, после заполнения таблицы делаю так:
   IF oBrw:Cargo:n1Start > 0           // не пустая таблица 
oBrw:aCheck := { LoadImage("CheckT28"), LoadImage("CheckF28") }
ENDIF


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




Пост N: 7333
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.03.23 16:37. Заголовок: Что то не получается..


Что то не получается сделать ширину в экселе при экспорте в ТСБ штатными средствами.
Вот такой код:
   oBrw:ExcelOle( cXlsFile, lActivate, hProgress, aTitle, hFont, lSave, bExternXls, aColSel, bPrintRow ) 

For nI := 1 To oBrw:nColCount()
oCol := oBrw:aColumns[ nI ]
nW := oCol:nWidth
oSheet:Columns(nI):ColumnWidth := nW // строка 246
Next

Вылет вот такой:
 
Error BASE/1004 Метод не экспортирован: COLUMNS Args: [1] = U [2] = N 1
--------------------------------- Stack Trace ---------------------------------
Called from COLUMNS(0)
Called from TOEXCEL2(246) in module: Form_7Btn.prg
Called from (b)MYCONTEXMENUEXPORT(48) in module: Form_7Btn.prg
Called from _DOCONTROLEVENTPROCEDURE(0)

Эксель не закрыт, на экране висит. Перезапускать эксель не хочется.
Что ещё забыл ?

Там в исходнике METHOD ExcelOle() вот это стоит:
   IF bExtern != NIL 
Eval( bExtern, oSheet, Self )
ENDIF

oRange:Borders():LineStyle := xlContinuous
oRange:Columns:AutoFit()

Т.е. если я дам функцию в bExtern, свои размеры колонок, эксель потом сам переформатирует колонки ?

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




Пост N: 4247
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.23 16:52. Заголовок: Andrey пишет Эксель ..


Andrey пишет
 цитата:
Эксель не закрыт, на экране висит.


Может и висит, но сообщение говорит, что в переменной oSheet нет объекта или он, метод, написан неверно, т.е. метод Columns не найден.
Почему сразу не задаешь размеры, при описании колонок Header ?
В конце формирования Sheet обычно делают AutoFit для выравнивания размеров колонок к размеру текстов в них

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




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


SergKis пишет:

 цитата:
Почему сразу не задаешь размеры, при описании колонок Header ?


Да в штатном oBrw:ExcelOle() это вроде нельзя...
SergKis пишет:

 цитата:
Может и висит, но сообщение говорит, что в переменной oSheet нет объекта


Да там в этом методе все переменные локальные:
METHOD ExcelOle( cXlsFile, lActivate, hProgress, cTitle, hFont, lSave, bExtern, aColSel, bPrintRow ) CLASS TSBrowse 
LOCAL oExcel, oBook, oSheet, nRow, nCol, uData, nEvery, oRange, cRange, cCell, cLet, nColHead, ;

Были бы переданны в PUBLIC - было бы хорошо....
Но это опять править исходники МиниГуи надо.

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




Пост N: 4248
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.23 17:05. Заголовок: Andrey пишет Тебе д..


Andrey пишет
 цитата:
Да там в этом методе все переменные локальные:


Тебе дан ТВОЙ блок кода с параметрами, в нем и НАДО все делать Eval( bExtern, oSheet, Self ), т.е.
Задай bExtern, а oSheet, oBrw получишь. Твое
 цитата:

oBrw:ExcelOle( cXlsFile, lActivate, hProgress, aTitle, hFont, lSave, bExternXls, aColSel, bPrintRow )

For nI := 1 To oBrw:nColCount()
oCol := oBrw:aColumns[ nI ]
nW := oCol:nWidth
oSheet:Columns(nI):ColumnWidth := nW // строка 246
Next



конечно нет объекта в oSheet

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




Пост N: 7335
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.03.23 17:12. Заголовок: SergKis пишет: Зада..


SergKis пишет:

 цитата:
Задай bExtern, а oSheet, oBrw получишь. Твое


oRange:Columns:AutoFit() стоит после Eval( bExtern, oSheet, Self )
Наверное моя ширина колонок замениться ?
Вот я про это и спрашиваю...

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

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