Автор | Сообщение |
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:....
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[см. все]
|
|
Andrey
|
| постоянный участник
|
Пост N: 5786
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.03.18 20:15. Заголовок: SergKis пишет: Убра..
SergKis пишет: Поторопился я ... Как всегда.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5788
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.03.18 15:35. Заголовок: Сделал пример ! Tsb ..
Сделал пример ! Tsb кладу на уже готовую форму в другом модуле. Всё показывает нормально, кроме вертикального скролинга. Должен быть, а не показывает при старте. Если стрелками(мышкой) подёргать, то линия скролинга появляется... обгрызанная, без стрелки вверху и внизу. Можно ли как то перерисовать весь вертикальный скролинг ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5827
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.18 11:36. Заголовок: Новая версия МиниГуи..
Новая версия МиниГуи - 18.04 Метод oBrw:ExcelOle(). При экспорте в таблице столбец с номерами домов (примерно такой порядок: 1, 2, 5, 9/2 и т.д.) неправильно экспортирует. Превращает этот столбец в 1,2,5, 09 февраля. Григорий, я сделаю тестовый пример с этим и вышлю на почту.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5829
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.18 23:03. Заголовок: Как указать правильн..
Как указать правильно формат показа в Tsbrowse для текстового поля (значения "123300") по шаблону "@R 99:99:99" ? Для числового поля показ идёт правильный, а как задать такой же шаблон для текстового поля ? Если создаём aPict := { nil, nil, nil, nil, nil, "@R 99:99:99", nil } и передаём в oBrw:SetArrayTo(aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName) То показ 6 колонки будет так - " 123300" Если сделать oBrw:SetArrayTo(aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName) oBrw:aColumns[6]:cPicture := '@R 99:99:99' То показ в 6 колонке будет уже " 12:33:00" Опять глюк нашёл в Tsb ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1806
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.18 00:17. Заголовок: Andrey пишет Опять г..
Andrey пишет Это от того, что игнорируешь исходники. :SetArrayTo не обрабатывает сложные Picture, а делает расчет ширины колонок для размещения правильно данных header, строк, footer (что бы помещалось все в колонке при просмотре), превращая Picture в простой вид для строки к примеру cPict := Replicate( "X", Len( ::aDefValue[ nI ] ) ). Все что не устраивает, в полученном варианте, правишь сам после создания тсб. К примеру, в массиве в колонке мах длина всех элементов 20 символов, но в процессе работы может быть 30 длина, тогда можешь регулировать колонкой задав ширину в пикселях или задав aPict[6] := repl('X', 30), ::aDefValue[ 6 ], будет от заданного aPict[6].
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5833
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.04.18 20:07. Заголовок: Предложение по METHO..
Предложение по METHOD Excel2() - сделать как у METHOD ExcelOle() в самом конце метода: If lActivate ShellExecute( 0, "Open", If( lSave, cFile, cWork ),,, 3 ) EndIf ::Display() If hProgress != Nil SendMessage( hProgress, PBM_SETPOS, 0, 0 ) EndIf Return Nil В METHOD ExcelOle() предлагаю сделать в самом начале: Default lSave := ! lActivate .and. ! Empty( cXlsFile ), ; cXlsFile := "", ; hFntTitle := hFont CursorWait() // Check the file name for the number of points If AtNum( ".", HB_FNameName( cFile ) ) > 0 cMsg := 'Calling from: ' + ProcName(0) + '(' + hb_ntos( ProcLine(0) ) cMsg += ') --> ' + ProcFile(0) + ';;' cMsg += 'Output File Name - "' + HB_FNameName( cFile ) + '";' cMsg += 'contains several signs dot !;' cMsg += 'Excel can "truncate" the file name !;;' cMsg := AtRepl( ";", cMsg, CRLF ) MsgStop( cMsg , "Error" ) Endif If ::lSelector Только это обязательно нужно сделать, я ОЧЕНЬ ДОЛГО не мог понять почему у меня режет имя файла, а на некоторых компах нет ! Чтобы потом другим было легче это понять !!! Если в имени файла использовать несколько точек, то САМ EXCEL "режет" имя файла. Можно конечно сделать немного по другому: переименовать входящее имя файла, но тогда нужно будет потом закрывать Ole-Эксель, и открывать его заново с переименованным файлом. Не очень красивое решение здесь для Экселя. Этот вариант сделал для Экспорта Dbf-файла.
|
|
|
Haz
|
| |
Пост N: 1228
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.04.18 23:28. Заголовок: Andrey пишет: пред..
Andrey пишет: Поддержу Андрея. По первому предложению лишним не будет. В принципе хорошийстиль за собой все проводить в исходное состояние. По второму думаю все сложнее, проблема может быть не только в количестве точек. Как вариант - может сообщать о недопустимости такого имени файла, а со временем критерии могут быть расширены.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1807
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.04.18 00:34. Заголовок: Andrey пишет If AtNu..
Andrey пишет цитата: | If AtNum( ".", HB_FNameName( cFile ) ) > 0 ... |
| Не уверен, скорее уверен, что этого в ExelOle делать не надо. Как пишет Игорь варианты возможны разные, все не засунешь, да и процедура ExelOle вызывается где то, вот там как надо и лепим имя файла, если очень надо, то и excel можно запустить отдельно не в ExcelOle. Второе предложение это перегруз
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5835
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.04.18 17:15. Заголовок: SergKis пишет: проц..
SergKis пишет: цитата: | процедура ExelOle вызывается где то, вот там как надо и лепим имя файла, если очень надо, то и excel можно запустить отдельно не в ExcelOle. Второе предложение это перегруз |
| Я проверял поведение Excel. Имя файла с несколькими точками - режется ТОЛЬКО при вызове через OLE ! Если делать вызов Excel по другому, то всё нормально. Меню экспорта 1 и 3 в программе работает нормально. В конце метода ExcelOle() вызов экселя запускается НЕ ОТДЕЛЬНО !!! If ! Empty( cXlsFile ) .and. lSave oBook:SaveAs( cXlsFile, xlWorkbookNormal ) // вот здесь и режется... If ! lActivate CursorArrow() oExcel:Quit() ::Reset() Return Nil EndIf EndIf CursorArrow() If lActivate oSheet:Range( "A1" ):Select() oExcel:Visible := .T. // показ Экселя EndIf Из-за этого я и предлагаю для ЭТОГО варианта разместить предупреждения, чтобы потом кто-то не налетел на ! Я Григория замучил - что режется имя файла, месяца 2 не мог понять почему. А решение оказывается совсем ПРОСТОЕ !
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1404
Зарегистрирован: 27.01.07
|
|
Отправлено: 22.04.18 20:14. Заголовок: Андрей, нужно абстра..
Андрей, нужно абстрагироваться от конкретного случая. Все обработки вариантов нужно делать "до того, как". Методу нужно предоставить данные в том виде, в котором они будут на 100% обработаны предсказуемым образом без всяких MsgStop(...)
|
|
|
Dima
|
| |
Пост N: 6817
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.04.18 21:24. Заголовок: PSP +1..
PSP +1
|
|
|
|
Haz
|
| |
Пост N: 1229
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.04.18 20:38. Заголовок: PSP пишет: Все обра..
PSP пишет: цитата: | Все обработки вариантов нужно делать "до того, как" |
| +500 Под конкретный случай, нужно конкретно и решать
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5836
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.18 15:10. Заголовок: Andrey пишет: Новая..
Понял ваше мнение ! Andrey пишет: цитата: | Новая версия МиниГуи - 18.04 Метод oBrw:ExcelOle(). При экспорте в таблице столбец с номерами домов (примерно такой порядок: 1, 2, 5, 9/2 и т.д.) неправильно экспортирует. Превращает этот столбец в 1,2,5, 09 февраля. |
| А как это исправить ? В методе :Excel2(...) выгрузка идёт правильно.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5837
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.18 18:32. Заголовок: Пробовал задавать яв..
Пробовал задавать явно формат столбца, всё равно не помогает. // только для 6 и 10 колонки oBrw:aColumns[6]:cPicture := '@R 99:99:99' // без этого нет показа в колонке ":" oBrw:aColumns[10]:cPicture := 'xxxxxxxxx'
|
|
|
Dima
|
| |
Пост N: 6818
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.04.18 18:44. Заголовок: Andrey глянь..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5838
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.18 21:28. Заголовок: Спасибо Дима ! Не по..
Спасибо Дима ! Не получается... добавить перед числом апостроф (‘). Например: ’11-53 или ‘1/47. Апостроф не отображается после нажатия клавиши ВВОД; Поставил в колонке 10 апостроф (‘) - выгружате через Оле-Эксель так же ‘3/2 или ‘9/3 Конечно как самый примитив пойдёт, только юзера будут очень недовольны таким номером дома... Можно сделать первым символом знак "_" или "~" ставить. Но потом бы из документа этот знак желательно убрать... Тогда нужно ставить обработку удаления, после вставки из буфера... А лучше надо бы в конвертацию формата для текстового поля явно в исходниках указать, типа: oSheet:Cells( nLine, nI ):SET( "NumberFormat", '@' ) // текстовая ячейка Пытался разобраться сaм, ничего не понял... Там идёт накопление в буфер, а потом идёт вставка из буфера. Как до этого указать формат столбца не знаю.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5839
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.18 22:13. Заголовок: Ура ! Получилось... ..
Ура ! Получилось... Нужна правка в исходнике h_tbrowse.prg: For nCol := 1 To Len( ::aColumns ) If aColSel != Nil .and. AScan( aColSel, nCol ) == 0 Loop EndIf uData := Eval( ::aColumns[ nCol ]:bData ) If ValType( uData ) == "C" oSheet:Cells( nLine, nCol ):SET( "NumberFormat", '@' ) // text cell EndIf If ValType( uData ) == "C" .and. At( CRLF, uData ) > 0 uData := StrTran( uData, CRLF, "&&" ) If AScan( aRepl, nCol ) == 0 AAdd( aRepl, nCol ) EndIf EndIf В METHOD ExcelOle() предлагаю сделать эту правку ! Pasha пишет: цитата: | Как вариант: перед заполнением таблицы по строкам можно установить NumberFormat для тех столбцов, для которых это надо, т.е: |
|
|
|
|
Dima
|
| |
Пост N: 6819
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.18 08:39. Заголовок: Andrey пишет: SET( ..
Andrey пишет: цитата: | SET( "NumberFormat", '@' ) |
| Может не сработать в ряде случаев когда много цифр в ячейке и Excel по своему покажет
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5840
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.18 13:27. Заголовок: Dima пишет: Может н..
Dima пишет: цитата: | Может не сработать в ряде случаев когда много цифр в ячейке и Excel по своему покажет |
| В каких случаях ? Я тестировал столбец из номеров домов - вида: 1,2,3/2, 4, 5/3, 6А, 112Б, 94 стр.3 и т.д. ТОЛЬКО для текстового столбца делаю формат :SET( "NumberFormat", '@' ) // text cell Остальные столбцы НЕ ТРОГАЮ.
|
|
|
Dima
|
| |
Пост N: 6820
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.18 13:43. Заголовок: Andrey пишет: В как..
Andrey пишет: Да был случай лет 5 назад , вываливал в Excel коды морозильных камер (штук 500 примерно) В этих кодах были цифры , пробелы , точки и тире. Все коды разные. Из 500 штук , штуки 3 всегда показывало криво , и шаблон подобрать не удалось (руками тоже пробовали) . PS Это был файл формата CSV
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[см. все]
|
|