sábado, 31 de maio de 2008

A HMGS-IDE 0.6.6 atualizada está disponível

Olá a todos,

Os fontes e binários da HMGS-IDE 0.6.6 atualizada estão disponíveis na seguinte URL: http://www.hmgextended.com/files/HMGS-IDE/ide.zip

Este é o changelog desta versão por Walter Formigoni:2008-05-30: version 0.6.6

*Fixado : bug ao salvar o form das propriedades UPPERCASE/LOWERCASE do controle TEXTBOX. Bug foi reportado por Bruno bruno.luciani@gmail.com
*Adicionado : suporte para colocar nome do campo na propriedade ITEMSOURCE do controle COMBOBOX. Requesitado por Marcelo A. L. Carlimalcarli@terra.com.br
*Adicionado: suporte para colocar nome de variável privada na propriedade ITEMS do controle COMBOBOX. Requesitado por Marcelo A. L. Carlimailto:Carlimalcarli@terra.com.br

--Saudações, Grigory Filatov[MiniGUI Team]

Traduzido por: Marcelo Brigatti

quarta-feira, 28 de maio de 2008

Minigui - Como começar - em Português

MINIGUI - Como Começar - Links para Downloads

Requirementos:

Para instalar e usar a MiniGUI Extended, você precisará:
- Do compilador (The Borland BCC compiler (version 5.5.1) )
- Dos binários (executável) do Harbour (ou xHarbour)
- Do código fonte e binários da MiniGUI extended

Instalação:
1. Faça o Download do Borland BCC free (grátis) de:
http://www.hmgextended.com/files/MISC/FreeCommandLineTools.exe
e instale na pasta: C:\BORLAND\BCC55

NOTA: Se você instalar este compilador (e Harbour e MiniGUI) em outro drive, veja o Passo #8 abaixo.

2. Edite (ou crie) C:\BORLAND\BCC55\Bin\bcc32.cfg e inclua as seguintes linhas:
-I"c:\Borland\Bcc55\include"-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"

NOTA PARA USUÁRIOS DO xHARBOUR: Se você está instalando para xHarbour, você deve ao invés incluir as seguintes linhas:

-I"c:\Borland\Bcc55\include;c:\xharbour\include"
-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk;c:\xharbour\lib"

3. Edite (ou crie) C:\BORLAND\BCC55\Bin\ilink32.cfg e inclua as seguintes linhas:

-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"

NOTA PARA USUÁRIOS DO xHARBOUR: Se você está instalando para xHarbour, você deve ao invés incluir as seguintes linhas:

-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk;c:\xharbour\lib"

4. Faça o Download dos binários do compilador Harbour (ou xHarbour) (Integrated Build) de:
http://www.hmgextended.com/files/HARBOUR
ou
http://www.hmgextended.com/files/xHARBOUR
e instale na pasta C:\HARBOUR (ou C:\xHARBOUR) seguindo as diretivas do Setup Wizard.

NOTA: Existem significantes diferenças entre os binários do Harbour e xHarbour !
JF: A pasta HARBOUR contêm 3 arquivos: "Build 47", "Devel Build 1.1", e "Devel Build 1.1-1". A pasta xHARBOUR contêm 6 arquivos (Grigory's build, e compilação Lasse's, para as versões 0.99.60 e 0.99.70, mais um arquivo para cada 1.0.0 Beta e 1.1.0 Beta). Do que advêm a pergunta de qual instalar?
JF: Eu acredito que deveria ser de muito auxílio incluir um sumário de alguém que é familiar com Harbour e xHarbour, descrevendo as vantagens/desvantagens de cada plataforma para os desenvolvedores de HMGx.

5. Faça o Download dos (Fontes e Binários) da MiniGUI Extended de:
http://www.hmgextended.com/files/CONTRIB
(procure por aquivos tais como hmg-XX-setup.zip, onde XX é o número da versão).

NOTA: O conteúdos dos arquivos ZIP não podem ser extraídos usando WinZip. Você deve usar outro extrator de ZIP tal como WinRAR (http://www.rarlab.com) ou 7Zip (http://www.7-zip.org)

6. Clique em hmg-XX-setup.exe para instalar MiniGUI na pasta C:\MINIGUI seguindo as diretivas do Setup Wizard.

7. Faça o Download do arquivo:
http://tech.groups.yahoo.com/group/harbourminigui/files/CONTRIB/MakeBatch.zip
e descompacte (unzip) o arquivo batch "MakeLib" atualizado em in C:\MINIGUI

8. Se você instalou os arquivos acima em outro drive, mude todas as referencias para c:\ em:
BORLAND\BCC55\Bin\*.cfg MINIGUI\SOURCE\*.bat MINIGUI\SAMPLES\*.bat

9. Se você esta usando xHarbour, adicione a seguinte linha no AUTOEXEC.NT:

SET MG_CMP=XHARBOUR

10. Clique em \MINIGUI\SOURCE\MakeAllLibs.bat para gerar todas as libraries na pasta \MINIGUI\SOURCE e subpastas. Isto inclui as libraries do Harbour e da MiniGUI.

NOTA PARA USUÁRIOS DO xHARBOUR: Este arquivo batch cria as seguintes libraries em \xHARBOUR\lib (estes estavam anteriormente em \MINIGUI\xlib):ADORDD (na ordem para criar esta library, você deve copiar \MINIGUI\SOURCE\adordd\adordd.ch para a pasta \xHARBOUR\include)
CALLDLL
DLL
HBCOMM
HBPRINTER
HBSQLLITE3
HBXML
MINIPRINT
SHELL32
SOCKETT
MSAGENT

NOTA PARA USUÁRIOS DO xHARBOUR: Se você está usando o xHarbour, as seguintes libraries NÃO PODEM ser criadas:
JF: Esta lista deve ser completada

HBOLE.LIB: Esta library não é necessária com xHarbour
JF: Consideração sobre HBCOMM: Como em 8-01-2008 Lasse Holm reportou "retenham os antigos arquivos make_b32.bat e hbcomm.bc, Eu entendo que o Grigory irá fazer uma pequena modificação para eles, mas como estão agora os antigos funcionam"

NOTA PARA USUÁRIOS DO xHARBOUR: Arquivos de instalação para usuários que desejem usar xHarbour também estão disponíveis no Finnish xHarbour portal mantido por Lasse Holm:
http://www.the-holms.org/xharbour
Se você fizer o download dos arquivos de instalação do Finnish site, você deve ler as descrições dos arquivos para certificar-se que fez o download da versão da HMGx que corresponde a versão do xHarbour que você está usando.

11. Você pode encontrar exemplos de introdução ao trabalho com código MiniGUI em:
\MINIGUI\SAMPLES\BASIC \MINIGUI\SAMPLES\ADVANCED \MINIGUI\SAMPLES\APPLICATIONS

Clique \MINIGUI\SAMPLES\CompileAll.bat para gerar os arquivos de exemplo em MiniGUI.

NOTA PARA USUÁRIOS DO xHARBOUR: Se você está usando xHarbour, você deve mudar as referências de ziparchive.lib em \MINIGUI\BATCH\Compile.bat para hbzip.lib

NOTA PARA USUÁRIOS DO xHARBOUR: Quando gerar algum dos exemplos, usuários do xHarbour irão receber mensagens de erro se referindo a função faltante HB_FUN_CALLDLL. Este erro pode ser corrigido modificando o arquivo \MINIGUI\BATCH\Compile.bat. Sobre o label :XRSPREST insira a seguinte linha, antes da linha contendo libmisc.lib
echo %MV_HRB%\lib\dll.lib + >> _temp.rsp

NOTA PARA USUÁRIOS DO xHARBOUR: Se você não puder encontrar a DLL.LIB em \xHARBOUR\lib, copie esta library de: \MINIGUI\Lib or \MINIGUI\xlib

NOTA PARA USUÁRIOS DO xHARBOUR: O arquivo \MINIGUI\BATCH\Compile.bat contêm diferenças sobre os labels :HRSPREST e :XRSPREST. A diferença está aonde HBPRINTER.LIB, MINIPRINT.LIB, e SOCKET.LIB são esperadas para serem encontradas (sobre um label, elas são esperadas em \xHARBOUR\lib, e sobre o outro, elas são esperadas em \MINIGUI\Lib ou \MINIGUI\xlib.
JF: Como em 7-01-2008 Kevin Carmody está pesquisando sobre esta diferença.

Exemplos adicionais e arquivos de ajuda podem ser encontrados em:

http://groups.yahoo.com/group/harbourminigui/files/
http://www.hmgextended.com/files/

Licença MiniGUI:

Harbour MiniGUI (e MiniGUI Extended) tem a mesma licença como o projeto Harbour. Assim se você linkar a library Harbour Minigui com outros arquivos para produzir um executável, isto não fará com que o executável resultante seja coberto pela GNU General Public License. Seu uso daquele executável não está de maneira alguma restrito a linkagem do código da library Harbour Minigui.

Traduzido por: Marcelo Brigatti

Dica - Set Relation

Para quem tem dúvidas no Set Relation segue aqui uma dica:

Supondo uma tabela de contas a receber onde queremos relacionar cada título com seu respectivo sacado (por CPF) na tabela de clientes (a qual deverá estar indexada e com a ordem setada para CPF) e com o banco (por banco e agência) na tabela de custódias (a qual deverá estar indexada e com a ordem setada para Banco+Agencia). Veja também que a ordem setada na tabela de contas a receber não tem importância, pois o relacionamento se dá através do conteúdo de seus campos.

DBSelectArea( 1 )
Use ArqReceb Shared Alias Receb
Set Index To ArqReceb
DBSelectArea( 2 )
Use ArqClien Shared Alias Clien
Set Index To ArqClien
DBSelectArea( 3 )
Use ArqTbage Shared Alias Tbage
Set Index To ArqTbage
....

// setando a ordem selecionada (CPF)
Clien->( DBSetorder( 1 ) )
// setando a ordem selecionada (Banco+Agencia)
Tbage->( DBSetorder( 1 ) )
// este aqui pode estar em qualquer ordem
Receb->( DBSetorder( 2 ) )
// Limpa qualquer relacionamento anterior
Receb->( DBClearRel() )
// Criando os relacionamentos
Receb->( DBSetRelation( "Tbage", ;
{ Receb->Bancus + Receb->Agecus }, ;
"Receb->Bancus + Receb->Agecus" ) )

Receb->( DBSetRelation( "Clien", ;
{ SubStr( Receb->Cgccpf, 1, 11) }, ;
"SubStr( Receb->Cgccpf, 1, 11 )" ) )
// Ativando os relacionamentos
Receb->( DBGoTop() )

e pronto relacionamentos criados.

segunda-feira, 26 de maio de 2008

Minigui 1.5 Build 52 - Changelog em Português

Olá a todos,

O setup de instalação da Harbour MiniGUI 1.5 Extended Edition (Build 52) está disponível na seguine URL:
http://hmgextended.com/files/CONTRIB/hmg-1.5-52-setup.zip

e a versão Lite build 52 pelo FreeExtractor no seguinte URL: http://hmgextended.com/files/CONTRIB/hmg-1.5-52-setup-lite.zip

Este é o log das mudanças para esta versão:
2008/05/26: Build 52 (HMG 1.5 Extended Edition) Published.

* Fixado: O erro no setfocus do evento ON ENTER event com Navigation Extended no controle BUTTONEX. Reportado por Vianei Moreira de Lemos Contribuição de Grigory Filatov gfilatov@freemail.ru

* Alterado: As variáveis públicas do controle TSBrowse foram movidas para a matriz _HMG_SYSDATA array. Não há necessidade da declaração das seguintes variáveis no início de seu programa:
- _HMG_ActiveTBrowseName := ""
- _HMG_ActiveTBrowseHandle := 0
- _HMG_BeginTBrowseActive := .F.
Contribuição de Grigory Filatov gfilatov@freemail.ru

* Atualização: Código fonte da library PropGrid :
- Novo: Cláusula SUBITEM do comando GET PROPERTYITEM para obter tipo do item SIZE
- Novo: Comando ADD CATEGORY - para criar um novo tipo de item CATEGORY
- Fixado: Comando GET PROPERTYITEM agora retorna valores corettos para os tipos de itens: COLOR, ARRAY, CHECK e SIZE Contribuição de Janusz Pora januszpora@onet.eu

* Atualização: Library WinReport:
(veja código fonte na pasta \Source\WinReport). Contribuição de Pierpaolo Martinello (veja demo na pasta \samples\Advanced\REPORT_INTERPRETER e help em WinReport.chm na pasta \Doc)

* Atualização: Library MiniPrint:
- Novo: Nomes de recursos (resource) são dfinidos como constantes (veja em Source\MiniPrint\hp_images.ch)
- Alterado: Função GetFolder() foi substituída por PutFile() ao salvar páginas. Baseado em uma contribuição de Ivanil Marcelino ivanilm@terra.com.br.

* Atualização: Código fonte da Library Socket por Matteo Baccan baccan@infomedia.it:
- Fixado: Quando o arquivo binário anexo (atachado) foi finalizado com o caractere asc(26), este caracter ficava faltando após decodificação da mensagem (mail) recebido. Problema foi reportado por Jaroslav Janik jaroslav.janik@siemens.com (veja tsmtp.prg na pasta \Source\Socket)

* Atualização: Adaptação da Classe FiveWin Class TSBrowse 7.0 em HMG:
- Fixado: Problema com variável lDrawFooters no método LButtonDown. Baseado em uma contribuição de Ivanil Marcelino ivanilm@terra.com.br.
- Fixado: Problema com pesquisa incremental de valores em colunas Numericas.
- Fixado: Problema com o processamento do bloco PrevEdit no modo append para matrizes. Reportado por Vianei Moreira de Lemos cpd@colegioabc.com.br Contribuição de Grigory Filatov gfilatov@freemail.ru

* Atualização: Harbour Compiler Devel build (SVN 2008-05-22 19:00). Contribuição de Grigory Filatov (veja em 'Harbour Changelog.txt' e ReadMe.txt na pasta \harbour)

* Atualização: HMGS-IDE v.0.6.5 . Project Manager e Two-Way Visual Form Designer. Contribuição de Walter Formigoni walter.formigoni@uol.com.br (veja o changelog.txt na pasta \Ide)

* Atualização: Código fnte da HbSQLite3 (veja na pasta \Source\HbSQLite3):
- atualizado para usar SQLITE3 version 3.5.8 Contribuição de Grigory Filatov (veja demos nas pastas \samples\Advanced\SQLITE e \samples\Advanced\SQLITE_2)

* Atualização: MPMC utility typo para linkagem (linking) da library HbOle. Contribuição de Grigory Filatov (veja em \Utils\MPMC)

* Novo: 'Monitor Tester' exemplo. Contribuição de Grigory Filatov (veja na pasta \samples\Applications\MonitorTester)

* Atualizado: 'MiniGUI Biorhythms' exemplo multilingual. Contribuição de Christian T. Kurowski (veja na pasta \samples\Applications\Biorhythm)

Esta versão da MiniGUI é considerada estável e pronta para uso em produção.

ATENÇÃO. Se voce tem usado o TSBrowse em seus programas, voce *deve* remover/comentar as seguintes desnecessárias strings no topo de seus programas:
/*
Public _HMG_ActiveTBrowseName := ""
Public _HMG_ActiveTBrowseHandle := 0
Public _HMG_BeginTBrowseActive := .F.
*/

--Saudações, Grigory Filatov[MiniGUI Team]

--Tradução: (Marcelo Brigatti)

segunda-feira, 19 de maio de 2008

Métodos da Classe TSBrowse (em português)


Segue abaixo a lista de métodos da classe TSBrowse traduzidos do .CHM

Method New() Construtor do código fonte da Classe
Parameters: nRow, nCol, nWidth, nHeigth, bLine, aHeaders, aColSizes, oWnd, cField, uVal1, uVal2, bChange, bLDblClick, bRClick, oFont, oCursor, aColors, cMsg, lUpdate, cAlias, lPixel, bWhen, lDesign, bValid, lCellBrw, nStyle, bLClick, aActions

Method ReDefine() Construtor dos recursos da Classe
Parameters: nId, bLine, oDlg, aHeaders, aColSizes, cField, uVal1, uVal2, bChange, bLDblClick, bRClick, oFont, oCursor, nClrFore, nClrBack, cMsg, lUpdate, cAlias, bWhen, bValid, lCellBrw, bLClick

Métodos:

AddColumn( oColumn ) Adiciona uma coluna para o Browse, préviamente definido com o método construtor de colunas TSColumn:New() , ou com o comando DEFINE COLUMN oColumn ..

BeginPaint() Uso interno, Chamado a partir do método Display() .

BugUp() Chama o método UpStable().

ChangeFont( oFont, nColumn, nLevel )

DbSkipper( nToSkip ) Usado internamente; controla o ponteiro do registro do database.

Default() Uso interno; ações de inicialização do Browser.

DeleteRow()

DelColumn( nPos )

Destroy() Uso interno; Destrói o controle Browse.

Display() Uso interno- Exibe o Browse na primeira vez.

DrawLine( nRow ) Pinta a linha ativa ou nRow.

DrawSelect() Pinta o cursor na linha ativa.

DrawHeaders() Desenha Headers, Footers, e Super-Headers.

DrawFooters() Desenha o Footers.

DrawSuper() Desenha os Super-Headers.

EndPaint() Uso interno, Chamado a partir do método Display().

Exchange( nCol1, nCol2 ) Troca a posição das colunas nCol1 e nCol2.

GetColSizes() Retorna uma matriz contendo as larguras das colunas em pixels.

GetColumn( nCol ) Retorna uma referencia ao objeto TSColumn correspondente a nCol.

GoBottom() Posiciona o cursor na última linha do Browse, movendo o ponteiro de registros para o último registro do database, ou para o último elemento de outros objetos ( Array, oDbf, Text, Tree, oCtx ). É executado quando as teclas Ctrl+End ou Ctrl+PgDn são pressionadas, ou quando arrastando para o fim da barra de rolagem vertical.

GoDown() Posiciona o cursor uma linha abaixo movendo o ponteiro para o próximo registro no database, ou para o próximo elemento em outros objetos. É executado quando a tecla Down (seta para baixo) é pressionada.

GoEnd() Posiciona o cursor na última coluna visível na tela.

GoHome() Posiciona o cursor na primeira coluna visível na tela.

GoLeft() Move o cursor uma coluna para a esquerda.

GoNext() Move o cursor para a próxima coluna editável para a direita, ou para a próxima coluna editável da próxima linha.

GoPos( nNewRow, nNewCol ) Move o cursor para a linha definida em nNewRow e coluna definida em nNewCol.

GoRight() Move o cursor uma coluna para a direita.

GotFocus() Uso interno, executa ações ao receber o foco no Browse, entre as quais se destaca a
avaliação do blóco de código definido em bGotFocus.

GoTop() Posiciona o cursor na primeira linha do Browse, movendo o ponteiro de registro para primeiro registro no database, ou para o primeiro elemento de outros objetos ( Array, oDbf, Text, Tree, oCtx ).

GoUp() Posiciona o cursor uma linha acima, movendo o ponteiro para o registro anterior do database, ou para elemento anterior de outros objetos.

HiliteCell( nCol ) Posiciona o cursor na coluna definida em nCol. Se usado quando da ativação do Browse, será exibido com o cursor nesta coluna.

InsColumn( nPos, oColumn ) Insere uma coluna (object TSColumn oColumn ) na posição definida em nPos.

KeyChar( nKey, nFlags ) Uso interno. Executa ações dependendo da tecla pressionada nKey. Avalia o código de bloco bKeyChar.

KeyDown( nKey, nFlags ) Uso interno. - Similar a KeyChar(). Avalia o código de bloco bKeyDown.

LButtonDown( nRowPix, nColPix, nKeyFlags ) Uso interno.- Executa ações relacionadas com o clique no botão esquerdo do mouse. Avalia o código de bloco bLClick.

LDblClick( nRowPix, nColPix, nKeyFlags ) Uso interno.- Executa ações relacionadas com o duplo clique no botão esquerdo do mouse. Avalia o código de bloco bLDblClick.

lEditCol( nCol, uVar, cPicture, bValid, nClrFore, nClrBack, cMsg, cError, bWhen, lSpinner, bUp, bDown, bMin, bMax ) Executa a edição de dados das células. Você pode usar esse método de seu programa em funções de edição personalizadas. Este método retornará um valor de .T. (True - Verdadeiro) se a edição finalizar normalmente, e .F. (False - Falso) se o usuário cancelar a edição.

lIgnoreKey( nKey, nFlags )

LoadFields( lEditable )

Look3D( lOnOff, nColumn, nLevel, lPhantom )

LostFocus( hCtlFocus ) Uso interno. É ativado quando o Browse perde o foco. Avalia o código de bloco bLostFocus.

MButtonDown( nRow, nCol, nKeyFlags ) Uso interno.- É ativado quando o botão central do mouse é pressionado (em mouses de 3 botões). Avalia o código de bloco bMButtonDown, recebendo os mesmos parametros.

MoveColumn( nColPos, nNewPos ) Muda a posição da coluna dentro do Browse, se a variável ::lMoveCols for .T. .

nLogicPos() Retorna a posição lógica para o índice ativo.

nRowCount() Uso interno.- Conta as linhas exibíveis do Browse.

PageUp( ) Move o cursor e o ponteiro de registros uma página acima. É executado quando é pressionada a tecla PgUp.

PageDown( ) Move o cursor e o ponteiro de registros uma página abaixo. É executado quando é pressionada a tecla PgDn.

Paint() Uso interno.- Pinta o Browse. Chamado a partir do método Display().

PanHome() Move o cursor para a primeita coluna da linha corrente.É nativado quando pressionadas as teclas Shift+LeftArrow.

PanEnd() Move o cursor para a última coluna da linha corrente. É ativado quando pressionadas as teclas Shift+RightArrow.

PanLeft() Move o cursor para a primeira coluna visível da linha corrente. É ativado quando a tecla Home é pressionada.

PanRight() Move o cursor para a última coluna visível da linha corrente. É ativado quando a tecla End é pressionada.

RButtonDown( nRowPix, nColPix, nKeyFlags ) Uso interno.- Executa açoes relacionadas com o clique no botão direito do mouse. Avali o código de bloco bRClicked. Se o clique é feito na area do cabeçalho (Header), o TSBrowse exibirá um menu PopUp com opções de coluna e movimento de cursor.

Report( cTitle, aCols, lPreview, lMultiple, lLandscape, lFromPos )

Reset() Move o cursor e o ponteiro de registro para o topo do Browse e executa o método
Refresh(.T.)

ResetBarPos( lInit ) Uso interno.- Define blocos de navegação do browse e ajusta a posição das barras de rolagem (scrolling bars).

ResetSeek() Restaura o valor da variável cSeek para nulo (Null), assim uma nova pesquisa incremental pode ser executada.

Seek( nKey ) Este método faz todo o trabalho da pesquisa incremental.

Set3DText( lOnOff, lRaised, nColumn, nLevel, nClrLight, nClrShadow )

SetAlign( nColumn, nLevel, nAlign )

SetBtnGet( nCol, cResName, bAction, nBmpWidth )

SetDeleteMode( lOnOff, lConfirm, bDelete )

SetAppendMode( lMode ) Ativa a inserção automática após o ultimo registro (Append).

SetArray( aArray )

SetColor( xColor1, xColor2, nColumn )

SetContext( oCtx )

SetColSize( nCol, nWidth )

SetData( nColumn, bData, aList )

SetFilter( cField, uVal1, uVal2 )

SetIndexCols( aCols )

SetoDBF( oDbf )

SetOrder( nColumn )

SetSelectMode( lOnOff, bSelected )

SetSpinner( nColumn, lOnOff, bUp, bDown, bMin, bMax )

SetTree( oTree )

SetTxtFile( oTxtFile, cTitle, lOemToAnsi )

ShowSizes()

Skip( n )

SwitchCols( nCol1, nCol2 )

SyncChild( aoChildBrw, abAction )

UpStable()

Proper( cText ) Converte o texto cText em iniciais maiúsculas.