Jump to content
Fivewin Brasil

dablys

Membros
  • Posts

    42
  • Joined

  • Last visited

Everything posted by dablys

  1. Oi Amigos do Five, pois é, baixei e compilei, mas a LIB resultante não ficou muito 100%, pois algumas funcionalidades não rodando bem, como por exemplo, os relatórios em VDOSPRN dão erro ao gerar METAFILEs, e a VREPORT está deslocando a imagem dos relatórios todas para a direita, começando sempre no meio da página no preview. Também não executou bem a classe de Mensagens rotativas da VLIB. Ao compilar gera um arquivo ERRO.VAG, onde podemos ver o que compilou bem ou não. O fato é que os arquivos originariamente escritos em linguagem C++ estão retornando muitos WARNINGs, e até alguns erros. O eMetafil.c por exemplo retornou um erro, que tive que contornar compilando o harbour deste com -D__XPP__ , o que passou, mas aleijou o coitado... rsss... não funcionando os METAFILES gerados pela VLIB. A include Vdialog.ch não veio com os fontes, então eu adaptei copiando a DIALOG.CH do Fivewin para VDIALOG.CH e compilou... porém... Detalhe... compilei com BCC582 ... será que só aceita BCC55? Utilizei como testes o antigo exemplo da VLIB... VLIB.EXE Se alguém conseguiu compilar perfeito, informe pra gente a receita correta, por favor. Agradecido, Dablys Duarte Andrade Programador Clipper 5.3, Blinker, Fivewin, xHarbour Governador Valadares - MG MSN: Lucklogan@msn.com Email: dablysandrade@yahoo.com.br Editado por - dablys on 15/09/2010 08:43:35
  2. Oi galera bacana do Five, Bem, sigiro uma solução relativamente fácil para o problema do excesso da quantidade de campos no Gerador do Kapiaba... É só ler os campos para uma matriz com dbstruct() por exemplo. Depois poderá alimentar um ListBox ou xBrowse com a lista total de campos disponíveis e pré-selecionar os que desejar em uma coluna com objetos CheckBox. Ao marcar um campo em seu CheckBox, será armazenado um número incremental sequencial, na ordem do selecionamento, para que o gerador saiba depois a ordem de apresentação dos campos no ListBox e no diálogo os SAY´s e GET´s. Os campos selecionados irão para o gerador e entrarão no código na sequência exata da seleção realizada. Isso ficaria muito bom se fosse feito,,, Abraço a todos, Dablys D. Andrade Programador Clipper 5.3, Blinker, Fivewin, xHarbour Governador Valadares EMail: dablysandrade@yahoo.com.br MSN : lucklogan@msn.com
  3. dablys

    VIDA LINK

    Ok Ok amigos do Five, estou enviando um link para baixar minhas rotinas de exemplo em CLIPPER para VIDALINK. ATENÇÃO! Está ZIPADA e com senha. Me enviem email para LUCKLOGAN@MSN.COM ou DABLYSANDRADE@YAHOO.COM.BR que envio de volta a senha do arquivo .ZIP http://www.4shared.com/file/k5QE0Doy/VIDALINK.html T+ Dablys D. Andrade Clipper 5.3, Blinker, Fivewin, xHarbour Governador Valadares - MG
  4. Oi galera gente boa do Five, olha eu aqui de novo! Terminei mais um Skin para a Tskin, e resolvi postar um pacote de testes para vocês com todos já existentes até agora... Aproveitem... http://www.4shared.com/file/QN2N5cuP/Tskin_novos.html Dablys D. Andrade Programador Clipper 5.3, Fivewin, xHarbour MSN: Lucklogan@msn.com Governador Valadares - MG
  5. Para quem não tem o exemplo da TSKIN do Lailton, pode pegar o link aí... http://www.4shared.com/file/4W08Vmhi/tskin.html Ps: Para utilizar o novo SKIN que criei, peguei a pasta DABLYS1_SKIN e renomeie ela com o nome BLACK... Depois substitua a pasta BLACK original no exemplo de uso da classe TSKIN do Lailton pela minha, com o mesmo nome BLACK... Por fim, é só executar o exemplo SIMPLEX.EXE e só, sem precisar compilar nada, somente trocando as imagens BITMAP... Valeu galera, T+ Dablys D. Andrade Programador Clipper 5.4, Fivewin, xHarbour Governador Valadares - MG Editado por - dablys on 13/07/2010 12:15:43
  6. É isso mesmo ICO, São os arquivos BITMAP que funcionam como o SKIN NOVO... Você coloca a pasta com as imagens BITMAP na pasta onde irá executar seu aplicativo de testes. Coloque o nome que quiser na pasta com as imagens. Em um segundo momento você irá utilizar qualquer exemplo do FIVEWIN que usa a classe TSKIN do Lailton, tomando o cuidado de apontar a função que ativa o SKIN na classe com o nome exato da pasta destino com as imagens BITMAP... E aí a classe irá fazer uso das imagens BITMAP na pasta que você elegeu para tanto, entendeu? Tenta lá... T+
  7. Bem gente, só para ficar bem esclarecido, eu não alterei a classe, nem fiz nenhuma versão. Eu somente modifiquei as imagens BITMAP que são aproveitadas pela classe, seja a versão do Lailton ou a do Fivewin Nativo. Concluindo, não acho que estou ferindo nenhum direito autoral, somente criando imagens SKIN para incrementar o uso da classe,,, só trabalhando com os BITMAPs... ok? Obrigado pela compreensão, Dablys D. Andrade.
  8. Oi galera gente boa do Five, resolvi brincar um pouco com a classe TSKIN do Lailton e percebi que podemos criar qualquer layout de SKIN que desejarmos. Então, fiz um exemplo novo e postei no 4shared para que possam experimentar... http://www.4shared.com/account/file/jtsX2cOO/Dablys1_skin.html NOVOS SKINs ( Incluindo AZUL3d e METALICO de Dablys)... http://www.4shared.com/file/QN2N5cuP/Tskin_novos.html Dablys Duarte Andrade Programador Clipper 5.3, Fivewin, xHarbour Editado por - dablys on 13/07/2010 11:11:16 Editado por - dablys on 13/07/2010 11:12:28 Editado por - dablys on 15/07/2010 21:28:48
  9. Oi galera gente boa do Five, resolvi brincar um pouco com a classe TSKIN do Lailton e percebi que podemos criar qualquer layout de SKIN que desejarmos. Então, fiz um exemplo novo e postei no 4shared para que possam experimentar... http://www.4shared.com/account/file/jtsX2cOO/Dablys1_skin.html NOVOS SKINs ( Incluindo AZUL3d e METALICO de Dablys)... http://www.4shared.com/file/QN2N5cuP/Tskin_novos.html Dablys Duarte Andrade Programador Clipper 5.3, Fivewin, xHarbour Editado por - dablys on 13/07/2010 11:11:16 Editado por - dablys on 13/07/2010 11:12:28 Editado por - dablys on 15/07/2010 21:28:48
  10. dablys

    VIDA LINK

    Já trabalhei com uma rotina para o VIDALINK, mas somente em CLIPPER puro. Se desejar entrar em contato, me procure no MSN... Meu MSN: LUCKLOGAN@MSN.COM Dablys Duarte Andrade Programador Clipper 5.3, Fivewin 2.6, xHarbour Governador Valadares - MG
  11. Então galera bacana do Five, alguém tentou compilar estes fontes da VLIB liberada? Eu baixei e compilei, porém, minha LIB final não ficou perfeita... ao gerar o exemplo original da VLIB, compila, mas dá erros, principalmente nas classe de relatórios, todas elas... Além disso, todos aqueles fontes complementares em .C e uns 2 ou 3 deles estão apresentando erros de compilação com BCC55... e aí? E agora, quem poderá nos salvar? OBS: Não importando a versão de FIVEWIN, o resultado é o mesmo... Dablys Duarte Andrade Programador Clipper 5.b, Blinker, Fivewin, xHarbour
  12. Beleza, gente bacana do Five? eu também fiquei curioso com esta biblioteca achada no fórum Internacional. É o seguinte: 1) na pasta include contida no MRFTools.ZIP tem vários includes para compilar junto aos exemplos da pasta PRGS, porém falta 1 include, mas este na verdade é o mesmo que MRFBot.Ch, penso. Por isso, copie o MRFBot.Ch como MISFUNC.Ch e acrescente a classe correspondente do exemplo ao fim do fonte principal. As clases estão na pasta CLASES. Também tem os arquivos .RES na pasta RES... Para facilitar a junção de tudo isso, você pode usar um gerenciador de projeto e compilação como o xMate, xDev ou outro que tive mais acostumado. Eu particularmente, modifico o Buildx.bat que vem na própria pasta ..\Samples do Fivewin... Valeu amigos, e até a próxima!! Dablys Duarte Andrade Programador Clipper53b, Blinker, xMate, FiveWin 2.6 xHarbour Governador Valadares, Minas Gerais MSN: lucklogan@msn.com
  13. Oi rapazeada bacana do Five, tenho uma rotina legalzinha para fazer essas atualizações de DBF automaticamente. Ela tem 2 etapas... uma que fica por fora em um pequeno executável que lê e grava todas as estruturas dos arquivos DBF em um diretório corrente para dentro de um arquivo chamado ARQUIVO.ARQ Em uma segunda etapa, uma função de tratamento é acionada de dentro de seu aplicativo principal toda vez que encontrar a presença do ARQUIVO.ARQ no diretório, e finalmente, atualizar as estruturas de todos os arquivos DBF automaticamente. Código do aplicativo EXE externo gerador do ARQUIVO.ARQ : ========================================================= ***************************************** * Utilitário leitor de Estruturas DBF: * Atualização: 21/02/2000 * Programador: Dablys Duarte Andrade * Contato : dablysandrade@yahoo.com.br * Governador valadares - MG * (33)32755824 ***************************************** Declare aArq[Adir('*.dbf')] FErase('teste.db*') Adir('*.dbf',aArq) cls If Len(aArq) = 0 alert('Sem arquivo de dados (.DBF) no diret¢rio do Sistema...') clear Quit EndIf aEstru:= {} If File('Arquivo.Arq') FErase('Arquivo.Arq') EndIf DbCreate('Arquivo.Arq',{{"NOME","C",08,0},{"CAMPO", "C" ,10,0},; {"TIPO", "C" , 1,0},{"TAMANHO","C" , 4,0},; {"DECIMAL","C" , 3,0}}) If ! File('Arquivo.Arq') alert('Arquivo de Atualiza‡„o (ARQUIVO.ARQ) n„o pode ser criado...') clear Quit endif Asort(aArq) sele 1 DbUseArea(1,,"Arquivo.Arq","xArq",.F.) set color to W+/B clear @ 08,10 say 'Atualizador de BANCO de dados: ' SET COLOR TO B+/w @ 10,10 clear to 16,70 @ 10,10 to 16,70 double * @ 14,15 Say Repl("Û",50) Color "Wr+/w" For I:= 1 To Len(aArq) If (aArq) = Nil Loop EndIf sele 2 DbUseArea(2,,(aArq),'Area',.F.) aEstru:= Area->(DbStruct()) @ 12,15 say 'Verificando estrutura do arquivo : ' @ 12,50 say aarq+space(05) @ 14,15 Say 'Concluindo -> ' + trans(I/Len(aArq)*100,'@r 9999999.99%') For J:= 1 To Len(aEstru) xArq->(DbAppend()) xArq->(DbRLock()) xArq->NOME := Left(aArq,At('.',aArq)-1) xArq->Campo := aEstru[J,1] xArq->Tipo := aEstru[J,2] xArq->Tamanho := StrZero(aEstru[J,3],4) xArq->Decimal := StrZero(aEstru[J,4],3) xArq->(DbRUnLock()) xArq->(DbCommit()) Next Area->(DbCloseArea()) Next DbCloseAll() set color to clear quit Segunda ETAPA (Funcao que atualiza as Estruturas dos DBF): ========================================================== *************************************************** * Funcao : ATUALIZA() * Realiza a atualização das estruturas dos * arquivos DBF presentes em ARQUIVO.ARQ * automaticamente * Programador : Dablys Duarte Andrade (01/01/2010) *************************************************** function Atualiza() Local cTela:= SaveScreen(0,0,24,79) If ! File("Arquivo.arq") Tone(999) Return .t. EndIf close databases set scoreboard off set date brit set color to W+/B clear FErase('Teste.dbf') FErase('Teste.dbt') Set Cursor Off DbUseArea(.T.,,"Arquivo.arq","Arquivo") If neterr() apaga('Arquivo de Atualiza‡„o ARQUIVO.ARQ n„o acess¡vel! Contate Suporte...',.T.) Inkey(3) clear clear all close all quit EndIf go top NomeArq := Arquivo->Nome NomeArq2 := {} NomeCampo := {} nAchou := {} LAchou := .F. Registro := LastRec() SetColor("b/w") @ 10,14 Clear To 16,65 DispBox(10,14,16,65) @ 13,15 Say Repl("Û",50) Color "Wr+/w" @ 11,22 Say "Carregando e Atualizando o Sistema ..." Do While ! Arquivo->(Eof()) @ 13,15 Say Repl("Û",((Arquivo->(Recno())/Registro)*100)/2) @ 14,36 Say AllTrim(Str((Arquivo->(Recno())/Registro)*100))+"%" If NomeArq # Arquivo->Nome Transfere() EndIf AADD(NomeCampo,{Arquivo->Campo,Arquivo->Tipo,Val(Arquivo->Tamanho),Val(Arquivo->Decimal)}) Arquivo->(DbSkip()) Enddo Transfere() DbCloseAll() FErase("Arquivo.arq") Set Color To Set Cursor On RestScreen(0,0,24,79,cTela) FErase('Teste.*') DbCloseAll() Return .T. Static Function Transfere() Local T @ 15,18 Say " " @ 15,18 Say "Arquivo : " + NomeArq If ! File(Alltrim(NomeArq)+".DBF") DbCreate(NomeArq,NomeCampo) Else DbUseArea(.T.,,Alltrim(NomeArq),"Arq2") If (! Neterr()) NomeAtua := DbStruct() For i := 1 To Len(NomeCampo) If Type("Arq2->"+NomeCampo[i,1]) = "U" AADD(nAchou,i) Exit Else For t := 1 To Len(NomeAtua) If AllTrim(NomeAtua[t,1]) = AllTrim(NomeCampo[i,1]) If AllTrim(NomeAtua[t,2]) # AllTrim(NomeCampo[i,2]) AADD(nAchou,i) Exit EndIf If NomeAtua[t,3] # NomeCampo[i,3] .Or.; NomeAtua[t,4] # NomeCampo[i,4] AADD(nAchou,i) Exit EndIf EndIf Next EndIf If Len(nAchou) # 0 Exit EndIf Next Arq2->(DbCloseArea()) If Len(nAchou) # 0 DbCreate("TESTE",NomeCampo) DbUseArea(.T.,,"TESTE","Arq2") If (! neterr()) Append From &(NomeArq+".Dbf") DbCommitAll() nAchou := {} Arq2->(DbCloseArea()) Copy File &("TESTE.DbF") To &(NomeArq+".DbF") If File("TESTE.DBT") Copy File &("TESTE.DbT") To &(NomeArq+".DbT") EndIf EndIf FErase("TESTE.DBF") FErase("TESTE.DBT") EndIf EndIf EndIf NomeArq := Arquivo->Nome NomeCampo := {} Return .t. Clipper 5.3 - Exospace - Blinker 7 - Fivewin - xHarbour Programador: Dablys Duarte Andrade Governador Valadares - MG email: dablysandrade@yahoo.com.br msn: lucklogan@msn.com Editado por - dablys on 12/02/2010 09:51:17 Editado por - dablys on 12/02/2010 09:54:31 Editado por - dablys on 12/02/2010 09:55:53
  14. É o seguinte amizades, o fato é que essa tecnologia de índices do Clipper sempre deu uns bug´s. com o CLIPPER 5.3 eu resolvi utilizando uma técnica bacaninha, e que deve servir até para FIVEWIN... ao indexar gerando um novo índice, pressupondo que o arquivo .CDX ou .NTX não exista e voce o está criando, então ao gerar o indice com INDEX ON... faça... index on CHAVE to INDICE.NTX EVAL EVERY no EVAL voce coloca uma função testando quantos registros processaram,,,, tipo de 3000 em 3000 registros, dando um COMMIT a cada ciclo completo de 3000 registros... ainda tem a cláusula EVERY para voce inserir um tempo de teste para saber se atingiu os próximos 3000 registros... tipo EVERY 5 Exemplo: então ficaria... index on CODICLI to EVAL {|| TestIndex() } EVERY 5 em TestIndex() crie seu tratamento para perceber o intervalo de 3000 em 3000 registros e executar um COMMIT ALL retornado sempre .T. (Verdadeiro), tipo: function TestIndex() if (recno() / 3000) - int(recno() / 3000)) = 0.000 // atingiu proximos 3000 registros commit all endif return (.t.) dificil heim?!? Dablys D. Andrade Governador Valadares - MG lucklogan@msn.com Programador CLIPPER 5.3 + BLINKER 7 + FIVEWIN + XHARBOUR Editado por - dablys on 20/12/2009 16:06:13
  15. Oi amigo, não seria o DBSETORDER que voce está aplicando quando força o foco no GET desejado, ou seja, percebi que no foco de cada GET tem um DBSETORDER diferente... aí ele vai mudar a ordem mesmo não é? Sobre o foco para o Browse,,, talvez resolvesse se voce ao invés de tratar as mudanças de ordem INDEX e foco no objeto desejado, diretamente no REDEFINE, poderia fazer uma função que tratasse isso... sendo assim, quando voce aplicar uma ação no objeto GET ou BROWSE, vai para essa função, detecta qual objeto está no foco atualmente e desvia para um CASE ou IF para tratar como quiser de acordo com o comportamente de cada objeto na DIALOG... Não é muito, mas espero ter ajudado. Dablys D. Andrade Governador Valadares - MG lucklogan@msn.com Programador Clipper 5.3/ Blinker7/ xharbour/ Fivewin Editado por - dablys on 02/10/2009 11:32:34
  16. Prezado amigo Theotokos, se entendi bem o que você deseja, de fato colocar uma 'seta embaixo' estilo botão PopUp na sua barra de botões fica complicado com as classes nativas do Fivewin. Mudar as classes originais é muito complicado para quem não tem experiência com programação classes / orientada a objetos... então, como alternativa você pode tentar utilitar classes ou bibliotecas que já ofereçam o que você deseja, como: RIBBONBAR.LIB do Lailton ( boa classe para solução visual) tem botões PopUp nela com Combo de opções; CANAL5 (tem OfficeBar) tem muitos controles diferentes; SBUTTONBAR (Botões diversos estilos); Obs: você terá de avaliar se a biblioteca funciona com sua versão de Fivewin / xharbour ... normalmente funcionam em versões atualizas, pois as mesmas também vão sendo atualizadas conforme versões novas do Fivewin / xHarbour. Espero ter ajudado, Dablys D. Andrade Progrador Clipper 5.3, Fivewin, xHarbour Governador Valadares - MG - lucklogan@msn.com
  17. Oi rapazeada, o negócio é o seguinte... desejo modificar as cores originais da MESSAGE BAR estilo 2007 no Fivewin. Como fazer? Modificar a Barra de Botões é fácil... oBar1:bClrGrad = { || { { D_MOVE, D_COLOR1, D_COLOR2 },; { D_MOVE, D_COLOR2, D_COLOR1 } } } O problema é modificar a barra de mensagens que teima continuar no estilo 2007, na cor AZUL... então... oMens1:oMsgbar:bClrGrad = ... não funciona... Tentei substituir na classe original: Em \FWH\SOURCE\CLASSES\MSGBAR.PRG ... . . . if hBmp == nil .and. ::l2007 // hBmp = MsgBar2007( ::hDC ) // linha bloqueada hBmp = LoadBitmap( GetResources(), ) endif En vez de chamar a MsgBar2007(), chama-se a LoadBitmap( GetResources(), ) onde é o nome do bitmap no ficheiro de Recursos requisitado. O bitmap se esticará ajustando-se ao tamanho da barra. Bom seria se tivesse dado certo, mas minha barra ficou totalmente PRETA,,, <<< sem nada >>> ... O que deu errado? Será o tamanho ou definição do BITMAP escolhido? Obs: Ao modificar a classe MSGBAR.PRG e adicionar ela no final de meu Programa Principal, a execução do EXE passa a apresentar um erro de RECURSOS ao abrir ou fechar o EXE. Abrem vários quadros de aviso de ERRO com a mensagem: "TOO MANY RECURSIVE ERROR HANDLE CALLS" O que fiz de errado ao agregar a classe MSGBAR.PRG modificada diretamente dentro do meu programa? No fim do meu PRG coloquei somente a linha abaixo para compilar a classe modificada... . . #include "msgbar.prg" Dablys D. Andrade Governador Valadares - MG Clipper 5.3, Blinker, xHarbour, Fivewin Editado por - dablys on 13/08/2009 14:34:08
  18. Oi rapazeada, o negócio é o seguinte... desejo modificar as cores originais da MESSAGE BAR estilo 2007 no Fivewin. Como fazer? Modificar a Barra de Botões é fácil... oBar1:bClrGrad = { || { { D_MOVE, D_COLOR1, D_COLOR2 },; { D_MOVE, D_COLOR2, D_COLOR1 } } } O problema é modificar a barra de mensagens que teima continuar no estilo 2007, na cor AZUL... então... oMens1:oMsgbar:bClrGrad = ... não funciona... Tentei substituir na classe original: Em \FWH\SOURCE\CLASSES\MSGBAR.PRG ... . . . if hBmp == nil .and. ::l2007 // hBmp = MsgBar2007( ::hDC ) // linha bloqueada hBmp = LoadBitmap( GetResources(), ) endif En vez de chamar a MsgBar2007(), chama-se a LoadBitmap( GetResources(), ) onde é o nome do bitmap no ficheiro de Recursos requisitado. O bitmap se esticará ajustando-se ao tamanho da barra. Bom seria se tivesse dado certo, mas minha barra ficou totalmente PRETA,,, <<< sem nada >>> ... O que deu errado? Será o tamanho ou definição do BITMAP escolhido? Obs: Ao modificar a classe MSGBAR.PRG e adicionar ela no final de meu Programa Principal, a execução do EXE passa a apresentar um erro de RECURSOS ao abrir ou fechar o EXE. Abrem vários quadros de aviso de ERRO com a mensagem: "TOO MANY RECURSIVE ERROR HANDLE CALLS" O que fiz de errado ao agregar a classe MSGBAR.PRG modificada diretamente dentro do meu programa? No fim do meu PRG coloquei somente a linha abaixo para compilar a classe modificada... . . #include "msgbar.prg" Dablys D. Andrade Governador Valadares - MG Clipper 5.3, Blinker, xHarbour, Fivewin Editado por - dablys on 13/08/2009 14:34:08
  19. Este teste que fiz é uma junção de vários exemplos da NET, partindo do exemplo básico do LAILTON, e sua RIBBONBAR para codejock... Gostaria de saber mais sobre os comandos da RIBBONBAR... Principalmente como mudar os SKINS. Editado por - dablys on 05/08/2009 11:51:34
  20. Oi gente boa do Fivewin, eu gostaria de compartilhar uns testes que ando fazendo por diversão com a biblioteca Codejock + xHarbour + Fivewin Neste teste eu não consegui atingir algumas coisas desejáveis... 1) Ao tentar Modificar as cores da Barra de Botões, e da barra de Status e Mensagens estilo 2007, não consegui sucesso com tudo, somente na barra... 2) Gostaria de saber como executar com a biblioteca Codejock a mudança de Estilos SKINS da RIBBONBAR... Segue o código até onde consegui chegar... ] // FWH ActiveX Call Codejock Ocx Sample // // Modificado por: Dablys D. Andrade // (04/08/2009) #include "FiveWin.ch" #define xtpControlError 0 #define xtpControlButton 1 #define xtpControlPopup 2 #define xtpControlButtonPopup 3 #define xtpControlSplitButtonPopup 4 #define xtpControlComboBox 5 #define xtpControlEdit 6 #define xtpControlCustom 7 #define xtpControlLabel 8 #define xtpControlCheckBox 9 #define xtpControlGallery 10 #define xtpControlRadioButton 11 #define xtpImageNormal 0 #define xtpImageDisabled 1 #define xtpImageHot 2 #define xtpImageChecked 3 #define xtpImagePressed 4 Static oWnd, oMain, oAct , hClass Static xTipo := 1, oBar1, aPopUps := {} function Main() local oRb local oQA, oQBtn1, oQBtn2, oQBtn3 local oSysButton, oControl, oPopupBar local oStatusBar, oToolTipContext, oIcons local oTabFiles, oGroup1 local oTabEdit, oGroup2 local oTabBuild local aButtons := {} local oButton1, oButton2, oButton3, oButton4 local oExitBtn, oExitBtn2 local oBmp1, oBmp2, oBmp3, obmp4, obmp5, obmp6, obmp7, obmp8, obmp9 local hBRDLL := LoadLibrary("br.DLL") // chama DLL pessoal BWCCRegister( GetResources() ) GLOBALSettings := NIL GlobalSettings := CreateObject("Codejock.CommandbarsGlobalSettings.13.0.0") WiTH OBJECT GlobalSettings:License := "CommandBars Control Copyright © " + ; "2003-2006 Codejock Software" +CRLF+ "PRODUCT-ID: " + ; "XCB-ESD-ACTX-9600" + CRLF + "VALIDATE-CODE: XXX-XXX-XXX-XXX" END WITH *** Janela Mestre Maximizada DEFINE WINDOW oMain TITLE "Fivewin com Codejock ActiveX" MDI MENU MenuMain() DEFINE BUTTONBAR oBar1 OF oMain 2007 DEFINE BUTTON OF oBar1 FILE "C:\dablys\fwh\bitmaps\16x16\exit.bmp" ACTION ( oMain:End() ) DEFINE BUTTON OF oBar1 FILE "C:\dablys\fwh\bitmaps\16x16\New.bmp" ACTION ( test() ) SET MESSAGE OF oMain TO FWVERSION + " - Menu Nativo com Ribbon Bar" CLOCK DATE KEYBOARD 2007 *** Janela Filha com a RibbonBar DEFINE WINDOW oWnd MDICHILD OF oMain FROM 1,1 to 400,600 pixel TITLE "Ribbon Bar do Dablys com Codejock ActiveX" oBmp1 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\new2.bmp", oWnd ) oBmp2 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\open2.bmp", oWnd ) oBmp3 := TBitmap():Define( , "\dablys\fwh\bitmaps\alphabmp\explorer.bmp", oWnd ) oBmp4 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\open.bmp", oWnd ) oBmp5 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\people.bmp", oWnd ) oBmp6 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\keys.bmp", oWnd ) oBmp7 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\quit.bmp", oWnd ) oBmp8 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\copy.bmp", oWnd ) oBmp9 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\info.bmp", oWnd ) oAct := TActiveX():New( oWnd, "Codejock.CommandBarsFrame.13.0.0", 0, 0, 0, 0 ) //@ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd oAct:bOnEvent = { | cEvent, aParams, pParams | RibbonBarEvent( cEvent, aParams, pParams, aButtons, oWnd ) } oAct:Do( "AttachToWindow", oWnd:hWnd ) *oAct:Do( "EnableOffice2007Frame", .F. ) *oAct:Do( "VisualTheme", .F. ) *oAct:Do( "EnableOffice2007Frame", .T. ) *oAct:Do( "VisualTheme", .T. ) // ToolTipContext - Richard oToolTipContext := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oToolTipContext := oToolTipContext:ToolTipContext() oToolTipContext:Style = 5 && xtpToolTipOffice2007 oToolTipContext:ShowTitleAndDescription( .T., 0 ) oToolTipContext:ShowImage( .T., 0 ) oToolTipContext:SetMargin( 2, 2, 2, 2 ) oToolTipContext:MaxTipWidth = 180 // StatusBar-Richard oStatusBar := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oStatusBar:StatusBar:Visible = .F. // era .T. oStatusBar:StatusBar:AddPane( 0 ) oStatusBar:StatusBar:AddPane( 59137 ) oStatusBar:StatusBar:AddPane( 59138 ) oStatusBar:StatusBar:AddPane( 59139 ) oStatusBar:StatusBar:IdleText = "FWH support Codejock RibbonBar" oIcons := oAct:Do( "icons" ) oIcons:AddBitmap( oBmp1:hBitmap,1,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp2:hBitmap,2,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp3:hBitmap,3,xtpImageNormal,.t. ) // 4th param, Bool to Alpha Channel Support oIcons:AddBitmap( oBmp4:hBitmap,4,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp5:hBitmap,5,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp6:hBitmap,6,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp7:hBitmap,7,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp8:hBitmap,8,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp9:hBitmap,9,xtpImageNormal,.f. ) oIcons:LoadBitmap( "\dablys\fwh\bitmaps\32x32\edit.bmp",4, xtpImageNormal) oAct:Hide() // RibbonBar - Richard oRb = oAct:Do( "AddRibbonBar", "Ribbon Bar" ) oRb:EnableDocking(64) oRb:EnableFrameTheme() oRb:ShowQuickAccessBelowRibbon(.T.) // era .F. oRb:ShowCaptionAlways(.T.) oRb:ShowQuickAccess(.T.) oRb:ShowGripper() // QuickAccess - Richard oQA:= oRb:QuickAccessControls() oQBtn1 := oQA:Add( 1, 1, "&New" ) oQBtn2 := oQA:Add( 1, 2, "&Save" ) oQBtn3 := oQA:Add( 1, 8, "©" ) oQA:Add( 1, 9, "&info" ) // Add SysButton - Richard oSysButton := oRb:AddSystemButton() oSysButton:IconId( 5 ) oSysButton:CommandBar:Controls:Add( 1, 4, "&New" ) oSysbutton:CommandBar:Controls:Add( 1, 5, "&Open..." ) oSysbutton:CommandBar:Controls:Add( 1, 6, "&Save" ) oSysbutton:CommandBar:Controls:Add( 1, 6, "Save &As..." ) oControl := oSysButton:CommandBar:Controls:Add( 4, 5, "&Print") oControl:BeginGroup = .T. oPopupBar := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oPopupBar := oPopupBar:CreateCommandBar("CXTPRibbonSystemPopupBarPage") oControl:CommandBar = oPopupBar oControl := oPopupBar:Controls:Add( 8, 0, "Preview and print the document") oControl:Width = 296 oControl:DefaultItem = .T. oControl:Style = 1 && xtpButtonCaption oPopupBar:DefaultButtonStyle = 5 && xtpButtonCaptionAndDescription oPopupBar:SetIconSize( 32, 32 ) oPopupBar:ShowGripper = .T. // era .F. oPopupBar:Controls:Add( 1, 4, "Print Pre&view" ) oPrnSetup = oPopupBar:Controls:Add( 1, 5, "Pr∫ Setup..." ) oPopupBar:Controls:Add( 1, 6, "Print Pre&view" ) oSysbutton:CommandBar:Controls:Add( 1, 1230, "Prepare" ) oSysbutton:CommandBar:Controls:Add( 1, 1235, "Send" ) oSysbutton:CommandBar:Controls:Add( 1, 1230, "Publish" ) oExitBtn2 = oSysbutton:CommandBar:Controls:Add( 1, 7, "Close" ) oSysbutton:CommandBar:SetIconSize( 32, 32 ) // RibbonBar Table - Richard oTabFiles = oRb:InsertTab( 0, "&Files" ) oTabFiles_Grp1 = oTabFiles:Groups:AddGroup("&Clipboard", 0) oTabFiles_Grp1:ShowOptionButton = .T. // TabFiles Group ToolTip - Richard oTabFiles_Grp1:ControlGroupOption:Id = 1000 oTabFiles_Grp1:ControlGroupOption:ToolTipText = "Clipboard" oTabFiles_Grp1:ControlGroupOption:DescriptionText = "Show clipboard dialog" oTabFiles_Grp1:ControlGroupOption:IconId(3) oPaste := oTabFiles_Grp1:Add( 4, 1, "&Paste") oPaste:CommandBar:Controls:Add( 1, 1, "&Paste" ) oPaste:CommandBar:Controls:Add( 1, 2, "&Paste Special" ) oButton1 = oTabFiles_Grp1:Add( xtpControlButton, 2, "&Cut" ) oButton2 = oTabFiles_Grp1:Add( xtpControlButton, 3, "&Copy" ) oBtn1 := oTabFiles_Grp1:Add( 1, 9, "Format") oBtn1:Enabled = .T. // era .F. oBtn2 := oTabFiles_Grp1:Add( 1, 8, "Delete") oExitBtn := oTabFiles_Grp1:Add( xtpControlButton, 7, "Exit") oTabFiles_Grp2 := oTabFiles:Groups:AddGroup( "&Font", 1) oButton3 = oTabFiles_Grp2:Add( xtpControlButton, 4, NIL ) oButton4 = oTabfiles_Grp2:Add( xtpControlButton, 3, "" ) oButton4:SetIconSize( 64,64 ) oButton4:Width = 70 oButton4:Height = 70 oTabEdit = oRb:InsertTab( 1, "&Edit" ) oTabBuild = oRb:InsertTab( 2, "&Build" ) oTabBuild:Color = 5 oTable_Grp := oTabBuild:Groups:AddGroup( "&Show/Hide", 5025) oTable_Grp:Add( 9, 2807, "Ruler" ) oTable_Grp:Add( 9, 2808, "GridLines" ) oTable_Grp:Add( 9, 2809, "Properties" ) oTable_Grp:Add( 9, 2810, "Document Map" ) oTable_Grp:Add( 9, 2811, "Thumbnails" ) oTable_Grp:Add( 9, 2812, "Document Action Bar" ) oControlOptions := oRb:Controls:Add( 2, 0, "Options") oControlOptions:Flags = 1 && xtpFlagRightAlign *oAct := TActiveX():New( oWnd, "Codejock.SkinFrameWork.12.0.2", 0, 0, 0, 0 ) oControl := oControlOptions:CommandBar:Controls:Add( 2, 0, "Styles") *oControl:CommandBar:Controls:Add( 1, 3000, "Blue" ) *oControl:CommandBar:Controls:Add( 1, 3001, "Black" ) *oControl:CommandBar:Controls:Add( 1, 3003, "Silver" ) *oControl:CommandBar:Controls:Add( 1, 3002, "Aqua" ) oControl:CommandBar:Controls:Add( 1, 3000, "Blue", -1, Ribbondab:style("BLUE") ) oControl:CommandBar:Controls:Add( 1, 3001, "Black", -1, Ribbondab:style("BLACK") ) oControl:CommandBar:Controls:Add( 1, 3003, "Silver", -1, Ribbondab:style("SILVER") ) oControl:CommandBar:Controls:Add( 1, 3002, "Aqua", -1, Ribbondab:style("AQUA") ) oControlPopup := oControlOptions:CommandBar:Controls:Add( 2, 0, "Font", -1, .F.) oControlPopup:CommandBar:Controls:Add( 11, 32883, "System Default", -1, .F.) oControl := oControlPopup:CommandBar:Controls:Add( 11, 32884, "Normal", -1, .F.) oControl:BeginGroup = .T. oControlPopup:CommandBar:Controls:Add( 11, 32885, "Large", -1, .F.) oControlPopup:CommandBar:Controls:Add( 11, 32886, "Extra Large", -1, .F.) oControl := oControlPopup:CommandBar:Controls:Add( 1, 32887, "Auto Resize Icons", -1, .F.) oControl:BeginGroup = .T. oControlOptions:CommandBar:Controls:Add( 1, 3004, "Right To Left" ) oControlOptions:CommandBar:Controls:Add( 1, 3005, "Animation" ) oControlAbout := oRb:Controls:Add( 1, 4000, "&About") *oControlAbout: oControlAbout:Flags = 1 Flags = 1 && xtpFlagRightAlign AADD( aButtons, oButton1 ) AADD( aButtons, oButton2 ) AADD( aButtons, oQBtn1 ) AADD( aButtons, oQBtn2 ) AADD( aButtons, oQBtn3 ) AADD( aButtons, oExitBtn ) AADD( aButtons, oExitBtn2 ) AADD( aButtons, oControlAbout ) AADD( aButtons, oPrnSetup ) oButton1:Caption = "FiveWin Power!" oButton1:TooltipText = "Ribbonbar para FWH" ACTIVATE WINDOW oMain MAXIMIZED ON INIT (skin(oMain)) FreeLibrary( hBRDLL ) return nil function RibbonBarEvent( cEvent, aParams, pParams, aButtons, oWnd ) do case case cEvent == "Execute" .and. Len( aButtons ) > 0 do case case aButtons[ 1 ]:hObj == aParams[ 1 ] MsgInfo( "Button 1" ) case aButtons[ 2 ]:hObj == aParams[ 1 ] MsgInfo( "Button 2" ) case aButtons[ 3 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 1" ) case aButtons[ 4 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 2" + CRLF + "FIVEWIN SHARING POWER" ) case aButtons[ 5 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 3" ) Settings() case aButtons[ 6 ]:hObj == aParams[ 1 ] oWnd:End() case aButtons[ 7 ]:hObj == aParams[ 1 ] oWnd:End() case aButtons[ 8 ]:hObj == aParams[ 1 ] MsgInfo( "FWH's ActiveX Power support Codejock", "About Codejock" ) case aButtons[ 9 ]:hObj == aParams[ 1 ] PrinterSetup() endcase endcase return nil //------------------------------------------------------------------------------- FUNCTION skin( xWin ) xTipo++ if xTipo > 18 xTipo := 1 endif if xTipo = 1 cStyle := "WinXP_luna.cjstyles" Mudacor2007('Original') elseif xTipo = 2 cStyle := "WinXP_Royale.cjstyles" Mudacor2007('Original') elseif xTipo = 3 cStyle := "Office2007.cjstyles" Mudacor2007('Original') elseif xTipo = 4 cStyle := "Office2007b.cjstyles" Mudacor2007('Original') elseif xTipo = 5 cStyle := "Destiny.cjstyles" Mudacor2007('Bege') elseif xTipo = 6 cStyle := "Vista.cjstyles" Mudacor2007('Preto') elseif xTipo = 7 cStyle := "Batman.cjstyles" Mudacor2007('Degrade') elseif xTipo = 8 cStyle := "Crystal_dlb2.cjstyles" Mudacor2007('Original') elseif xTipo = 9 cStyle := "Cybertron.cjstyles" elseif xTipo = 10 cStyle := "Black.cjstyles" Mudacor2007('Preto') elseif xTipo = 11 cStyle := "3X.cjstyles" elseif xTipo = 12 cStyle := "Amot.cjstyles" elseif xTipo = 13 cStyle := "Avilla.cjstyles" elseif xTipo = 14 cStyle := "Capital.cjstyles" elseif xTipo = 15 cStyle := "CareloVS.cjstyles" elseif xTipo = 16 cStyle := "Cred.cjstyles" elseif xTipo = 17 cStyle := "Crypto.cjstyles" elseif xTipo = 18 cStyle := "Dunnes3.cjstyles" Mudacor2007('Degrade') endif oActiveX:= TActiveX():New( xWin, "Codejock.SkinFrameWork.13.0.0" ) oActiveX:Do( "LoadSkin", cStyle, "" ) oActiveX:Do( "ApplyWindow", xWin:hWnd ) //*@ 00,100 say cStyle return Nil //(xWin:refresh()) function Mudacor2007(mXCOR) do case case mXCOR = 'Preto' *** * Cor: preto * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.25, nRGB( 129, 132, 135 ), nRGB( 54, 58, 62 ) },; { 0.75, nRGB( 20, 40, 60 ), nRGB( 5, 10, 15 ) } },; { { 0.25, nRGB( 160, 173, 174 ), nRGB( 67, 112, 133 ) },; { 0.75, nRGB( 11, 66, 94 ), nRGB( 74, 134, 187 ) } } ) } *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 235, 160, 86 ), nRGB( 20, 20, 20 ) ) } case mXCOR = 'Bege' *** * Cor: Bege * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 1, nRGB( 195, 196, 194 ), nRGB( 151, 149, 150 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oBar:nClrText = { | lInvert | If( ! lInvert, nRGB( 235, 160, 86 ), nRGB( 20, 20, 20 ) ) } *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 000, 000, 000 ),nRGB( 155, 155, 155 ) )} case mXCOR = 'Degrade' *** * Cor: Degrade * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; { 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; { 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oBar1:nClrText = nRGB( 255, 0, 255 ) otherwise *** * Cor: Original * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.50, nRGB( 178, 187, 202 ), nRGB( 137, 155, 179 ) },; { 0.50, nRGB( 129, 149, 174 ), nRGB( 114, 132, 156 ) } },; { { 0.50, nRGB( 139, 166, 193 ), nRGB( 69, 119, 170 ) },; { 0.50, nRGB( 52, 104, 152 ), nRGB( 50, 107, 162 ) } } ) } *oBar:nClrText = nRGB( 255, 255, 255 ) *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 000, 000, 000 ),nRGB( 155, 155, 155 ) )} endcase *** * Cor na Barra de Mensagens 2007 * *** * Cor: Degrade * *oMain:bClrGrad = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oMain:nClrPane = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oMain:nClrGrad = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } oMain:nClrText = nRGB( 255, 0, 255 ) oMain:oMsgBar:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.50, nRGB( 178, 187, 202 ), nRGB( 137, 155, 179 ) },; { 0.50, nRGB( 129, 149, 174 ), nRGB( 114, 132, 156 ) } },; { { 0.50, nRGB( 139, 166, 193 ), nRGB( 69, 119, 170 ) },; { 0.50, nRGB( 52, 104, 152 ), nRGB( 50, 107, 162 ) } } ) } oMain:oMsgBar:nClrPane = { | lInvert | If( ! lInvert,; { { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; { 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; { 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } return nil function MenuMain() Local oMenu1 MENU oMenu1 MENUITEM "&Skins" MESSAGE "Menu de Atividades" ACTION skin(oMain) MENUITEM "&Dialogo" MESSAGE "Teste de Dialogo com botoes" ACTION test() *oMenu1:MenuX() oMenu1:addMDI() oMenu1:addHelp() oMenu1:Saida() ENDMENU return oMenu1 function MENUPRINC() Local oMenu, oFirst, oSecond, oItHelp MENU oMenu 2007 MENUITEM "&DiÃ¥logo" ACTION Test() MENUITEM "&Skins" ACTION skin(oMain) MENUITEM "&Teste" MENU MENUITEM oFirst PROMPT "&First Alt-F2" MESSAGE "Op‡Æo 1" ; ACTION If( oFirst:lActive, oFirst:Disable(), oFirst:Enable() ) ; ACCELERATOR ACC_ALT, VK_F2 MENUITEM oSecond PROMPT "&Second Ctrl-F2" MESSAGE "Op‡Æo 2" ; ACTION oSecond:SetCheck( ! oSecond:lChecked ) ; ACCELERATOR ACC_CONTROL, VK_F2 SEPARATOR MENUITEM FILE "\dablys\fwh\bitmaps\End.bmp" MESSAGE "Bye, bye... -F2-" ; ACTION oWnd:End() ; ACCELERATOR 0, VK_F2 MENUITEM "Break (Parada)" BREAK MENUITEM "&Pr¢ximo" ENDMENU MENUITEM "Mais um Menu..." MENU MENUITEM "&Enable" ACTION oFirst:Enable() ; MESSAGE "Ok, Inicie novamente..." MENUITEM FILE "\dablys\fwh\bitmaps\print.bmp" MESSAGE "Funciona ? Shift-F2" ; ACTION MsgInfo( "Oi, eu sou Dablys D. Andrade!" ) ; ACCELERATOR ACC_SHIFT, VK_F2 MENUITEM FILE "\dablys\fwh\bitmaps\Phone.bmp" MESSAGE "Outro..." MENUITEM FILE "\dablys\fwh\bitmaps\Files.bmp" MESSAGE "Teste com Clientes" ENDMENU MENUITEM FILE "\dablys\fwh\bitmaps\Ico.bmp" MESSAGE "FiveWin, Ultra Power!" ; ACTION MsgInfo( "FiveWin: A poderosa ferramenta de xBase & OOPS" ) MENU MENUITEM FILE "\dablys\fwh\bitmaps\warning.bmp" MESSAGE "Really nice MenuItems!" MENU MENUITEM FILE "\dablys\fwh\bitmaps\red.bmp" MESSAGE "Red Color" MENUITEM FILE "\dablys\fwh\bitmaps\green.bmp" MESSAGE "Green Color" MENUITEM FILE "\dablys\fwh\bitmaps\yellow.bmp" MESSAGE "Yellow Color" MENUITEM FILE "\dablys\fwh\bitmaps\cyan.bmp" MESSAGE "Cyan Color" MENUITEM FILE "\dablys\fwh\bitmaps\magenta.bmp" MESSAGE "Magenta Color" ENDMENU ENDMENU MENUITEM oItHelp FILE "\dablys\fwh\bitmaps\magenta.bmp" HELP MENU MENUITEM FILE "\dablys\fwh\bitmaps\Calc.bmp" MESSAGE "Usando Calculadora Windows... Alt-C" ; ACTION MsgInfo( "A‡Æo Dupla..." ), WinExec( "Calc" ) ; ACCELERATOR ACC_ALT, ASC( "C" ) ENDMENU ENDMENU Return oMenu function SETTINGS() *oSettings = oActiveX:GetProp( "GlobalSettings" ) *MsgInfo( oSettings:Version ) msgInfo(globalsettings) return nil //----------------------------------------------------------------------------// function Test() LOCAL oDlgTst LOCAL oBtnNormal1, oBtnNormal2, oBtnNormal3, oBtnNormal4, oBtnNormal5 LOCAL oBtnAlpha1, oBtnAlpha2, oBtnAlpha3, oBtnAlpha4, oBtnAlpha5 DEFINE DIALOG oDlgTst RESOURCE "TEST" //// Botões normais Redefine ButtonBmp oBtnNormal1 id 351 of oDlgTst Bitmap "aBmp1" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnNormal1:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal2 id 352 of oDlgTst Bitmap "aBmp2" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnNormal2:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal3 id 353 of oDlgTst Bitmap "aBmp3" ; Prompt CRLF+CRLF+CRLF+"Sombreados" TEXTBOTTOM oBtnNormal3:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal4 id 354 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Contornos" TEXTBOTTOM oBtnNormal4:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal5 id 355 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Desabilitado" TEXTBOTTOM when .F. oBtnNormal5:lBmpAlpha := .F. //// Botões bmp alpha Redefine ButtonBmp oBtnAlpha1 id 451 of oDlgTst Bitmap "aBmp1" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnAlpha1:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha2 id 452 of oDlgTst Bitmap "aBmp2" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnAlpha2:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha3 id 453 of oDlgTst Bitmap "aBmp3" ; Prompt CRLF+CRLF+CRLF+"Sombreados" TEXTBOTTOM oBtnAlpha3:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha4 id 454 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Contornos" TEXTBOTTOM oBtnAlpha4:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha5 id 455 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Desabilitado" TEXTBOTTOM when .F. oBtnAlpha5:lBmpAlpha := .T. ACTIVATE DIALOG oDlgTst CENTERED RETURN NIL //----------------------------------------------------------------------------// procedure AppSys // XBase++ requirement return #INCLUDE "BUTTONB.PRG" #Include "menu.prg" #Include "RibbonClas.prg" ***** Registra BR.DLL DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BR.DLL" id=size2>id='Courier New'> Dablys D. Andrade Programador Clipper 5.3, xharbour, Fivewin Gov. Valadares - MG - lucklogan@msn.com
  21. Oi gente boa do Fivewin, eu gostaria de compartilhar uns testes que ando fazendo por diversão com a biblioteca Codejock + xHarbour + Fivewin Neste teste eu não consegui atingir algumas coisas desejáveis... 1) Ao tentar Modificar as cores da Barra de Botões, e da barra de Status e Mensagens estilo 2007, não consegui sucesso com tudo, somente na barra... 2) Gostaria de saber como executar com a biblioteca Codejock a mudança de Estilos SKINS da RIBBONBAR... Segue o código até onde consegui chegar... ] // FWH ActiveX Call Codejock Ocx Sample // // Modificado por: Dablys D. Andrade // (04/08/2009) #include "FiveWin.ch" #define xtpControlError 0 #define xtpControlButton 1 #define xtpControlPopup 2 #define xtpControlButtonPopup 3 #define xtpControlSplitButtonPopup 4 #define xtpControlComboBox 5 #define xtpControlEdit 6 #define xtpControlCustom 7 #define xtpControlLabel 8 #define xtpControlCheckBox 9 #define xtpControlGallery 10 #define xtpControlRadioButton 11 #define xtpImageNormal 0 #define xtpImageDisabled 1 #define xtpImageHot 2 #define xtpImageChecked 3 #define xtpImagePressed 4 Static oWnd, oMain, oAct , hClass Static xTipo := 1, oBar1, aPopUps := {} function Main() local oRb local oQA, oQBtn1, oQBtn2, oQBtn3 local oSysButton, oControl, oPopupBar local oStatusBar, oToolTipContext, oIcons local oTabFiles, oGroup1 local oTabEdit, oGroup2 local oTabBuild local aButtons := {} local oButton1, oButton2, oButton3, oButton4 local oExitBtn, oExitBtn2 local oBmp1, oBmp2, oBmp3, obmp4, obmp5, obmp6, obmp7, obmp8, obmp9 local hBRDLL := LoadLibrary("br.DLL") // chama DLL pessoal BWCCRegister( GetResources() ) GLOBALSettings := NIL GlobalSettings := CreateObject("Codejock.CommandbarsGlobalSettings.13.0.0") WiTH OBJECT GlobalSettings:License := "CommandBars Control Copyright © " + ; "2003-2006 Codejock Software" +CRLF+ "PRODUCT-ID: " + ; "XCB-ESD-ACTX-9600" + CRLF + "VALIDATE-CODE: XXX-XXX-XXX-XXX" END WITH *** Janela Mestre Maximizada DEFINE WINDOW oMain TITLE "Fivewin com Codejock ActiveX" MDI MENU MenuMain() DEFINE BUTTONBAR oBar1 OF oMain 2007 DEFINE BUTTON OF oBar1 FILE "C:\dablys\fwh\bitmaps\16x16\exit.bmp" ACTION ( oMain:End() ) DEFINE BUTTON OF oBar1 FILE "C:\dablys\fwh\bitmaps\16x16\New.bmp" ACTION ( test() ) SET MESSAGE OF oMain TO FWVERSION + " - Menu Nativo com Ribbon Bar" CLOCK DATE KEYBOARD 2007 *** Janela Filha com a RibbonBar DEFINE WINDOW oWnd MDICHILD OF oMain FROM 1,1 to 400,600 pixel TITLE "Ribbon Bar do Dablys com Codejock ActiveX" oBmp1 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\new2.bmp", oWnd ) oBmp2 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\open2.bmp", oWnd ) oBmp3 := TBitmap():Define( , "\dablys\fwh\bitmaps\alphabmp\explorer.bmp", oWnd ) oBmp4 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\open.bmp", oWnd ) oBmp5 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\people.bmp", oWnd ) oBmp6 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\keys.bmp", oWnd ) oBmp7 := TBitmap():Define( , "\dablys\fwh\bitmaps\32x32\quit.bmp", oWnd ) oBmp8 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\copy.bmp", oWnd ) oBmp9 := TBitmap():Define( , "\dablys\fwh\bitmaps\16x16\info.bmp", oWnd ) oAct := TActiveX():New( oWnd, "Codejock.CommandBarsFrame.13.0.0", 0, 0, 0, 0 ) //@ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd oAct:bOnEvent = { | cEvent, aParams, pParams | RibbonBarEvent( cEvent, aParams, pParams, aButtons, oWnd ) } oAct:Do( "AttachToWindow", oWnd:hWnd ) *oAct:Do( "EnableOffice2007Frame", .F. ) *oAct:Do( "VisualTheme", .F. ) *oAct:Do( "EnableOffice2007Frame", .T. ) *oAct:Do( "VisualTheme", .T. ) // ToolTipContext - Richard oToolTipContext := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oToolTipContext := oToolTipContext:ToolTipContext() oToolTipContext:Style = 5 && xtpToolTipOffice2007 oToolTipContext:ShowTitleAndDescription( .T., 0 ) oToolTipContext:ShowImage( .T., 0 ) oToolTipContext:SetMargin( 2, 2, 2, 2 ) oToolTipContext:MaxTipWidth = 180 // StatusBar-Richard oStatusBar := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oStatusBar:StatusBar:Visible = .F. // era .T. oStatusBar:StatusBar:AddPane( 0 ) oStatusBar:StatusBar:AddPane( 59137 ) oStatusBar:StatusBar:AddPane( 59138 ) oStatusBar:StatusBar:AddPane( 59139 ) oStatusBar:StatusBar:IdleText = "FWH support Codejock RibbonBar" oIcons := oAct:Do( "icons" ) oIcons:AddBitmap( oBmp1:hBitmap,1,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp2:hBitmap,2,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp3:hBitmap,3,xtpImageNormal,.t. ) // 4th param, Bool to Alpha Channel Support oIcons:AddBitmap( oBmp4:hBitmap,4,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp5:hBitmap,5,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp6:hBitmap,6,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp7:hBitmap,7,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp8:hBitmap,8,xtpImageNormal,.f. ) oIcons:AddBitmap( oBmp9:hBitmap,9,xtpImageNormal,.f. ) oIcons:LoadBitmap( "\dablys\fwh\bitmaps\32x32\edit.bmp",4, xtpImageNormal) oAct:Hide() // RibbonBar - Richard oRb = oAct:Do( "AddRibbonBar", "Ribbon Bar" ) oRb:EnableDocking(64) oRb:EnableFrameTheme() oRb:ShowQuickAccessBelowRibbon(.T.) // era .F. oRb:ShowCaptionAlways(.T.) oRb:ShowQuickAccess(.T.) oRb:ShowGripper() // QuickAccess - Richard oQA:= oRb:QuickAccessControls() oQBtn1 := oQA:Add( 1, 1, "&New" ) oQBtn2 := oQA:Add( 1, 2, "&Save" ) oQBtn3 := oQA:Add( 1, 8, "©" ) oQA:Add( 1, 9, "&info" ) // Add SysButton - Richard oSysButton := oRb:AddSystemButton() oSysButton:IconId( 5 ) oSysButton:CommandBar:Controls:Add( 1, 4, "&New" ) oSysbutton:CommandBar:Controls:Add( 1, 5, "&Open..." ) oSysbutton:CommandBar:Controls:Add( 1, 6, "&Save" ) oSysbutton:CommandBar:Controls:Add( 1, 6, "Save &As..." ) oControl := oSysButton:CommandBar:Controls:Add( 4, 5, "&Print") oControl:BeginGroup = .T. oPopupBar := TOleAuto():New( ActXPdisp( oAct:hActiveX ) ) oPopupBar := oPopupBar:CreateCommandBar("CXTPRibbonSystemPopupBarPage") oControl:CommandBar = oPopupBar oControl := oPopupBar:Controls:Add( 8, 0, "Preview and print the document") oControl:Width = 296 oControl:DefaultItem = .T. oControl:Style = 1 && xtpButtonCaption oPopupBar:DefaultButtonStyle = 5 && xtpButtonCaptionAndDescription oPopupBar:SetIconSize( 32, 32 ) oPopupBar:ShowGripper = .T. // era .F. oPopupBar:Controls:Add( 1, 4, "Print Pre&view" ) oPrnSetup = oPopupBar:Controls:Add( 1, 5, "Pr∫ Setup..." ) oPopupBar:Controls:Add( 1, 6, "Print Pre&view" ) oSysbutton:CommandBar:Controls:Add( 1, 1230, "Prepare" ) oSysbutton:CommandBar:Controls:Add( 1, 1235, "Send" ) oSysbutton:CommandBar:Controls:Add( 1, 1230, "Publish" ) oExitBtn2 = oSysbutton:CommandBar:Controls:Add( 1, 7, "Close" ) oSysbutton:CommandBar:SetIconSize( 32, 32 ) // RibbonBar Table - Richard oTabFiles = oRb:InsertTab( 0, "&Files" ) oTabFiles_Grp1 = oTabFiles:Groups:AddGroup("&Clipboard", 0) oTabFiles_Grp1:ShowOptionButton = .T. // TabFiles Group ToolTip - Richard oTabFiles_Grp1:ControlGroupOption:Id = 1000 oTabFiles_Grp1:ControlGroupOption:ToolTipText = "Clipboard" oTabFiles_Grp1:ControlGroupOption:DescriptionText = "Show clipboard dialog" oTabFiles_Grp1:ControlGroupOption:IconId(3) oPaste := oTabFiles_Grp1:Add( 4, 1, "&Paste") oPaste:CommandBar:Controls:Add( 1, 1, "&Paste" ) oPaste:CommandBar:Controls:Add( 1, 2, "&Paste Special" ) oButton1 = oTabFiles_Grp1:Add( xtpControlButton, 2, "&Cut" ) oButton2 = oTabFiles_Grp1:Add( xtpControlButton, 3, "&Copy" ) oBtn1 := oTabFiles_Grp1:Add( 1, 9, "Format") oBtn1:Enabled = .T. // era .F. oBtn2 := oTabFiles_Grp1:Add( 1, 8, "Delete") oExitBtn := oTabFiles_Grp1:Add( xtpControlButton, 7, "Exit") oTabFiles_Grp2 := oTabFiles:Groups:AddGroup( "&Font", 1) oButton3 = oTabFiles_Grp2:Add( xtpControlButton, 4, NIL ) oButton4 = oTabfiles_Grp2:Add( xtpControlButton, 3, "" ) oButton4:SetIconSize( 64,64 ) oButton4:Width = 70 oButton4:Height = 70 oTabEdit = oRb:InsertTab( 1, "&Edit" ) oTabBuild = oRb:InsertTab( 2, "&Build" ) oTabBuild:Color = 5 oTable_Grp := oTabBuild:Groups:AddGroup( "&Show/Hide", 5025) oTable_Grp:Add( 9, 2807, "Ruler" ) oTable_Grp:Add( 9, 2808, "GridLines" ) oTable_Grp:Add( 9, 2809, "Properties" ) oTable_Grp:Add( 9, 2810, "Document Map" ) oTable_Grp:Add( 9, 2811, "Thumbnails" ) oTable_Grp:Add( 9, 2812, "Document Action Bar" ) oControlOptions := oRb:Controls:Add( 2, 0, "Options") oControlOptions:Flags = 1 && xtpFlagRightAlign *oAct := TActiveX():New( oWnd, "Codejock.SkinFrameWork.12.0.2", 0, 0, 0, 0 ) oControl := oControlOptions:CommandBar:Controls:Add( 2, 0, "Styles") *oControl:CommandBar:Controls:Add( 1, 3000, "Blue" ) *oControl:CommandBar:Controls:Add( 1, 3001, "Black" ) *oControl:CommandBar:Controls:Add( 1, 3003, "Silver" ) *oControl:CommandBar:Controls:Add( 1, 3002, "Aqua" ) oControl:CommandBar:Controls:Add( 1, 3000, "Blue", -1, Ribbondab:style("BLUE") ) oControl:CommandBar:Controls:Add( 1, 3001, "Black", -1, Ribbondab:style("BLACK") ) oControl:CommandBar:Controls:Add( 1, 3003, "Silver", -1, Ribbondab:style("SILVER") ) oControl:CommandBar:Controls:Add( 1, 3002, "Aqua", -1, Ribbondab:style("AQUA") ) oControlPopup := oControlOptions:CommandBar:Controls:Add( 2, 0, "Font", -1, .F.) oControlPopup:CommandBar:Controls:Add( 11, 32883, "System Default", -1, .F.) oControl := oControlPopup:CommandBar:Controls:Add( 11, 32884, "Normal", -1, .F.) oControl:BeginGroup = .T. oControlPopup:CommandBar:Controls:Add( 11, 32885, "Large", -1, .F.) oControlPopup:CommandBar:Controls:Add( 11, 32886, "Extra Large", -1, .F.) oControl := oControlPopup:CommandBar:Controls:Add( 1, 32887, "Auto Resize Icons", -1, .F.) oControl:BeginGroup = .T. oControlOptions:CommandBar:Controls:Add( 1, 3004, "Right To Left" ) oControlOptions:CommandBar:Controls:Add( 1, 3005, "Animation" ) oControlAbout := oRb:Controls:Add( 1, 4000, "&About") *oControlAbout: oControlAbout:Flags = 1 Flags = 1 && xtpFlagRightAlign AADD( aButtons, oButton1 ) AADD( aButtons, oButton2 ) AADD( aButtons, oQBtn1 ) AADD( aButtons, oQBtn2 ) AADD( aButtons, oQBtn3 ) AADD( aButtons, oExitBtn ) AADD( aButtons, oExitBtn2 ) AADD( aButtons, oControlAbout ) AADD( aButtons, oPrnSetup ) oButton1:Caption = "FiveWin Power!" oButton1:TooltipText = "Ribbonbar para FWH" ACTIVATE WINDOW oMain MAXIMIZED ON INIT (skin(oMain)) FreeLibrary( hBRDLL ) return nil function RibbonBarEvent( cEvent, aParams, pParams, aButtons, oWnd ) do case case cEvent == "Execute" .and. Len( aButtons ) > 0 do case case aButtons[ 1 ]:hObj == aParams[ 1 ] MsgInfo( "Button 1" ) case aButtons[ 2 ]:hObj == aParams[ 1 ] MsgInfo( "Button 2" ) case aButtons[ 3 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 1" ) case aButtons[ 4 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 2" + CRLF + "FIVEWIN SHARING POWER" ) case aButtons[ 5 ]:hObj == aParams[ 1 ] MsgInfo( "From Quick Access Button 3" ) Settings() case aButtons[ 6 ]:hObj == aParams[ 1 ] oWnd:End() case aButtons[ 7 ]:hObj == aParams[ 1 ] oWnd:End() case aButtons[ 8 ]:hObj == aParams[ 1 ] MsgInfo( "FWH's ActiveX Power support Codejock", "About Codejock" ) case aButtons[ 9 ]:hObj == aParams[ 1 ] PrinterSetup() endcase endcase return nil //------------------------------------------------------------------------------- FUNCTION skin( xWin ) xTipo++ if xTipo > 18 xTipo := 1 endif if xTipo = 1 cStyle := "WinXP_luna.cjstyles" Mudacor2007('Original') elseif xTipo = 2 cStyle := "WinXP_Royale.cjstyles" Mudacor2007('Original') elseif xTipo = 3 cStyle := "Office2007.cjstyles" Mudacor2007('Original') elseif xTipo = 4 cStyle := "Office2007b.cjstyles" Mudacor2007('Original') elseif xTipo = 5 cStyle := "Destiny.cjstyles" Mudacor2007('Bege') elseif xTipo = 6 cStyle := "Vista.cjstyles" Mudacor2007('Preto') elseif xTipo = 7 cStyle := "Batman.cjstyles" Mudacor2007('Degrade') elseif xTipo = 8 cStyle := "Crystal_dlb2.cjstyles" Mudacor2007('Original') elseif xTipo = 9 cStyle := "Cybertron.cjstyles" elseif xTipo = 10 cStyle := "Black.cjstyles" Mudacor2007('Preto') elseif xTipo = 11 cStyle := "3X.cjstyles" elseif xTipo = 12 cStyle := "Amot.cjstyles" elseif xTipo = 13 cStyle := "Avilla.cjstyles" elseif xTipo = 14 cStyle := "Capital.cjstyles" elseif xTipo = 15 cStyle := "CareloVS.cjstyles" elseif xTipo = 16 cStyle := "Cred.cjstyles" elseif xTipo = 17 cStyle := "Crypto.cjstyles" elseif xTipo = 18 cStyle := "Dunnes3.cjstyles" Mudacor2007('Degrade') endif oActiveX:= TActiveX():New( xWin, "Codejock.SkinFrameWork.13.0.0" ) oActiveX:Do( "LoadSkin", cStyle, "" ) oActiveX:Do( "ApplyWindow", xWin:hWnd ) //*@ 00,100 say cStyle return Nil //(xWin:refresh()) function Mudacor2007(mXCOR) do case case mXCOR = 'Preto' *** * Cor: preto * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.25, nRGB( 129, 132, 135 ), nRGB( 54, 58, 62 ) },; { 0.75, nRGB( 20, 40, 60 ), nRGB( 5, 10, 15 ) } },; { { 0.25, nRGB( 160, 173, 174 ), nRGB( 67, 112, 133 ) },; { 0.75, nRGB( 11, 66, 94 ), nRGB( 74, 134, 187 ) } } ) } *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 235, 160, 86 ), nRGB( 20, 20, 20 ) ) } case mXCOR = 'Bege' *** * Cor: Bege * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 1, nRGB( 195, 196, 194 ), nRGB( 151, 149, 150 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oBar:nClrText = { | lInvert | If( ! lInvert, nRGB( 235, 160, 86 ), nRGB( 20, 20, 20 ) ) } *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 000, 000, 000 ),nRGB( 155, 155, 155 ) )} case mXCOR = 'Degrade' *** * Cor: Degrade * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; { 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; { 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oBar1:nClrText = nRGB( 255, 0, 255 ) otherwise *** * Cor: Original * oBar1:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.50, nRGB( 178, 187, 202 ), nRGB( 137, 155, 179 ) },; { 0.50, nRGB( 129, 149, 174 ), nRGB( 114, 132, 156 ) } },; { { 0.50, nRGB( 139, 166, 193 ), nRGB( 69, 119, 170 ) },; { 0.50, nRGB( 52, 104, 152 ), nRGB( 50, 107, 162 ) } } ) } *oBar:nClrText = nRGB( 255, 255, 255 ) *oBar1:nClrText = { | lInvert | If( ! lInvert, nRGB( 000, 000, 000 ),nRGB( 155, 155, 155 ) )} endcase *** * Cor na Barra de Mensagens 2007 * *** * Cor: Degrade * *oMain:bClrGrad = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oMain:nClrPane = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } *oMain:nClrGrad = { | lInvert | If( ! lInvert,; *{ { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; *{ 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; *{ 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; *{ { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } oMain:nClrText = nRGB( 255, 0, 255 ) oMain:oMsgBar:bClrGrad = { | lInvert | If( ! lInvert,; { { 0.50, nRGB( 178, 187, 202 ), nRGB( 137, 155, 179 ) },; { 0.50, nRGB( 129, 149, 174 ), nRGB( 114, 132, 156 ) } },; { { 0.50, nRGB( 139, 166, 193 ), nRGB( 69, 119, 170 ) },; { 0.50, nRGB( 52, 104, 152 ), nRGB( 50, 107, 162 ) } } ) } oMain:oMsgBar:nClrPane = { | lInvert | If( ! lInvert,; { { 0.30, nRGB( 0, 228, 1 ), nRGB( 168, 231, 38 ) },; { 0.30, nRGB( 168, 231, 38 ), nRGB( 233, 175, 5 ) },; { 0.30, nRGB( 233, 175, 5 ), nRGB( 236, 8, 9 ) } },; { { 1, nRGB( 254, 255, 232 ), nRGB( 214, 219, 191 ) } } ) } return nil function MenuMain() Local oMenu1 MENU oMenu1 MENUITEM "&Skins" MESSAGE "Menu de Atividades" ACTION skin(oMain) MENUITEM "&Dialogo" MESSAGE "Teste de Dialogo com botoes" ACTION test() *oMenu1:MenuX() oMenu1:addMDI() oMenu1:addHelp() oMenu1:Saida() ENDMENU return oMenu1 function MENUPRINC() Local oMenu, oFirst, oSecond, oItHelp MENU oMenu 2007 MENUITEM "&DiÃ¥logo" ACTION Test() MENUITEM "&Skins" ACTION skin(oMain) MENUITEM "&Teste" MENU MENUITEM oFirst PROMPT "&First Alt-F2" MESSAGE "Op‡Æo 1" ; ACTION If( oFirst:lActive, oFirst:Disable(), oFirst:Enable() ) ; ACCELERATOR ACC_ALT, VK_F2 MENUITEM oSecond PROMPT "&Second Ctrl-F2" MESSAGE "Op‡Æo 2" ; ACTION oSecond:SetCheck( ! oSecond:lChecked ) ; ACCELERATOR ACC_CONTROL, VK_F2 SEPARATOR MENUITEM FILE "\dablys\fwh\bitmaps\End.bmp" MESSAGE "Bye, bye... -F2-" ; ACTION oWnd:End() ; ACCELERATOR 0, VK_F2 MENUITEM "Break (Parada)" BREAK MENUITEM "&Pr¢ximo" ENDMENU MENUITEM "Mais um Menu..." MENU MENUITEM "&Enable" ACTION oFirst:Enable() ; MESSAGE "Ok, Inicie novamente..." MENUITEM FILE "\dablys\fwh\bitmaps\print.bmp" MESSAGE "Funciona ? Shift-F2" ; ACTION MsgInfo( "Oi, eu sou Dablys D. Andrade!" ) ; ACCELERATOR ACC_SHIFT, VK_F2 MENUITEM FILE "\dablys\fwh\bitmaps\Phone.bmp" MESSAGE "Outro..." MENUITEM FILE "\dablys\fwh\bitmaps\Files.bmp" MESSAGE "Teste com Clientes" ENDMENU MENUITEM FILE "\dablys\fwh\bitmaps\Ico.bmp" MESSAGE "FiveWin, Ultra Power!" ; ACTION MsgInfo( "FiveWin: A poderosa ferramenta de xBase & OOPS" ) MENU MENUITEM FILE "\dablys\fwh\bitmaps\warning.bmp" MESSAGE "Really nice MenuItems!" MENU MENUITEM FILE "\dablys\fwh\bitmaps\red.bmp" MESSAGE "Red Color" MENUITEM FILE "\dablys\fwh\bitmaps\green.bmp" MESSAGE "Green Color" MENUITEM FILE "\dablys\fwh\bitmaps\yellow.bmp" MESSAGE "Yellow Color" MENUITEM FILE "\dablys\fwh\bitmaps\cyan.bmp" MESSAGE "Cyan Color" MENUITEM FILE "\dablys\fwh\bitmaps\magenta.bmp" MESSAGE "Magenta Color" ENDMENU ENDMENU MENUITEM oItHelp FILE "\dablys\fwh\bitmaps\magenta.bmp" HELP MENU MENUITEM FILE "\dablys\fwh\bitmaps\Calc.bmp" MESSAGE "Usando Calculadora Windows... Alt-C" ; ACTION MsgInfo( "A‡Æo Dupla..." ), WinExec( "Calc" ) ; ACCELERATOR ACC_ALT, ASC( "C" ) ENDMENU ENDMENU Return oMenu function SETTINGS() *oSettings = oActiveX:GetProp( "GlobalSettings" ) *MsgInfo( oSettings:Version ) msgInfo(globalsettings) return nil //----------------------------------------------------------------------------// function Test() LOCAL oDlgTst LOCAL oBtnNormal1, oBtnNormal2, oBtnNormal3, oBtnNormal4, oBtnNormal5 LOCAL oBtnAlpha1, oBtnAlpha2, oBtnAlpha3, oBtnAlpha4, oBtnAlpha5 DEFINE DIALOG oDlgTst RESOURCE "TEST" //// Botões normais Redefine ButtonBmp oBtnNormal1 id 351 of oDlgTst Bitmap "aBmp1" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnNormal1:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal2 id 352 of oDlgTst Bitmap "aBmp2" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnNormal2:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal3 id 353 of oDlgTst Bitmap "aBmp3" ; Prompt CRLF+CRLF+CRLF+"Sombreados" TEXTBOTTOM oBtnNormal3:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal4 id 354 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Contornos" TEXTBOTTOM oBtnNormal4:lBmpAlpha := .F. Redefine ButtonBmp oBtnNormal5 id 355 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Desabilitado" TEXTBOTTOM when .F. oBtnNormal5:lBmpAlpha := .F. //// Botões bmp alpha Redefine ButtonBmp oBtnAlpha1 id 451 of oDlgTst Bitmap "aBmp1" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnAlpha1:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha2 id 452 of oDlgTst Bitmap "aBmp2" ; Prompt CRLF+CRLF+CRLF+"Redondos" TEXTBOTTOM oBtnAlpha2:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha3 id 453 of oDlgTst Bitmap "aBmp3" ; Prompt CRLF+CRLF+CRLF+"Sombreados" TEXTBOTTOM oBtnAlpha3:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha4 id 454 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Contornos" TEXTBOTTOM oBtnAlpha4:lBmpAlpha := .T. Redefine ButtonBmp oBtnAlpha5 id 455 of oDlgTst Bitmap "aBmp4" ; Prompt CRLF+CRLF+CRLF+"Desabilitado" TEXTBOTTOM when .F. oBtnAlpha5:lBmpAlpha := .T. ACTIVATE DIALOG oDlgTst CENTERED RETURN NIL //----------------------------------------------------------------------------// procedure AppSys // XBase++ requirement return #INCLUDE "BUTTONB.PRG" #Include "menu.prg" #Include "RibbonClas.prg" ***** Registra BR.DLL DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BR.DLL" id=size2>id='Courier New'> Dablys D. Andrade Programador Clipper 5.3, xharbour, Fivewin Gov. Valadares - MG - lucklogan@msn.com
  22. Oi amigos, eu também testei o aplicativo gerador e achei bacana. Estudei o código resultante e vi que foi mesmo inspirado no antigo GENERA, porém mais atualizado e enxuto. Contudo, percebi alguns erros realmente, os quais já foram citados na maioria no tópico: 1) erro de sintaxe a linha 500 e poucos... ex: IF nOpcaoRadio == 2 uVar := "@!" ; <= Esse ponto e virgula não pode ter ELSE uVar := uTemp ENDIF 2) Eu compilei com o xHARBOUR 1_1_0 v6195 e deu certo, mas tive que tirar a biblioteca HBCT.LIB declarada no arquivo COMP.BAT; 3) Se o DBF contiver um campo LÓGICO, dá um erro no RESOURCE em tempo de execução, ou seja, compila, porém não roda, avisando erro de OBJETO RESOURCE NÃO DEFINIDO... (ERRO exatamente no GET de um CAMPO LOGICAL) Sugestão... TRANSFORME o GET do campo LOGICAL p/ CHECKBOX dentro do RESOURCE e no PRG associado. 4) Existe uma falha de sincronia no OBJETO LISTBOX com os objetos GETS do DIALOGO, porque quando se usa os botões de navegação, INICIO, PROXIMO, ANTERIOR, ULTIMO, para progressão dos registros, os GETS progridem mas o LISTBOX não. Sugestão... coloque um oLBX:refresh() em cada botão... 5) a Pesquisa só retorna registro encontrado se a string de BUSCA for exata,,, use no comando SEEK o TRIM()... Ex: seek TRIM( String_chave_da_Pesquisa ) Aí a busca poderá ser PARCIAL, ou seja, informando somente as primeiras letras se desejar... 6) Percebi que os RADIOS de troca da chave de pesquisa não estão fazendo seu papel direito, não trocando o indice da busca corretamente, retornando registro não encontrado quando feita troca de CHAVE INDEXADORA. 7) Se houver campos NUMÉRICOS ou DATA no LISTBOX o gerador não acrescenta na cláusula FIELDS os TRANSFORM()... para cada declaração de um CAMPO numérico ou Data é preciso ser transformado com TRANSFORM(), SENÃO, não aparece seu conteúdo dentro do BROWSE... 8) Na declaração de LISTBOX o tamanho dos campos está de acordo com a proporção do conteudo dos mesmos, mas de fato seria melhor se estisse proporcional ao NOME do campo que fica no cabeçalho do LISTBOX, para não dar a aparência de que o campo está truncado, sobrepondo em cima do espaço do Nome do CAMPO acima no cabeçalho, Sugestão... calcule o tamanho do CAMPO pelo seu nome de CABEÇALHO... eu fiz na mão e deu certo! 9) Finalmente, para melhorar, sugiro ir evoluindo com os amigos disseram, administrando em subpastas cada projeto, gerando o fonte associado a um MENU PRINCIPAL que também pode ser gerado, e dando a possibilidade de associar uns BITMAPS aos botões se desejar... Sendo assim, teria que ter uma rotina de geração do MENU PRINCIPAL, com BARRA DE BOTOES ou NÃO, com BITMAPs nos botões ou NÃO... Depois gerar cada módulo e poder associar a um item de do MENU PRINCIPAL... também pode ter barra de botões no DIALOGO de edição, melhorando assim seu potencial... Seria bom também poder escolher os campos de CHAVE para indexação e pesquisa, fazendo o programa GERADOR gerar tais chaves INDICES e um COMBOBOX com as opções de BUSCA sendo possivel assim o próprio usuário criar suas buscas. No mais, gostei muito do trabalho, e acho que é um grande incentivo para todos os iniciantes como eu, apesar de eu já ser um CLIPPEIRO antigo e não ter maiores dificuldades para criar telas assim na mão. Acredito que esta ferramenta, se bem aperfeiçoada, pode se tornar um bom utilitário para acelerar na criação das partes mais enfadonhas dos programas. Nota 1000 pela iniciativa deste projeto! Meus parabéns, e até outra oportunidade! Dablys Duarte Andrade MSN : LUCKLOGAN@MSN.COM Email: dablysandrade@yahoo.com.br Governador Valadares - Minas Gerais CLIP53, BLINKER7, WDBU, FIVEWIN, XHARBOUR, WORKSHOP, XMATE
  23. Oi galera gente boa do Fivewin, na mesma linha de raciocínio deste tópico já resolvido, eu pensei que talvez possam me dar uma dica de como fazer para que ao fechar um aplicativo FIVEWIN/XHARBOUR, eu consiga retornar o foco da janela WINDOWS, ao executável que tenha chamado antes tal aplicativo... ... para que isso?... tenho um aplicativo em CLIPPER e quero chamar um aplicativo XHARBOUR/FIVEWIN para executar um PREVIEW e impressão WINDOWS / USB dos meus relatórios CLIPPER gravados em formato TXT... ... já consegui isso,,, mais ou menos na linha do PRWIN... ... porém, ao finalizar o meu PREVIEW for WINDOWS do TXT CLIPPER,,, o Windows fica posicionando na área de Trabalho, e a janela PROMPT-MSDOS do XP fica Minimizada,,, e assim sendo, não retorna o "foco" ao meu programa CLIPPER para que possa continuar sua execução automaticamente... ... tenho que clicar na JANELA e dar um ESC depois... ... como automatizar isso, fazendo o sistema CLIPPER receber o foco de execução novamente? Agradeço desde já qualquer ajuda dos amigos! Dablys Duarte Andrade Programador: Clipper 5.3 - Blinker 7 - Fivewin / xHarbour Governador Valadares - Minas Gerais Email: dablysandrade@yahoo.com.br MSN : lucklogan@msn.com
  24. Oi amigo, não uso esta versão do Fivewin mais nova, porém, em conversas que já tive por aí no MSN com outros amigos já me falaram mesmo que tem diferenças no FWH 8.06. Pelo que vi aí na lista de erros seus, parece que voce talvez deva recompilar sua FIVEHX.LIB com sua versão do xHarbour que tenha, e claro, precisará dos fontes dela para fazer isso. Mas isso o pessoal do fórum tem. Outra coisa é o erro ALPHABLEND na FIVEHC,,, este com certeza é falta de uns arquivos novos do Borland C++ 5.5, que estão na pasta C:\BORLAND\BCC55\LIB\PSDK\... ... tente incluir o arquiv ..\BCC55\LIB\PSDK\MSIMG32.LIB ... agora, o terceiro erro parece ser porque voce está incluindo uma versão ERRADA de biblioteca para manipular bancos de dados SQL no seu aplicativo ou na compilação, ou está faltando alguma biblioteca referente a isso... Espero ter ajudado, e se quiser pode adicionar meu MSN... Falou amigo, boa sorte e T+ ! MSN: lucklogan@msn.com Clipper 5.3 - Blinker // Fivewin + xHarbour // xMate
  25. Amigo, entendo pouco de arquivos .RC, mas talvez seria o caso de voce abrir seu arquivo .RC no workshop, marcar nos parametros para salvar também em 32 Bits e gera um .RES dele. Aí voce linka com o aplicativo e vê se aparecem as imagens... penso que funcione assim... MSN: lucklogan@msn.com - Governador Valadares - MG Clipper 5.2/5.3 - Blinker - Exospace - xMate - xHarbour - Fivewin Editado por - dablys on 28/07/2008 14:15:06
×
×
  • Create New...