On-line: PSP, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6477
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.10.19 17:14. Заголовок: Совместное использование терминалки и МиниГуи ?


Использую совместно прогу на терминалке и прогу на МиниГуи.
Базы оставил в RU866-кодировке.
Терминалка экран тоже в RU866-кодировке.
МиниГуи - тексты в RU1251

В терминалке в базе в текстовое поле пишу знак галочка "√" - CHR(251)
В тексте для МиниГуи как сделать проверку этого поля на этот знак ?
Достаточно ли будет:
USE TEST ALIAS TEMP VIA 'DBFCDX' NEW CODEPAGE 'RU866' 
? AT(CHR(251), TEMP->TRUBA ) > 0


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 18 [только новые]


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




Пост N: 7112
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.10.19 23:07. Заголовок: Andrey пишет: В тер..


Andrey пишет:

 цитата:
В терминалке в базе в текстовое поле пишу знак галочка "√" - CHR(251)


Пиши "L" или "N" (я про тип поля) а в бровсе показывай галочку или что тебе надо , тогда и таких
мега проверок увязанных с разницей кодировок делать не придется.
А вообще тебе виднее

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




Пост N: 6479
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.10.19 19:34. Заголовок: Я проверил, вроде ра..


Я проверил, вроде работает...
cRet := TEMP->TRUBA
IF AT(CHR(251),cRet) > 0
cRet := CharRepl(CHR(251),cRet,"#")
ENDIF
Т.е. для МиниГуи задачи знак галочка заменяю на "#"

А как сделать замену для БД соединённых по SET RELATION.
У меня 0 поле для терминалки внесены CHR(250), и при показе
в базах юзер сразу видит, что колонки справочников не заполнены.
Т.е. вот так в базе:


Если базу показываешь на МиниГуи, то это выглядит так:


Можно ли как то подменять это значение для SET RELATION ?
Я раньше делал перекодировку для МиниГуи, но нужно совместно использовать
базы - для терминалки и МиниГуи. Юзер не хочет пока переходить на новую программу,
привык к терминалке и всё тут.

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




Пост N: 2942
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.10.19 21:10. Заголовок: попробуй set relatio..


попробуй
 
set relation to ky into my
...
? GetFldRelatC( 'my->TRUBA', "RU866" )
...
FUNC GetFldRelat( cFld, cdp )
Local cdpo := hb_cdpSelect( cdp )
Local cval := &cFld
If chr(250) $ cval
cval := StrTran( cval, chr(250), '?' )
EndIf
hb_cdpSelect( cdpo )
RETURN hb_translate(cval, cdp, cdpo)


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




Пост N: 6480
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.10.19 23:56. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
попробуй


Спасибо !

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




Пост N: 6981
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.21 12:27. Заголовок: А как можно получить..


А как можно получить хендл терминалки из самой терминалки ?
Есть такая функция или нет ?
Хочу из терминалки через SendMessage() вызывать функции из своей проги на МиниГуи.

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




Пост N: 7407
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.21 19:38. Заголовок: попробуй HB_GTI_WIN..


попробуй
HB_GTI_WINHANDLE 69 /* Get console window low-level handle */

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




Пост N: 6982
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.07.21 17:04. Заголовок: Dima пишет: попробу..


Dima пишет:

 цитата:
попробуй


Спасибо !

Нашёл функцию для хХарбора. Забыл его уже....
hWnd := GetForegroundWindow()


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




Пост N: 7408
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.07.21 18:42. Заголовок: Andrey пишет: hWnd ..


Andrey пишет:

 цитата:
hWnd := GetForegroundWindow()


Точно , совсем забыл про нее , сам юзаю
 
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
HB_FUNC (GETFOREGROUNDWINDOW)
{
HWND hWnd = GetForegroundWindow();
hb_retnl ((LONG) hWnd);
}

#pragma ENDDUMP



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




Пост N: 6984
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.21 11:39. Заголовок: Засада с вызовом из ..


Засада с вызовом из терминалки хХарбора функций МиниГуи через SendMessage().
Окно на МиниГуи поднимается, а вот вызвать MsWord не получается, пишет ошибку:
         MS Word не доступен !  Ошибка:  [ 0x8001010d ]

Вот код:
   // Используем Ole из HBWIN.lib 
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) == NIL
IF lLog
cMsg := "MS Word не доступен ! Ошибка: "
cMsg += " [ " + win_oleErrorText() + " ]"
STRFILE( cMsg + CRLF, cFileLog,.T.)
ENDIF
RETURN Nil
ENDIF

Если вызывать это же окно из самого МиниГуи через SendMessage(), то ошибки нет !
Куда копать, чтобы заработал Word ?

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




Пост N: 7410
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.21 14:07. Заголовок: Andrey пишет: MS W..


Andrey пишет:

 цитата:
MS Word не доступен ! Ошибка: [ 0x8001010d ]


Это в терминалке Xharbour такое пишет ?
Не в потоке (MT) случайно такой вызов стоит ?
Несколько лет назад в потоке Harbour , точно не работал win_oleCreateObject
и тоже была ошибка. Позже по тихому исправили.
А Xharbour у тебя я так понимаю наидревнейший.

А вот и тема http://clipper.borda.ru/?1-4-0-00000879-000-0-0-1374672857

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




Пост N: 6986
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.21 17:35. Заголовок: Dima пишет: Это в т..


Dima пишет:

 цитата:
Это в терминалке Xharbour такое пишет ?
Не в потоке (MT) случайно такой вызов стоит ?



Нет. Это хХарбор через SendMessage() поднимает окно ПЕЧАТИ в МиниГуи.
А в этом окне кнопочка вызова Ворда.
Вот она и не работает.
Кстати прогу на МиниГуи собираю всегда с ключом -mt
Вот через хХарбор и не запускается Ворд.

Если сделать SendMessage() в самой проге на МиниГуи, то после поднятия окна ПЕЧАТИ в МиниГуи,
кнопка вызова Ворда отрабатывет нормально. Т.е. Ворд поднимается через Олю и работает стабильно.

Пытаюсь сейчас сделать проект на чистом Харборе из минигуи.
Как в файле проекта Terminal.hbp указать ключи для сборки - Console mode ?
Для батника знаю ключи compile.bat Terminal /c /nx
Мне нужно для Terminal.hbp

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




Пост N: 6988
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.21 21:04. Заголовок: Сделал проект где по..


Сделал проект где показывается такая ошибка !
https://cloud.mail.ru/public/w6Jp%2FgJ13qW1sp

Т.е. при вызове из терминалки (окно вызывается само каждые 3 сек.) в окне печати не запускается Ворд !
Как это победить ?

Не хочется делать отдельный ехе-ник.

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




Пост N: 3784
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.07.21 20:38. Заголовок: Andrey пишет Как это..


Andrey пишет
 цитата:
Как это победить ?


Примерно так (hmg модуль)
 
...
:Event(20, {|ow,aR,cdata| This.Btn_Prn.Enabled := .F. ,;
Darken2Open(wMain.Handle) ,; // Затенение на форме
aR := Test_Prn(, cdata) ,;
Darken2Close(wMain.Handle) ,; // Затенение на форме
wMain.Btn_Prn.Enabled := .T. ,;
ow:SetFocus('Label_0') } )
...
FUNCTION myApp_OnEvents( hHwnd, nMsg, wParam, lParam )
LOCAL cData, nDataID

IF nMsg == WM_COPYDATA
cData := GetMessageData( lParam, @nDataID )
DO EVENTS
_wPost(20, "wMain", cData)
//OnWmCopyData(cData)
ENDIF

// Затенение на форме / Darken -> overlay.cpp
// OverlayWndProc(hHwnd, nMsg, wParam, lParam)

RETURN Events( hHwnd, nMsg, wParam, lParam)
...
FUNCTION Test_Prn(aDim, cData)
LOCAL cTitle, aBackColor, cFont, nFontSize, cText, lBold
LOCAL nI, nY, nX, nW, nH, nG, cN, aBtn, nBtnH, nBtnW, nFsize
LOCAL cMsg := ""

DEFAULT aDim := {}, cData := ""

aBtn := {} // Menu name ExtFuncRun Icons
AADD( aBtn, {"Menu for MS Word" , "MyTest(1)", "iBug48x1","iBug48x2"} )
AADD( aBtn, {"Menu for .log file" , "MyTest(2)", "iBug48x1","iBug48x2"} )

cTitle := "Test Menu for MS Word"
cFont := 'Tahoma' ; nFontSize := 20
nY := nX := nG := 20 ; nW := 550 ; nH := 450 ; nBtnH := 56
aBackColor := { 118, 170, 235 }
IF LEN(aDim) > 0
cMsg := " - call from " + APPCLIENT
aBackColor := { 151, 0,160 }
ENDIF
IF !Empty(cData) ; cMsg += " "+cData
ENDIF

...


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




Пост N: 6990
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.21 10:42. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Примерно так (hmg модуль)


Супер ! Спасибо БОЛЬШОЕ !
А почему через функцию не пошло ?

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




Пост N: 3785
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.21 10:45. Заголовок: Andrey пишет А почем..


Andrey пишет
 цитата:
А почему через функцию не пошло ?


Ты функцией захватил обработчик событий и не отпускаешь его

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




Пост N: 6991
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.21 10:50. Заголовок: SergKis пишет: Ты ф..


SergKis пишет:

 цитата:
Ты функцией захватил обработчик событий и не отпускаешь его


А для своего проекта тогда мне нужно на главной форме сделать ОТДЕЛЬНОЕ событие и работать через него ?

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




Пост N: 3786
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.21 11:02. Заголовок: Да. И запуск notepad..


Да. И запуск notepad и др. внешние запуски, так же можно вынести туда и с любого места посылать сообщение главному окну с параметрами запуска (вместо cdata - строка может быть массив значений). Пример
_wPost(20, "wMain", {nDataID, cData})
Из терминалки можешь посылать номер события, которое надо выполнить на главном окне и если событие с таким номером зарегистрировано на окне, оно выполнится

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




Пост N: 6993
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.07.21 18:56. Заголовок: SergKis пишет: Из т..


SergKis пишет:

 цитата:
Из терминалки можешь посылать номер события, которое надо выполнить на главном окне и если событие с таким номером зарегистрировано на окне, оно выполнится



Мне больше нравится одно общее событие, допустим _wPost(111, "wMain", cData ),
а там дальше уже буду разбирать что пришло.

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

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