Generar Archivo.Obj desde un Archivo.C

Generar Archivo.Obj desde un Archivo.C

Postby karinha » Wed Apr 14, 2010 12:38 pm

Buenos dias,

Porfa, como hago para generar un Archivo.Obj, desde un Archivo.C, para incorporar a mi proyecto?

Gracias,

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby wmormar » Wed Apr 14, 2010 4:07 pm

karinha wrote:Buenos dias,

Porfa, como hago para generar un Archivo.Obj, desde un Archivo.C, para incorporar a mi proyecto?

Gracias,

Saludos.


Karinha,

Solo integralo como un PRG mas a tu proyecto y será compilado.

Saludos
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Wed Apr 14, 2010 6:04 pm

1000 gracias William.

saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Thu Apr 15, 2010 12:14 pm

Buenos dias William, hice asi, pero no funcona:
Code: Select all  Expand view

%bcdir%\bin\bcc32 -O2 -M -c -D__HARBOUR__ -I%hdir%\include GetBtn.C           >> Erro.log
%bcdir%\bin\bcc32 -O2 -M -c -D__HARBOUR__ -I%hdir%\include TSBFuncs.C         >> Erro.log
%bcdir%\bin\bcc32 -O2 -M -c -D__HARBOUR__ -I%hdir%\include Scroll.C           >> Erro.log
 


Cual és la sintaxe correcta? :oops:

Regards, saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby Mike Serra » Thu Apr 15, 2010 2:59 pm

Buenas Karinha, a mi asi me funciona. . .

\Bcc55\Bin\Bcc32 -D__HARBOUR__;HB_API_MACROS;HB_FM_STATISTICS_OFF -O2 -c -I\software\xharbour\Include;\software\fwh\Include <archivo.c>

Espero que sea de tu ayuda

Saludos,
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Re: Generar Archivo.Obj desde un Archivo.C

Postby acuellar » Thu Apr 15, 2010 3:17 pm

Karina al parecer queres compilar el TSBROWSE de Manuel

Yo intente con .BAT con UESTUDIO y no me dio resultado.
y lo logré con VERCE

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Thu Apr 15, 2010 3:20 pm

Exactamente Adhemar, voy hacer pruebas y te reporto.

Gracias,

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby mmercado » Thu Apr 15, 2010 4:36 pm

Hola João:
karinha wrote:Exactamente Adhemar, voy hacer pruebas y te reporto.

Dime tu correo o mándame un email para enviarte TSBrowse 9.0 beta que incluye varias opciones para crear la librería.

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Thu Apr 15, 2010 5:31 pm

mmercado wrote:Hola João:
karinha wrote:Exactamente Adhemar, voy hacer pruebas y te reporto.

Dime tu correo o mándame un email para enviarte TSBrowse 9.0 beta que incluye varias opciones para crear la librería.

Un abrazo.



Buenas tarde sábio maestro,

mi correo és:

kmt_karinha@pop.com.br

best regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Fri Apr 16, 2010 12:13 pm

Maestro Manuel, porfa mira tú email:

manuelmercado@prodigy.net.mx

Best regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Fri Apr 16, 2010 12:34 pm

Estimado Maestro Manuel, este código en C, sirve en la TsBrowse?

Code: Select all  Expand view

/* scroll.c implements the Scroll library. See the header, scroll.h, for the app
   interface. The Scroll library provides a simple tty interface to a Windows app.
   This app is similar to a console app except that it runs as a Windows program
   and has the full Windows API available to it.
 */


/* I, Eric Prud'hommeaux, grant unlimited use of this code to the WWW consortium.
   I retain the copyright ownership and expect to be contacted for licencing if
   the Scroll library or the library interface are used in any commercial products
   or ventures.

   Also, please contact me if for a CURSES version of this.
   eric@apocalypse.org
 */


#include <windows.h>
#include <string.h>
#include "lib.h"
#include "scroll.h"

//private functions
int scroll_MoveCursor(ScrollInfo_t* pScroll)
    {
    if (pScroll->cursorState & Scroll_cursorShow)
        SetCaretPos((pScroll->nColumn * pScroll->xChar) - pScroll->xOffset,
                              (pScroll->nRow * pScroll->yChar) - pScroll->yOffset);
    return ( TRUE ) ;
    }

//public functions
int Scroll_SetupInfo(ScrollInfo_t* pScroll, int maxRows, int maxCols)
    {
    pScroll->xSize          = 0;
    pScroll->ySize          = 0;
    pScroll->xScroll         = 0;
    pScroll->yScroll         = 0;
    pScroll->xOffset         = 0;
    pScroll->yOffset         = 0;
    pScroll->nColumn          = 0;
    pScroll->nRow             = 0;
    pScroll->maxRows = maxRows;
    pScroll->maxCols = maxCols;
    pScroll->cursorState    = Scroll_cursorHide;
    pScroll->maxTrackSize.x = (int)0x0;
    pScroll->maxTrackSize.y = (int)0x0;
    // clear screen space
    // GPF here means no memory was allocated by caller
    _fmemset(pScroll->screenBuf, ' ', pScroll->maxRows * pScroll->maxCols);
    return (0);
    }

void Scroll_DestroyInfo(ScrollInfo_t* pScroll)
    {
    return;
    }

int Scroll_WriteControl(ScrollInfo_t* pScroll, HWND hWnd, Scroll_control2_t control, int x, int y)
    {
    switch (control)
        {
        case Scroll_control_null:
            return (0);
        case Scroll_control_CR:
            pScroll->nColumn = 0;
            scroll_MoveCursor(pScroll);
            return (0);
        case Scroll_control_LF:
            if (pScroll->nRow++ == pScroll->maxRows - 1)
                {
                memmove(pScroll->screenBuf, pScroll->screenBuf + pScroll->maxCols, (pScroll->maxRows - 1) * pScroll->maxCols);
                memset(pScroll->screenBuf + (pScroll->maxRows - 1) * pScroll->maxCols, ' ', pScroll->maxCols);
                InvalidateRect(hWnd, 0, FALSE);
                pScroll->nRow--;
                }
            scroll_MoveCursor(pScroll);
            return (0);
        case Scroll_control_BS:
            if (pScroll->nColumn > 0)
                pScroll->nColumn--;
            if (pScroll->control | Scroll_control_BSbegetsSpace)
                {
                *(pScroll->screenBuf + pScroll->nRow * pScroll->maxCols + pScroll->nColumn) = ' ';
                InvalidateRect(hWnd, 0, FALSE);
                }
            scroll_MoveCursor(pScroll);
            return (0);
        case Scroll_control_Bell:
            MessageBeep(0);
            return (0);
        case Scroll_control_Tab:
            {
            int curTab;
            curTab = pScroll->nColumn/8;
            curTab++;
            pScroll->nColumn = curTab * 8;
            if (pScroll->nColumn >= pScroll->maxCols)
                {
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_CR, 0, 0);
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_LF ,0 ,0);
                }
            else
                scroll_MoveCursor(pScroll);
            }
            return (0);
        case Scroll_control_clearEol:
            memset(pScroll->screenBuf + (pScroll->nRow)*pScroll->maxCols + pScroll->nColumn, ' ', pScroll->maxCols - pScroll->nColumn);
            InvalidateRect(hWnd, 0, FALSE);
            return (0);
        case Scroll_control_goto:
            pScroll->nColumn = x;
            pScroll->nRow = y;
            scroll_MoveCursor(pScroll);
            return (0);
        case Scroll_control_normal:
            return (0);
        case Scroll_control_bold:
            return (0);
        case Scroll_control_inverse:
            return (0);
        default:    //undefined request
            return (1);
        }
    }

int Scroll_writeLiteral(ScrollInfo_t* pScroll, HWND hWnd, LPSTR lpBlock, int nLength)
    {
    int       i ;
    RECT         rect ;
int Scroll_writeInterpreted(ScrollInfo_t* pScroll, HWND hWnd, LPSTR lpBlock, int nLength);

    for (i = 0 ; i < nLength; i++)
        {
        *(pScroll->screenBuf + pScroll->nRow * pScroll->maxCols + pScroll->nColumn) = lpBlock[i];
        rect.left = (pScroll->nColumn * pScroll->xChar) -   pScroll->xOffset;
        rect.right = rect.left + pScroll->xChar;
        rect.top = (pScroll->nRow * pScroll->yChar) -   pScroll->yOffset;
        rect.bottom = rect.top + pScroll->yChar;
        InvalidateRect(hWnd, &rect, FALSE);
        // Line wrap
        if (pScroll->nColumn < pScroll->maxCols - 1)
            pScroll->nColumn++;
        else if (pScroll->control & Scroll_control_autoWrap)
            {
            if (pScroll->control  & Scroll_control_crBegetsLf)
                Scroll_writeInterpreted(pScroll, hWnd, "\r", 1);
            else
                Scroll_writeInterpreted(pScroll, hWnd, "\r\n", 2);
            }
        }
    return (TRUE);
    }

// interpretable keycodes
#define SCROLL_BELL      0x07
#define SCROLL_BS        0x08
#define SCROLL_TAB       0x09
#define SCROLL_LF        0x0A
#define SCROLL_CR        0x0D

int Scroll_writeInterpreted(ScrollInfo_t* pScroll, HWND hWnd, LPSTR lpBlock, int nLength)
    {
    int       i ;

    for (i = 0 ; i < nLength; i++)
        {
        switch (lpBlock[i])
            {
            case SCROLL_BELL:
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_Bell, 0, 0);
                break ;

            case SCROLL_BS:
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_BS, 0, 0);
                break;

            case SCROLL_TAB:
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_Tab, 0, 0);
                break;

            case SCROLL_CR:
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_CR, 0, 0);
                if (pScroll->control  & Scroll_control_crBegetsLf)
                    Scroll_WriteControl(pScroll, hWnd, Scroll_control_LF, 0, 0);
                break;

            case SCROLL_LF:
                if (pScroll->control  & Scroll_control_lfBegetsCr)
                    Scroll_WriteControl(pScroll, hWnd, Scroll_control_CR, 0, 0);
                Scroll_WriteControl(pScroll, hWnd, Scroll_control_LF, 0, 0);
                break ;

            default:
                Scroll_writeLiteral(pScroll, hWnd, lpBlock+i, 1);
                break;
            }
        }
    return (TRUE);
    } // end of Scroll_writeInterpreted()

int Scroll_WriteBlock(ScrollInfo_t* pScroll, HWND hWnd, LPSTR lpBlock, int nLength)
    {
    if (pScroll->control & Scroll_control_literal)
        return (Scroll_writeLiteral(pScroll, hWnd, lpBlock, nLength));
    else
        return (Scroll_writeInterpreted(pScroll, hWnd, lpBlock, nLength));
    }

int Scroll_SetSize(ScrollInfo_t* pScroll, HWND hWnd, WORD wVertSize, WORD wHorzSize)
    {
    int       nScrollAmt ;

    pScroll->ySize = (int) wVertSize ;
    pScroll->yScroll = max(0, (pScroll->maxRows * pScroll->yChar) - pScroll->ySize);
    nScrollAmt = min(pScroll->yScroll, pScroll->yOffset ) - pScroll->yOffset;
    ScrollWindow(hWnd, 0, -nScrollAmt, 0, 0);

    pScroll->yOffset = pScroll->yOffset + nScrollAmt;
    SetScrollPos(hWnd, SB_VERT, pScroll->yOffset, FALSE);
    SetScrollRange(hWnd, SB_VERT, 0, pScroll->yScroll, TRUE);

    pScroll->xSize = (int) wHorzSize ;
    pScroll->xScroll = max(0, (pScroll->maxCols * pScroll->xChar) - pScroll->xSize);
    nScrollAmt = min(pScroll->xScroll, pScroll->xOffset) - pScroll->xOffset;
    ScrollWindow(hWnd, 0, -nScrollAmt, 0, 0);
    pScroll->xOffset = pScroll->xOffset + nScrollAmt;
    SetScrollPos(hWnd, SB_HORZ, pScroll->xOffset, FALSE);
    SetScrollRange(hWnd, SB_HORZ, 0, pScroll->xScroll, TRUE);

    InvalidateRect(hWnd, 0, TRUE);

    return (TRUE);

    } // end of Scroll_SetSize()

int Scroll_SetVert(ScrollInfo_t* pScroll, HWND hWnd, WORD wScrollCmd, WORD wScrollPos)
    {
    int       nScrollAmt ;

    switch (wScrollCmd)
        {
        case SB_TOP:
            nScrollAmt = -pScroll->yOffset ;
            break ;

        case SB_BOTTOM:
            nScrollAmt = pScroll->yScroll - pScroll->yOffset ;
            break ;

        case SB_PAGEUP:
            nScrollAmt = -pScroll->ySize ;
            break ;

        case SB_PAGEDOWN:
            nScrollAmt = pScroll->ySize ;
            break ;

        case SB_LINEUP:
            nScrollAmt = -pScroll->yChar ;
            break ;

        case SB_LINEDOWN:
            nScrollAmt = pScroll->yChar ;
            break ;

        case SB_THUMBPOSITION:
            nScrollAmt = wScrollPos - pScroll->yOffset ;
            break ;

        default:
            return ( FALSE ) ;
        }
    if ((pScroll->yOffset + nScrollAmt) > pScroll->yScroll)
        nScrollAmt = pScroll->yScroll - pScroll->yOffset ;
    if ((pScroll->yOffset + nScrollAmt) < 0)
        nScrollAmt = -pScroll->yOffset ;
    ScrollWindow( hWnd, 0, -nScrollAmt, 0, 0 ) ;
    pScroll->yOffset = pScroll->yOffset + nScrollAmt ;
    SetScrollPos( hWnd, SB_VERT, pScroll->yOffset, TRUE ) ;

    return ( TRUE ) ;

    } // end of Scroll_SetVert()

int Scroll_SetHorz(ScrollInfo_t* pScroll, HWND hWnd, WORD wScrollCmd, WORD wScrollPos)
    {
    int       nScrollAmt ;

    switch (wScrollCmd)
        {
        case SB_TOP:
            nScrollAmt = -pScroll->xOffset ;
            break ;

        case SB_BOTTOM:
            nScrollAmt = pScroll->xScroll - pScroll->xOffset ;
            break ;

        case SB_PAGEUP:
            nScrollAmt = -pScroll->xSize ;
            break ;

        case SB_PAGEDOWN:
            nScrollAmt = pScroll->xSize ;
            break ;

        case SB_LINEUP:
            nScrollAmt = -pScroll->xChar ;
            break ;

        case SB_LINEDOWN:
            nScrollAmt = pScroll->xChar ;
            break ;

        case SB_THUMBPOSITION:
            nScrollAmt = wScrollPos - pScroll->xOffset ;
            break ;

        default:
            return ( FALSE ) ;
        }
    if ((pScroll->xOffset + nScrollAmt) > pScroll->xScroll)
        nScrollAmt = pScroll->xScroll - pScroll->xOffset ;
    if ((pScroll->xOffset + nScrollAmt) < 0)
        nScrollAmt = -pScroll->xOffset ;
    ScrollWindow( hWnd, -nScrollAmt, 0, 0, 0 ) ;
    pScroll->xOffset = pScroll->xOffset + nScrollAmt ;
    SetScrollPos( hWnd, SB_HORZ, pScroll->xOffset, TRUE ) ;

    return ( TRUE ) ;
    } // end of Scroll_SetHorz()

int Scroll_SetFocus(HWND hWnd, ScrollInfo_t* pScroll)
    {
    if (!(pScroll->cursorState & Scroll_cursorShow))
        {
        CreateCaret(hWnd, 0, pScroll->xChar, pScroll->yChar);
        ShowCaret(hWnd);
        pScroll->cursorState |= Scroll_cursorShow;
        }
    scroll_MoveCursor(pScroll);
    return (TRUE);
    } // end of Scroll_SetFocus()

int Scroll_KillFocus(HWND hWnd, ScrollInfo_t* pScroll)
    {
    if (pScroll->cursorState & Scroll_cursorShow)
        {
        HideCaret(hWnd);
        DestroyCaret();
        pScroll->cursorState &= ~Scroll_cursorShow;
        }
    return (TRUE);
    } // end of Scroll_KillFocus()

int Scroll_Paint(ScrollInfo_t* pScroll, FontInfo_t* pFont, HWND hWnd, CursorState_t cursorState)
    {
    int          nRow, nCol, nEndRow, nEndCol, nCount, nHorzPos, nVertPos ;
    HDC          hDC ;
    HFONT         hOldFont ;
    PAINTSTRUCT  ps ;
    RECT            rect ;

    hDC = BeginPaint( hWnd, &ps ) ;
    hOldFont = SelectObject( hDC, pFont->hFont ) ;
    SetTextColor( hDC, pFont->rgbFGColor ) ;
    SetBkColor( hDC, GetSysColor( COLOR_WINDOW ) ) ;
    rect = ps.rcPaint ;
    nRow = min(pScroll->maxRows - 1, max(0, (rect.top + pScroll->yOffset) / pScroll->yChar));
    nEndRow = min(pScroll->maxRows - 1, ((rect.bottom + pScroll->yOffset - 1) / pScroll->yChar));
    nCol = min(pScroll->maxCols - 1, max(0, (rect.left + pScroll->xOffset) / pScroll->xChar));
    nEndCol = min(pScroll->maxCols - 1, ((rect.right + pScroll->xOffset - 1) / pScroll->xChar));
    nCount = nEndCol - nCol + 1 ;
    for (; nRow <= nEndRow; nRow++)
        {
        nVertPos = (nRow * pScroll->yChar) - pScroll->yOffset ;
        nHorzPos = (nCol * pScroll->xChar) - pScroll->xOffset ;
        rect.top = nVertPos ;
        rect.bottom = nVertPos + pScroll->yChar ;
        rect.left = nHorzPos ;
        rect.right = nHorzPos + pScroll->xChar * nCount ;
        SetBkMode( hDC, OPAQUE ) ;
        ExtTextOut( hDC, nHorzPos, nVertPos, ETO_OPAQUE | ETO_CLIPPED, &rect,
                        (LPSTR)( pScroll->screenBuf + nRow * pScroll->maxCols + nCol ),
                        nCount, 0 ) ;
        }
    SelectObject( hDC, hOldFont ) ;
    EndPaint( hWnd, &ps ) ;
    if (cursorState | Scroll_cursorShow)
        scroll_MoveCursor(pScroll);
    return ( TRUE ) ;
    } // end of Scroll_Paint()

int Scroll_ResetScreen(HWND hWnd, ScrollInfo_t* pScroll, FontInfo_t* pFont)
    {
    HDC         hDC ;
    TEXTMETRIC  tm ;
    RECT rect;

    if (0 != pFont->hFont)
        DeleteObject( pFont->hFont ) ;

    pFont->hFont = CreateFontIndirect( &pFont->logFont ) ;

    hDC = GetDC(hWnd);
    SelectObject(hDC, pFont->hFont);
    GetTextMetrics(hDC, &tm);
    ReleaseDC(hWnd, hDC);

    pScroll->xChar = tm.tmAveCharWidth;
    pScroll->yChar = tm.tmHeight + tm.tmExternalLeading;
    rect.left = 0;
    rect.top = 0;
    rect.right = pScroll->xChar * pScroll->maxCols;
    rect.bottom = pScroll->yChar * pScroll->maxRows;
    AdjustWindowRect(&rect, GetWindowLong(hWnd, GWL_STYLE), TRUE);
    pScroll->maxTrackSize.x = rect.right - rect.left;
    pScroll->maxTrackSize.y = rect.bottom - rect.top;
//  pScroll->maxTrackSize.x = pScroll->xChar * pScroll->maxCols + 2*GetSystemMetrics(SM_CXFRAME) + GetSystemMetrics(SM_CXVSCROLL);
//  pScroll->maxTrackSize.y = pScroll->yChar * pScroll->maxRows + 2*GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYHSCROLL);

    // a slimy hack to force the scroll position, region to
    // be recalculated based on the new character sizes

//  SendMessage(hWnd, WM_SIZE, SIZENORMAL, (LPARAM)MAKELONG(rcWindow.right - rcWindow.left, rcWindow.bottom - rcWindow.top));
//  Scroll_SetSize(pScroll, hWnd, (WORD)(rcWindow.bottom - rcWindow.top), (WORD)(rcWindow.right - rcWindow.left));
    Scroll_SetSize(pScroll, hWnd, (WORD)pScroll->maxTrackSize.y, (WORD)pScroll->maxTrackSize.x);
    return (TRUE);
    } // end of Scroll_ResetScreen()


 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Generar Archivo.Obj desde un Archivo.C

Postby mmercado » Fri Apr 16, 2010 3:20 pm

Hola João:
karinha wrote:Estimado Maestro Manuel, este código en C, sirve en la TsBrowse?

A partir de V.9.0 Beta Scroll.c no es necesario, de hecho no se incluye dicho programa en la libreria, se usa el standard de FWH.

Ya te he enviado la nueva versión, espero tus comentarios.

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Generar Archivo.Obj desde un Archivo.C

Postby karinha » Fri Apr 16, 2010 3:30 pm

mmercado wrote:Hola João:
karinha wrote:Estimado Maestro Manuel, este código en C, sirve en la TsBrowse?

A partir de V.9.0 Beta Scroll.c no es necesario, de hecho no se incluye dicho programa en la libreria, se usa el standard de FWH.

Ya te he enviado la nueva versión, espero tus comentarios.

Un abrazo.



Gracias estimado Guru.

TsBrowse, nim necesita comentários, és simplesmente, ESTUPENDA!! jejeje.

best regards, saludos y muchas gracias.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7251
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 13 guests