Boa tarde colegas
Faz um bom tempo vi que havia uma função ALERT(), ou NEWALERT() ou ainda ALERTNEW() que permitia estabelecer a sua posição na tela, e NÃO encontro mais.
Alguém lembra ou usa ?
ALERT() posicionável
Moderador: Moderadores
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
ALERT() posicionável
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
ALERT() posicionável
Acabei de encontrar:
Trata-se da FUNCTION MYALERT() disponibilizado por
/*
* Pritpal Bedi <bedipritpal@hotmail.com>
*/
está em:
..\Hmg.3.4.3\HARBOUR\contrib\gtwvg\tests\_modal.prg
A dificuldade é que está escrito para uso em GTWVG e preciso em Harbour nativo, podendo ser como uma função externa.
Trata-se da FUNCTION MYALERT() disponibilizado por
/*
* Pritpal Bedi <bedipritpal@hotmail.com>
*/
está em:
..\Hmg.3.4.3\HARBOUR\contrib\gtwvg\tests\_modal.prg
A dificuldade é que está escrito para uso em GTWVG e preciso em Harbour nativo, podendo ser como uma função externa.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
ALERT() posicionável
Porque não usa a função wapi_MessageBox?
Pode encontrar mais info aqui:
https://pctoledo.org/forum/viewto ... =4&t=19647
Pode encontrar mais info aqui:
https://pctoledo.org/forum/viewto ... =4&t=19647
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ALERT() posicionável
As funções do Harbour tem fonte, nos fontes do Harbour.
Baixe e altere.
Ela deve usar as definições Top, Bottom, Left, Right, só alterar as posições.
Talvez alterar pra receber dois parâmetros indicando inicio/fim/centro pra altura e largura, indicando alinhamento, se isso resolver.
Na vertical pode querer encima, no meio ou embaixo.
Na horizontal pode querer no início, no meio ou no fim.
Não é tão complexo:
se for no início então inicio = 0, se for no meio inicio = ( total - largura ) / 2, e se for no fim inicio = total - tamanho
Alert( text, options, ALERT_STYLE_CENTER, ALERT_STYLE_CENTER )
Baixe e altere.
Ela deve usar as definições Top, Bottom, Left, Right, só alterar as posições.
Talvez alterar pra receber dois parâmetros indicando inicio/fim/centro pra altura e largura, indicando alinhamento, se isso resolver.
Na vertical pode querer encima, no meio ou embaixo.
Na horizontal pode querer no início, no meio ou no fim.
Não é tão complexo:
se for no início então inicio = 0, se for no meio inicio = ( total - largura ) / 2, e se for no fim inicio = total - tamanho
Alert( text, options, ALERT_STYLE_CENTER, ALERT_STYLE_CENTER )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
ALERT() posicionável
Boa noite Quintas.
Primeiramente, Obrigado pela atenção.
Qual a versão mínima necessária ?
Tenho instalado o Harbour 3.2.0 - Dev (r1601151502)
Uso o compilador MinGW GNU C 4.6.1 (32-bit)
Esta tua sugestão NÃO funcionou, apesar das dezenas de tentativas com alterações dos parâmetros.
Não apresentou qualquer erro.
A saída sempre foi a mesma, como se não existisse qualquer parâmetro.
Primeiramente, Obrigado pela atenção.
Qual a versão mínima necessária ?
Tenho instalado o Harbour 3.2.0 - Dev (r1601151502)
Uso o compilador MinGW GNU C 4.6.1 (32-bit)
Esta tua sugestão NÃO funcionou, apesar das dezenas de tentativas com alterações dos parâmetros.
Não apresentou qualquer erro.
A saída sempre foi a mesma, como se não existisse qualquer parâmetro.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ALERT() posicionável
Talvez pegar fonte do do Clipper.
Pelo que vi o do Harbour não é mais totalmente PRG.
Tem este exemplo do Clipper, só que usa enfeite demais, e talvez o fonte seja complicado.
Nota: é um exemplo que vinha com Clipper 5.2, de tbrowse.
Pelo que vi o do Harbour não é mais totalmente PRG.
Tem este exemplo do Clipper, só que usa enfeite demais, e talvez o fonte seja complicado.
Nota: é um exemplo que vinha com Clipper 5.2, de tbrowse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
ALERT() posicionável
Boa noite Quintas.
Você é incrível. Ajudando aos colegas SEMPRE. Obrigado.
Vamos aos fatos.
1)-A arquivo que você enviou não contém uma função Alert(). O serviço é feito de outra forma.
2)-Pesquisei nos fontes do xHarbour e encontrei na versão .1.2.1.
Lá o serviço é feito em 2 etapas. A primeira é em PRG normal (alert.prg), que por sua vez invoca uma rotina em C "HB_FUNC( HB_GTALERT )" no arquivo 'gtfunc.c'.
Aí ferrou para mim. Final de linha. Não entendo nadica de C.
Estou anexando os 2 arquivos, na esperança que haja alguma solução.
Alert.prg
gtfunc.c - a função HB_FUNC( HB_GTALERT ) está na linha 120
Você é incrível. Ajudando aos colegas SEMPRE. Obrigado.
Vamos aos fatos.
1)-A arquivo que você enviou não contém uma função Alert(). O serviço é feito de outra forma.
2)-Pesquisei nos fontes do xHarbour e encontrei na versão .1.2.1.
Lá o serviço é feito em 2 etapas. A primeira é em PRG normal (alert.prg), que por sua vez invoca uma rotina em C "HB_FUNC( HB_GTALERT )" no arquivo 'gtfunc.c'.
Aí ferrou para mim. Final de linha. Não entendo nadica de C.
Estou anexando os 2 arquivos, na esperança que haja alguma solução.
Alert.prg
Código: Selecionar todos
/*
* $Id: alert.prg,v 1.28 2008/07/24 14:41:58 modalsist Exp $
*/
/*
* Harbour Project source code:
* ALERT() function
*
* Released to Public Domain by Vladimir Kazimirchik <v_kazimirchik@yahoo.com>
* www - http://www.harbour-project.org
*
*/
/*
* The following parts are Copyright of the individual authors.
* www - http://www.harbour-project.org
*
* Copyright 1999-2001 Viktor Szakats <viktor.szakats@syenar.hu>
* Changes for higher Clipper compatibility, console mode, extensions
* __NONOALERT()
*
* See doc/license.txt for licensing terms.
*
*/
#include "box.ch"
#include "common.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "hbgtinfo.ch"
/* TOFIX: Clipper defines a clipped window for Alert() [vszakats] */
/* NOTE: Clipper will return NIL if the first parameter is not a string, but
this is not documented. This implementation converts the first
parameter to a string if another type was passed. You can switch back
to Clipper compatible mode by undefining constant HB_EXTENSION. [vszakats] */
/* NOTE: Clipper handles these buttons { "Ok", "", "Cancel" } in a buggy way.
This is fixed. [vszakats] */
/* NOTE: nDelay parameter is a Harbour extension. */
#ifdef HB_C52_UNDOC
STATIC s_lNoAlert
#endif
FUNCTION Alert( xMessage, aOptions, cColor, nDelay )
LOCAL cMessage
LOCAL cColorBox
LOCAL cColorButton
LOCAL aOptionsOK
LOCAL nEval
LOCAL nAt
#ifdef HB_EXTENSION
LOCAL lFirst
LOCAL cLine
#endif
#ifdef HB_C52_UNDOC
DEFAULT s_lNoAlert TO hb_argCheck( "NOALERT" )
IF s_lNoAlert
RETURN NIL
ENDIF
#endif
#ifdef HB_EXTENSION
IF PCount() == 0
RETURN NIL
ENDIF
cMessage := ""
IF ISARRAY( xMessage )
lFirst := .T.
FOR nEval := 1 TO Len( xMessage )
IF ISCHARACTER( cLine := xMessage[ nEval ] )
cMessage += iif( lFirst, "", Chr( 10 ) ) + cLine
lFirst := .F.
ENDIF
NEXT
ELSE
DO CASE
CASE ValType( xMessage ) $ "CM" ; cMessage := StrTran( xMessage, ";", Chr( 10 ) )
CASE ValType( xMessage ) == "N" ; cMessage := LTrim( Str( xMessage ) )
CASE ValType( xMessage ) == "D" ; cMessage := DToC( xMessage )
CASE ValType( xMessage ) == "L" ; cMessage := iif( xMessage, ".T.", ".F." )
CASE ValType( xMessage ) == "O" ; cMessage := xMessage:className + " Object"
CASE ValType( xMessage ) == "S" ; cMessage := "@" + xMessage:Name + "()"
CASE ValType( xMessage ) == "B" ; cMessage := "{||...}"
OTHERWISE ; cMessage := "NIL"
ENDCASE
ENDIF
#else
IF !ISCHARACTER( xMessage )
RETURN NIL
ENDIF
cMessage := StrTran( xMessage, ";", Chr( 10 ) )
#endif
IF ! ISARRAY( aOptions )
aOptions := {}
ENDIF
IF ! ISCHARACTER( cColor ) .or. EMPTY( cColor )
cColorBox := "W+/R" // first color pair: (Box)
cColorButton := "W+/B" // second color pair: (Buttons)
ELSE
/*
cColorButton := StrTran( StrTran( iif( At( "/", cColor ) == 0, "N", SubStr( cColor, At( "/", cColor ) + 1 ) ) + "/" +;
iif( At( "/", cColor ) == 0, cColor, Left( cColor, At( "/", cColor ) - 1 ) ), "+", "" ), "*", "" )
*/
nAt := At(",",cColor)
if nAt == 0
cColorBox := cColor
nAt := At("/",cColor)
if nAt != 0
cColorButton := SubStr( cColor, nAt+1 )+"/"+ SubStr( cColor, 1, nAt - 1 )
cColorButton := StrTran( cColorButton, "+","")
cColorButton := StrTran( cColorButton, "*","")
else
cColorButton := "W+/B"
endif
else
cColorBox := Left( cColor, nAt - 1 )
cColorButton := SubStr( cColor, nAt + 1 )
endif
ENDIF
IF nDelay == NIL
nDelay := 0
ENDIF
aOptionsOK := {}
FOR nEval := 1 TO Len( aOptions )
IF ISCHARACTER( aOptions[ nEval ] ) .AND. !Empty( aOptions[ nEval ] )
AAdd( aOptionsOK, aOptions[ nEval ] )
ENDIF
NEXT
IF Len( aOptionsOK ) == 0
aOptionsOK := { 'Ok' }
#ifdef HB_C52_STRICT
/* NOTE: Clipper allows only four options [vszakats] */
ELSEIF Len( aOpitonsOK ) > 4
ASize( aOptionsOK, 4 )
#endif
ENDIF
RETURN hb_gtAlert( cMessage, aOptionsOK, cColorBox, cColorButton, nDelay );
#ifdef HB_C52_UNDOC
PROCEDURE __NONOALERT()
s_lNoAlert := .F.
RETURN
#endifCódigo: Selecionar todos
/*
* $Id: gtfunc.c,v 1.3 2008/12/01 11:45:00 marchuet Exp $
*/
/*
* Harbour Project source code:
* Harbour extended GT functions
*
* Copyright 2006 Przemyslaw Czerpak < druzus /at/ priv.onet.pl >
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#include "hbapigt.h"
#include "hbapiitm.h"
#include "hbapierr.h"
HB_FUNC( HB_SETDISPCP )
{
if( ISCHAR( 1 ) )
{
if( hb_pcount() == 2 && ISLOG( 2 ) )
hb_gtSetDispCP( hb_parc( 1 ), NULL, hb_parl( 2 ) );
else
hb_gtSetDispCP( hb_parc( 1 ), hb_parc( 2 ), hb_parl( 3 ) );
}
else
hb_errRT_BASE_SubstR( EG_ARG, 1089, NULL, "HB_SETDISPCP", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_SETKEYCP )
{
if( ISCHAR( 1 ) )
hb_gtSetKeyCP( hb_parc( 1 ), hb_parc( 2 ) );
else
hb_errRT_BASE_SubstR( EG_ARG, 1089, NULL, "HB_SETKEYCP", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_SETTERMCP )
{
if( ISCHAR( 1 ) )
{
if( hb_pcount() == 2 && ISLOG( 2 ) )
{
hb_gtSetDispCP( hb_parc( 1 ), NULL, hb_parl( 2 ) );
hb_gtSetKeyCP( hb_parc( 1 ), NULL );
}
else
{
hb_gtSetDispCP( hb_parc( 1 ), hb_parc( 2 ), hb_parl( 3 ) );
hb_gtSetKeyCP( hb_parc( 1 ), hb_parc( 2 ) );
}
}
else
hb_errRT_BASE_SubstR( EG_ARG, 1089, NULL, "HB_SETTERMCP", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_GTINFO )
{
if( ISNUM( 1 ) )
{
HB_GT_INFO gtInfo;
gtInfo.pNewVal = hb_param( 2, HB_IT_ANY );
gtInfo.pNewVal2 = hb_param( 3, HB_IT_ANY );
gtInfo.pResult = NULL;
hb_gtInfo( hb_parni( 1 ), >Info );
if( gtInfo.pResult )
hb_itemReturnRelease( gtInfo.pResult );
}
else
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, "HB_GTINFO", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_GTVERSION )
{
hb_retc( hb_gtVersion( hb_parni( 1 ) ) );
}
HB_FUNC( HB_GTALERT )
{
int iClrNorm = ISCHAR( 3 ) ? hb_gtColorToN( hb_parc( 3 ) ) : hb_parni( 3 ),
iClrHigh = ISCHAR( 4 ) ? hb_gtColorToN( hb_parc( 4 ) ) : hb_parni( 4 );
hb_retni( hb_gtAlert( hb_param( 1, HB_IT_ANY ), hb_param( 2, HB_IT_ANY ),
iClrNorm, iClrHigh, hb_parnd( 5 ) ) );
}
HB_FUNC( HB_GFXPRIMITIVE )
{
PHB_ITEM pType = hb_param( 1, HB_IT_NUMERIC );
PHB_ITEM pTop = hb_param( 2, HB_IT_NUMERIC );
PHB_ITEM pLeft = hb_param( 3, HB_IT_NUMERIC );
PHB_ITEM pBottom = hb_param( 4, HB_IT_NUMERIC );
PHB_ITEM pRight = hb_param( 5, HB_IT_NUMERIC );
PHB_ITEM pColor = hb_param( 6, HB_IT_NUMERIC );
hb_retni( hb_gtGfxPrimitive( hb_itemGetNI(pType),
hb_itemGetNI(pTop), hb_itemGetNI(pLeft),
hb_itemGetNI(pBottom), hb_itemGetNI(pRight),
hb_itemGetNI(pColor) ) );
}
HB_FUNC( HB_GFXTEXT )
{
PHB_ITEM pTop = hb_param( 1, HB_IT_NUMERIC );
PHB_ITEM pLeft = hb_param( 2, HB_IT_NUMERIC );
char *cText = hb_parc(3);
PHB_ITEM pColor = hb_param( 4, HB_IT_NUMERIC );
PHB_ITEM pSize = hb_param( 5, HB_IT_NUMERIC );
PHB_ITEM pWidth = hb_param( 6, HB_IT_NUMERIC );
hb_gtGfxText( hb_itemGetNI(pTop),
hb_itemGetNI(pLeft), cText, hb_itemGetNI(pColor),
hb_itemGetNI(pSize), hb_itemGetNI(pWidth) );
}
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
