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:....

























<a href=http://www.bestmarket.com.ua >ноутбуки</a>























<a href=http://www.bestmarket.com.ua >ноутбуки</a>
Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 279 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]


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




Пост N: 5874
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.18 18:56. Заголовок: Вспомнил про ещё оди..


Вспомнил про ещё один баг в METHOD ExcelOle() !

После создания xls файла, сам Эксель уходин на второй план, т.е. под окно этого экспорта.
Юзера ЗЛЯТСЯ ОЧЕНЬ на это !!!
Для исправления этого нужно сделать так:
   CursorArrow() 

::Reset()

If hProgress != Nil
SendMessage( hProgress, PBM_SETPOS, 0, 0 )
EndIf

If lActivate
oExcel:Visible := .T.
hWnd := oExcel:hWnd
ShowWindow( hWnd, 6 ) // MINIMIZE windows
INKEYGUI(100)
ShowWindow( hWnd, 3 ) // MAXIMIZE windows
BringWindowToTop( hWnd )
Else
oExcel:Application:Quit()
EndIf

//::Reset()

//If hProgress != Nil
// SendMessage( hProgress, PBM_SETPOS, 0, 0 )
//EndIf

Return Nil

Такой код оставляет ЭКСЕЛЬ на переднем плане.

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





Пост N: 55
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 18.05.18 08:32. Заголовок: Andrey пишет: Вспом..


Andrey пишет:

 цитата:
Вспомнил про ещё один баг в METHOD ExcelOle()



А в

oExcel := TOleAuto():New( "Excel.Application" )

можно получить такой же же эффект, что бы при создание Excel вылетал на передний план ?


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




Пост N: 5876
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.05.18 09:42. Заголовок: Alex_Cher пишет: мо..


Alex_Cher пишет:

 цитата:
можно получить такой же же эффект, что бы при создание Excel вылетал на передний план ?


Да. Делай последние строчки так же как METHOD ExcelOle() и получишь такой же результат.

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




Пост N: 5877
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.05.18 18:13. Заголовок: Может такой код нужн..


Может такой код нужно ставить, чтобы Эксель оставался на экране:
   If lActivate 
oExcel:Visible := .T.
If VAL( oExcel:Version ) <= 13 // Excel 2003
ShowWindow( oExcel:hWnd, 6 ) // MINIMIZE windows
ShowWindow( oExcel:hWnd, 3 ) // MAXIMIZE windows
Endif
Try
BringWindowToTop( oExcel:hWnd ) // a window on the foreground
End Try
Else
oExcel:Application:Quit()
EndIf


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





Пост N: 56
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 21.05.18 08:01. Заголовок: Andrey пишет: Делай..


Andrey пишет:

 цитата:
Делай последние строчки так же как METHOD ExcelOle()



Андрей, неверное я что-то не догоняю, с сырцах не нашел метод TOleAuto():
и куда добавлять ...?


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




Пост N: 5882
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.18 13:11. Заголовок: Alex_Cher пишет: не..


Alex_Cher пишет:

 цитата:
неверное я что-то не догоняю, с сырцах не нашел метод TOleAuto():
и куда добавлять ...?


Этот код добавляй в свою программу.
Я писал про METHOD ExcelOle() который находиться MiniGUI\SOURCE\TsBrowse\h_tbrowse.prg
Но этот метод Григорий исправит и будет достен в следующей версии.

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




Пост N: 5883
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.18 19:44. Заголовок: Нашёл ещё один баг в..


Нашёл ещё один баг в METHOD ExcelOle():

При многострочном построении Tsbrowsa при экспорте - получается так:


Хотя таблица выглядеть должна примерно так:


Как и где исправить код для этого метода ?

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





Пост N: 57
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 25.05.18 07:56. Заголовок: Andrey пишет: Этот ..


Andrey пишет:

 цитата:
Этот код добавляй в свою программу.



Андрей с Excel все получилось ... , почему с Word не получается -

oWord:Visible := .T.
hWnd := oWord:hWnd
ShowWindow( hWnd, 6 ) // MINIMIZE windows
INKEYGUI(100)
ShowWindow( hWnd, 3 ) // MAXIMIZE windows
BringWindowToTop( hWnd )


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




Пост N: 5884
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.18 15:43. Заголовок: Alex_Cher пишет: по..


Alex_Cher пишет:

 цитата:
почему с Word не получается -


Там фигня с Вордом. Я делаю так:
   If lActivate 
oText:HomeKey(wdStory) // в начало текста
oWord:Visible := .T.
SetWordWindowToForeground(oWord) // окно Word на передний план
EndIf

RETURN NIL

//////////////////////////////////////////////////////////////////////
// окно Word на передний план
FUNCTION SetWordWindowToForeground(oWord)
LOCAL hWnd, nVer, cCaption, cTitle

// ------------------- поиск ХЕНДЛА открытого окна документа --------------
hWnd := 0
nVer := VAL( oWord:Version ) // Версия Word
IF nVer > 14 // Word 2010
hWnd := oWord:ActiveDocument:ActiveWindow:Hwnd
ELSE
//hWnd:=oWord:hwnd - так делать нельзя !
cCaption := oWord:Windows[1]:Caption
cTitle := cCaption + " - MICROSOFT WORD"
hWnd := FindWindowEx(,,, cTitle )
IF hWnd == 0
cTitle := cCaption + " [Режим ограниченной функциональности] - MICROSOFT WORD"
hWnd := FindWindowEx(,,, cTitle )
ENDIF
ENDIF

IF hWnd > 0
ShowWindow( hWnd, 6 ) // MINIMIZE windows
ShowWindow( hWnd, 3 ) // MAXIMIZE windows
BringWindowToTop( hWnd ) // A window on the foreground
ENDIF

RETURN NIL

Смотри пример DBF_to_DOC_03.7z на https://abonent4.ru/minigui/

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





Пост N: 58
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 28.05.18 10:14. Заголовок: Andrey пишет: Там ф..


Andrey пишет:

 цитата:
Там фигня с Вордом. Я делаю так:



Все получилось, Андрей, большое тебе спасибо ....!

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




Пост N: 5925
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.18 19:32. Заголовок: Модуль h_tbrowse.prg..


Модуль h_tbrowse.prg, METHOD ExcelOle(...)
Нафига там где то посередке стоит:
   If ::lIsDbf 
( ::cAlias )->( DbGoTo( nRecNo ) )
::GoPos( nOldRow, nOldCol )
EndIf
::nAt := nAt


Всё равно при выходе стоит - ::Reset()




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




Пост N: 5926
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.18 12:52. Заголовок: Если в методе ExcelO..


Если в методе ExcelOle(...) стоит функция доп.обработки
 
If bExtern != Nil
Eval( bExtern, oSheet, Self )
EndIf

В ней также можно перемещаться по tsbrowse, то наверное вот этот кусок:
   If ::lIsDbf  
( ::cAlias )->( DbGoTo( nRecNo ) )
::GoPos( nOldRow, nOldCol )
EndIf
::nAt := nAt

- нужно ставить уже после этой If bExtern != Nil ?
Или я не прав ?



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



Пост N: 1899
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.18 12:58. Заголовок: Andrey пишет нужно с..


Andrey пишет
 цитата:
нужно ставить уже после этой If bExtern != Nil ?


Я бы сказал "нужно ставить уже и после этой If bExtern != Nil ? "

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




Пост N: 5927
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.18 14:36. Заголовок: Понял ! Спасибо ! :..


Понял ! Спасибо !
Буду у себя так делать.
Осталось Григорию у себя в библиотеке поменять...

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




Пост N: 5928
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.06.18 17:55. Заголовок: Всем привет ! Можно ..


Всем привет !
Можно ли как то на лету изменить таблицу с параметром SELECT .T. или вообще без него ?
Т.е. строиться таблица с SELECT .T., а потом его нужно удалить/восстановить.

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




Пост N: 5931
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.06.18 19:04. Заголовок: Понял, что нельзя. ..


Понял, что нельзя.

Ещё вопрос про селектор.
Нашёл баг по редко встречающему условию.

METHOD ExcelOle() используем таблицу с селектором.
При экспорте делаем так:
   CursorWait() 

If ::lSelector
::aClipBoard := { ColClone( ::aColumns[ 1 ], Self ), 1, "" }
::DelColumn( 1 )
::lSelector :=.F. // нужно сделать !!!
EndIf


Нужно тогда ::lSelector делать .F. - иначе при вызове доп.функции:
   If bExtern != Nil 
Eval( bExtern, oSheet, Self )
EndIf

При проверке ::lSelector будет возвращать всегда .T. - что неправильно !!!

И разместить как я предлагал доп.функцию уже в самом конце:
   oSheet:Range( "A1" ):Select() 

If hProgress != Nil
SendMessage( hProgress, PBM_SETPOS, nTotal, 0 )
EndIf

If bExtern != Nil
Eval( bExtern, oSheet, Self )
EndIf

If ::lIsDbf
( ::cAlias )->( DbGoTo( nRecNo ) )
::GoPos( nOldRow, nOldCol )
EndIf

::nAt := nAt


If ! Empty( cXlsFile ) .and. lSave


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




Пост N: 5960
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.18 16:50. Заголовок: Всем привет ! Вот к..


Всем привет !

Вот кусок кода для Tsbrowse:
   LOCAL nRecNo := ( oBrw:cAlias )->( RecNo() ), nAt := oBrw:nAt 
LOCAL nOldRow := oBrw:nLogicPos(), nOldCol := oBrw:nCell
........
For nRow := 1 TO oBrw:nLen
.....
oBrw:Skip(1)
Next
.....
oBrw:Reset() // вариант 1

If oBrw:lIsDbf
( oBrw:cAlias )->( DbGoTo( nRecNo ) )
oBrw:GoPos(nOldRow, nOldCol)
EndIf
oBrw:nAt := nAt

oBrw:Reset() // вариант 2
....

Куда ставить oBrw:Reset() ? По варианту 1 или по варианту 2 ?


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


Пост N: 1273
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.07.18 17:36. Заголовок: Andrey пишет: Куда ..


Andrey пишет:

 цитата:
Куда ставить oBrw:Reset()



Посмотреть что делает ::Reset() потом на свой кусок кода и понимание придет само
 
METHOD Reset(lBottom)
...
If lBottom
::GoBottom()
ElseIf ::lInitGoTop
::GoTop()
EndIf
::Refresh( .T., .T. )

If ::bChange != Nil
Eval( ::bChange, Self, 0 )
EndIf

Return Self



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




Пост N: 5961
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.18 18:09. Заголовок: А зачем тогда нужно ..


А зачем тогда нужно делать:
LOCAL  nAt := oBrw:nAt  
...
oBrw:nAt := nAt


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


Пост N: 1274
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.07.18 20:22. Заголовок: Andrey пишет: зачем..


Andrey пишет:

 цитата:
зачем тогда нужно делать:
LOCAL nAt := oBrw:nAt


При бровсе по массиву gopos не выполнится, а перед этим был skip()

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

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