On-line: alex_II, LYSK, SergKis, Мирослав, гостей 0. Всего: 4 [подробнее..]
АвторСообщение
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: 5786
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.03.18 20:15. Заголовок: SergKis пишет: Убра..


SergKis пишет:

 цитата:
Убрал в самый низ


Поторопился я ... Как всегда.

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




Пост N: 5788
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.03.18 15:35. Заголовок: Сделал пример ! Tsb ..


Сделал пример !
Tsb кладу на уже готовую форму в другом модуле.
Всё показывает нормально, кроме вертикального скролинга. Должен быть, а не показывает при старте.
Если стрелками(мышкой) подёргать, то линия скролинга появляется... обгрызанная, без стрелки вверху и внизу.
Можно ли как то перерисовать весь вертикальный скролинг ?

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




Пост N: 5827
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.04.18 11:36. Заголовок: Новая версия МиниГуи..


Новая версия МиниГуи - 18.04
Метод oBrw:ExcelOle().
При экспорте в таблице столбец с номерами домов (примерно такой порядок: 1, 2, 5, 9/2 и т.д.) неправильно экспортирует.
Превращает этот столбец в 1,2,5, 09 февраля.
Григорий, я сделаю тестовый пример с этим и вышлю на почту.

Спасибо: 0 
Профиль
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 ?


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




Пост N: 1806
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.18 00:17. Заголовок: Andrey пишет Опять г..


Andrey пишет
 цитата:
Опять глюк нашёл в Tsb ?


Это от того, что игнорируешь исходники.
:SetArrayTo не обрабатывает сложные Picture, а делает расчет ширины колонок для размещения правильно данных header, строк, footer (что бы помещалось все в колонке при просмотре), превращая Picture в простой вид для строки к примеру
cPict := Replicate( "X", Len( ::aDefValue[ nI ] ) ).
Все что не устраивает, в полученном варианте, правишь сам после создания тсб.

К примеру, в массиве в колонке мах длина всех элементов 20 символов, но в процессе работы может быть 30 длина, тогда можешь регулировать колонкой задав ширину в пикселях или задав aPict[6] := repl('X', 30), ::aDefValue[ 6 ], будет от заданного aPict[6].



Спасибо: 0 
Профиль
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-файла.


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




Пост N: 1228
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.04.18 23:28. Заголовок: Andrey пишет: пред..


Andrey пишет:

 цитата:
предлагаю сделать


Поддержу Андрея.
По первому предложению лишним не будет. В принципе хорошийстиль за собой все проводить в исходное состояние.
По второму думаю все сложнее, проблема может быть не только в количестве точек. Как вариант - может сообщать о недопустимости такого имени файла, а со временем критерии могут быть расширены.



Спасибо: 0 
Профиль
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. Второе предложение это перегруз

Спасибо: 0 
Профиль
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 не мог понять почему.
А решение оказывается совсем ПРОСТОЕ !


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


Пост N: 1404
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 22.04.18 20:14. Заголовок: Андрей, нужно абстра..


Андрей, нужно абстрагироваться от конкретного случая. Все обработки вариантов нужно делать "до того, как". Методу нужно предоставить данные в том виде, в котором они будут на 100% обработаны предсказуемым образом без всяких MsgStop(...)

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




Пост N: 6817
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.04.18 21:24. Заголовок: PSP +1..


PSP
+1

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




Пост N: 1229
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.04.18 20:38. Заголовок: PSP пишет: Все обра..


PSP пишет:

 цитата:
Все обработки вариантов нужно делать "до того, как"


+500
Под конкретный случай, нужно конкретно и решать

Спасибо: 0 
Профиль
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(...) выгрузка идёт правильно.

Спасибо: 0 
Профиль
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'


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




Пост N: 6818
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.04.18 18:44. Заголовок: Andrey глянь..


Andrey
глянь

Спасибо: 0 
Профиль
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м, ничего не понял...
Там идёт накопление в буфер, а потом идёт вставка из буфера.
Как до этого указать формат столбца не знаю.


Спасибо: 0 
Профиль
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 для тех столбцов, для которых это надо, т.е:



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




Пост N: 6819
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.18 08:39. Заголовок: Andrey пишет: SET( ..


Andrey пишет:

 цитата:
SET( "NumberFormat", '@' )


Может не сработать в ряде случаев когда много цифр в ячейке и Excel по своему покажет

Спасибо: 0 
Профиль
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
Остальные столбцы НЕ ТРОГАЮ.

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




Пост N: 6820
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.18 13:43. Заголовок: Andrey пишет: В как..


Andrey пишет:

 цитата:
В каких случаях ?


Да был случай лет 5 назад , вываливал в Excel коды морозильных камер (штук 500 примерно)
В этих кодах были цифры , пробелы , точки и тире. Все коды разные. Из 500 штук , штуки
3 всегда показывало криво , и шаблон подобрать не удалось (руками тоже пробовали) .

PS
Это был файл формата CSV

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