Thanks Vailton,
I think it can also be a good example of working with hbqt and I translated to
prg.
Just as exercise of programming. :)
Is this wrong?
Xavi
#define Qt_PlainText 0
#define QMessageBox_ActionRole 3
#define QMessageBox_Ok 1024
/*******************************************************************************************
* ALERT IN PRG ( Please, NEVER use supress shortcutting! :)
*
-----------------------------------------------------------------------------------------
* nSelectedOption := Qt_Alert_PRG( <xText>, [<aOptions>|<cOption>], [<xTitle>],
[<nIcon>] )
********************************************************************************************/
Function QT_Alert_PRG( cText, xOption, cTitle, nIcon )
Local cOpt, apBtnOpc := {}, nSelectedOption := 0
if( !Empty(cText) )
cText := StrTran( cText, ';', Chr(10) )
WITH OBJECT QMessageBox():New()
:setTextFormat( Qt_PlainText )
:setText( cText )
if( Empty(xOption) )
AAdd( apBtnOpc, :addButton_2( QMessageBox_Ok ) )
else
xOption := iif( HB_IsArray(xOption), xOption, {xOption} )
for each cOpt in xOption
AAdd( apBtnOpc, :addButton_1( cOpt, QMessageBox_ActionRole ) )
next
endif
if( !Empty(cTitle) )
:setWindowTitle( cTitle )
endif
if( HB_IsNumeric(nIcon) .and. nIcon >= 0 .and. nIcon <= 4 )
:setIcon( nIcon )
endif
:exec()
nSelectedOption := AScan( apBtnOpc, :clickedButton() )
END
endif
return nSelectedOption
#include "hbapi.h"
#include "hbapiitm.h"
#include "QtGui/QMessageBox.h"
/*
* ALERT() function basead on QT MessageBox. By Vailton Renato
<[email protected]>
* Syntax: Qt_Alert( <xText>, [<aOptions>|<cOption>], [<xTitle>], [<nIcon>] )
-> nSelectedOption
* 15/04/2009 - 09:47:01
*/
HB_FUNC( QT_ALERT )
{
QString text;
QMessageBox msgBox;
//QList<QAbstractButton *> btnList;
QList<QPushButton *> btnList;
char *szText;
PHB_ITEM pItem;
BOOL fFree;
ULONG ulSize, ulLen, ul;
/* Text of window .. */
if (!HB_ISNIL(1))
{
szText = hb_itemString( hb_param( 1, HB_IT_ANY ), &ulLen, &fFree );
if (ulLen)
text.append( szText );
if( fFree )
hb_xfree( szText );
}
if (text.isEmpty())
{
hb_retni(0);
return;
}
text.replace( ';', '\n' );
if (ISARRAY(2))
{
pItem = hb_param( 2, HB_IT_ARRAY );
ulSize = hb_arrayLen( pItem );
for( ul = 1; ul <= ulSize; ++ul )
{
szText = hb_itemString( hb_arrayGetItemPtr( pItem, ul ), &ulLen,
&fFree );
if (ulLen)
btnList << msgBox.addButton( szText, QMessageBox::ActionRole );
if( fFree )
hb_xfree( szText );
}
} else {
if (!HB_ISNIL(2))
{
szText = hb_itemString( hb_param( 2, HB_IT_ANY ), &ulLen, &fFree );
if (ulLen)
btnList << msgBox.addButton( szText, QMessageBox::ActionRole );
if( fFree )
hb_xfree( szText );
}
}
if (btnList.isEmpty())
btnList << msgBox.addButton( QMessageBox::Ok );
/* Title of window */
if (!HB_ISNIL(3))
{
szText = hb_itemString( hb_param( 3, HB_IT_ANY ), &ulLen, &fFree );
if (ulLen)
msgBox.setWindowTitle( szText );
if( fFree )
hb_xfree( szText );
}
if (ISNUM(4))
{
int nIcon = hb_parni(4);
if ((nIcon >= 0) && (nIcon <= 4 ))
msgBox.setIcon( QMessageBox::Icon( nIcon ) );
}
msgBox.setTextFormat( Qt::PlainText );
msgBox.setText( text );
msgBox.exec();
// hb_retni( btnList.indexOf( msgBox.clickedButton() ) +1 );
hb_retni( btnList.indexOf( (QPushButton *)msgBox.clickedButton() ) +1 );
}
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour