Автор | Сообщение |
|
| постоянный участник
|
Пост 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:....
|
|
|
Ответов - 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 , там как раз загрузка картинки из базы.
|
|
|
|
| постоянный участник
|
Пост N: 7324
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.23 09:22. Заголовок: Спасибо за ссылку. П..
Спасибо за ссылку. Посмотрел примеры, ну там и наворочено... Не знаю как и прикрутить это к ТСБ...
|
|
|
|
| |
Пост N: 1904
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.03.23 09:50. Заголовок: Andrey пишет: Посмо..
Andrey пишет: цитата: | Посмотрел примеры, ну там и наворочено... Не знаю как и прикрутить это к ТСБ |
| Ты притворяешься? Один из самых мелких примеров. Получить картинку из базы, грузнуть в память и получив хендл указать в uBmpCell. В примере картинку берут из базы sql запросом , с этой строки чуть ниже всего одна строчка кода для получения хендла. Удачи.
|
|
|
|
| постоянный участник
|
Пост N: 7325
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.23 10:22. Заголовок: Haz пишет: Ты притв..
Haz пишет: Да нет. Не совсем ясен будет механизм показа. Haz пишет: цитата: | Получить картинку из базы, грузнуть в память и получив хендл указать в uBmpCell |
| И как это сделать - грузнуть в память ? Если в базе будет 10 тыс. записей, то все картинки нужно будет грузить в память ? А она выдержит столько ? Пример давал выше - там все картинки уже в базе. Если не сложно, покажи пожалуйста на примере, как это сделать. Думаю, что и другим будет интересно.
|
|
|
|
| |
Пост N: 1905
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.03.23 10:41. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если в базе будет 10 тыс. записей, то все картинки нужно будет грузить в память |
| Хендл картинки нужен в момент прорисовки строки.Нет надобности весь миллиард держать в памяти. При желании можно динамичную подкачку сделать и загрузку хендлов в хеш по номеру записи на пару страниц бровса вверх и вниз и отслеживать диапазон по событиям бровса.
|
|
|
|
| |
Пост N: 1906
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.03.23 11:16. Заголовок: Andrey пишет: Не со..
Andrey пишет: цитата: | Не совсем ясен будет механизм показа. |
| LoadImage() в блоке ubmpCell вопросов же не вызовет с механизмом. И тут тоже самое, вместо LoadImage() функция freeimage которая выдаёт хендл по строке.
|
|
|
|
| |
Пост N: 1907
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.03.23 14:13. Заголовок: Haz пишет: FreeImag..
Haz пишет: Андрей! Плохие новости , через FI не получится в ТСБ скормить хендл картинки, ТСБ не понимает хендл возвращаемый FI_LoadImage...() Не трать время, ищи другой способ
|
|
|
|
| постоянный участник
|
Пост N: 7326
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.23 16:54. Заголовок: Haz пишет: Плохие н..
Haz пишет: цитата: | Плохие новости , через FI не получится в ТСБ скормить хендл картинки, ТСБ не понимает хендл возвращаемый FI_LoadImage...() Не трать время, ищи другой способ |
| Огромное СПАСИБО за то что проверил это. А то я бы ... и нифига бы не понял.
|
|
|
|
| |
Пост 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 )
|
|
|
|
| постоянный участник
|
Пост N: 7327
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.23 22:00. Заголовок: Haz пишет: В FW ест..
Haz пишет: цитата: | В FW есть функция загрузки битмапа из строки, в MG нет такой. |
| А взять такую функцию и добавить в МиниГуи можно ? Или кто-то поможет это сделать ? Без нарушения авторских прав FW....
|
|
|
|
| |
Пост N: 1909
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.03.23 23:13. Заголовок: Andrey пишет: А взя..
Andrey пишет: цитата: | А взять такую функцию и добавить в МиниГуи можно ? |
| Ну если кто возьмётся с код править, то можно добавить.
|
|
|
|
|
| постоянный участник
|
Пост N: 7328
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.03.23 11:14. Заголовок: Буду думать над этим..
Буду думать над этим вопросом. Может кто из наших форумчан поможет ?
|
|
|
|
| постоянный участник
|
Пост N: 7329
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.03.23 11:17. Заголовок: Ещё один вопрос по Т..
Ещё один вопрос по ТСБ. При первом показе ТСБ делаю показ ПУСТОЙ таблицы (ну юзер так привык), как а Экселе. Мешают/раздражают значки логического поля. Как их можно убрать на время ?
|
|
|
|
| |
Пост N: 1910
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.03.23 11:30. Заголовок: Andrey пишет: Как и..
Andrey пишет: цитата: | Как их можно убрать на время |
| oCol:bDecode := { lxl if( время не прошло, nil, x )}
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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, свои размеры колонок, эксель потом сам переформатирует колонки ?
|
|
|
|
| постоянный участник
|
Пост N: 4247
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.03.23 16:52. Заголовок: Andrey пишет Эксель ..
Andrey пишет цитата: | Эксель не закрыт, на экране висит. |
| Может и висит, но сообщение говорит, что в переменной oSheet нет объекта или он, метод, написан неверно, т.е. метод Columns не найден. Почему сразу не задаешь размеры, при описании колонок Header ? В конце формирования Sheet обычно делают AutoFit для выравнивания размеров колонок к размеру текстов в них
|
|
|
|
| постоянный участник
|
Пост 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 - было бы хорошо.... Но это опять править исходники МиниГуи надо.
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 7335
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.23 17:12. Заголовок: SergKis пишет: Зада..
SergKis пишет: цитата: | Задай bExtern, а oSheet, oBrw получишь. Твое |
| oRange:Columns:AutoFit() стоит после Eval( bExtern, oSheet, Self ) Наверное моя ширина колонок замениться ? Вот я про это и спрашиваю...
|
|
|
Ответов - 181
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|