Estou aqui novamente, agora pra exemplificar como usar a 5Win de forma simples e rápida.
Antes de mais nada eu suponho que a 5Win já esta instalada, caso não favor baixarem em http://www.shoppmarketing.com/forum/fw192ev.zip
Descompate em algum diretório qualquer e copie:
- suas .LIBs pra dentro do diretório LIB de seu Clipper
- suas .OBJs pra dentro do diretório OBJ de seu Clipper
- suas .CHs pra dentro do diretório INCLUDE de seu Clipper
Ou direcione os PATHs do Clipper para que apontem para o diretório onde foi descompactado a 5Win, ou seja:
SET OBJ=C:\CLIPPER\LIB;C:\FIVEWIN\LIB
SET LIB=C:\CLIPPER\OBJ;C:\FIVEWIN\OBJ
SET LIB=C:\CLIPPER\INCLUDE;C:\FIVEWIN\INCLUDE
Para compilar os exemplos basta fazer assim:
CLIPPER exemplo /m/n
BLINKER FILE exemplo @fivewin.lnk
O arquivo FIVEWIN.LNK deve estar dentro de algum diretório PATHeado de seu Clipper.
Bem, todo aplicativo Windows é baseado em uma base de suporte que pode ser uma janela ou um diálogo.
Usase o diálogo para programas que tem uma interação mais direta com o usuário e as janelas para uma interação mais complexa, ou seja, com vários diálogos e janelas.
Exemplo:
#include "fivewin.ch"
function main()
local oWnd1, oWnd2
DEFINE WINDOW oWnd1 TITLE "oWnd1" ;
FROM 5, 5 TO 24, 64
DEFINE WINDOW oWnd2 TITLE "oWnd2" ;
FROM 1, 1 TO 20, 60
oWnd2:Show()
ACTIVATE WINDOW oWnd1
return nil
No exemplo anterior foram criadas duas janelas, sendo que a janela oWnd2 esta ligada a janela oWnd1 apenas pelo processo de execução. Se a janela oWnd1 for fechada primeiro terminará o processo da segunda( oWnd2 ) forçosamente.
Vejamos o que acontece neste segundo exemplo:
#include "fivewin.ch"
function main()
local oWnd1, oWnd2
DEFINE WINDOW oWnd1 TITLE "oWnd1" ;
FROM 5, 5 TO 24, 64
ACTIVATE WINDOW oWnd1 ON INIT BuildJan2()
return nil
function BuildJan2
DEFINE WINDOW oWnd2 TITLE "oWnd2" ;
FROM 1, 1 TO 20, 60
ACTIVATE WINDOW oWnd2
return nil
Neste caso a segunda janela foi aberta de forma correta, mas pelo simples fato de não existir o vinculo com a janela principal, se a janela principal for fechada é bem provável que seu aplicativo irá travar travando também o Windows.
Então a melhor codificação de janelas é a que se segue, tornando o seu aplicativo um verdadeiro MDI( Multi Document Interface ).
#include "fivewin.ch"
function main()
local oWnd1, oWnd2
DEFINE WINDOW oWnd1 TITLE "oWnd1" [b]MDI[/b] ;
FROM 5, 5 TO 24, 64
ACTIVATE WINDOW oWnd1 ON INIT ( BuildJan2(), BuildJan3() )
return nil
function BuildJan2
DEFINE WINDOW oWnd2 TITLE "oWnd2" [b]MDICHILD[/b] ;
FROM 1, 1 TO 20, 60
ACTIVATE WINDOW oWnd2
return nil
function BuildJan3
DEFINE WINDOW oWnd2 TITLE "oWnd3" [b]MDICHILD[/b] ;
FROM 1, 1 TO 20, 60
ACTIVATE WINDOW oWnd2
return nil
DICA: Usem janelas para apresentar controles de agrupamento como TREEs, OUTLOOKs e BROWSEs. Não posicionem controles TEXT, EDIT E/ou COMBOs, pois não terão apelo profissional.
Na próxima vez falaremos diálogos e seus tipos.
Até mais.
LEIAM TAMBÉM: http://www.pctoledo.com.br/forum/viewtopic.php?t=845