Ret
RAPID-Q
Uma linguagem de Programação
    Basic
criada por William Yu
Carlos Godinho
Site de Rapid-Q
  em Português


1 - PROGRAMANDO EM RAPID-Q

Após fazer o download da pasta
"Rapid-q.zip" descompacte-a e copie a pasta Rapid-q ou arraste-a  para dentro da sessão"C:Arquivos de programas" ou para outro lugar de sua preferência. Não é necessário fazer uma instalação. Abra a pasta e clique duas vezes sobre o arquivo "Rapid-q.exe" e crie um atalho para ele a fim de poder acessá-lo mais facilmente. Cole esse atalho no Desktop ou outro lugar acessível. O programa"Rapidq.exe" é a IDE (Integrated Development Environment) Ambiente Integrado de Desenvolvimento ou interface de programação. É nela que você aprenderá a escrever os seus programas em Rapid-q. Os programas poderiam até mesmo ser escritos no Bloco de Notas desde que tenham a terminação ".bas", no entanto usando a IDE do Rapid-q você terá uma série de facilidades para criar os seus programas.

Abrir um programa já existente:
1 - Dê 2 cliques sobre o atalho do
"Rapidq.exe". A IDE se abrirá e mostrará 2 forms. O nome na aba superior do 1º é 'Form 1' e no que fica atrás é 'Rapid-Q Code Viewer'. Clique na aba superior do 2º para colocá-lo em evidência ficando apenas com o editor na tela.
2 - Clique em
'File' (no menu no alto da IDE à esquerda) e daí em 'Open' para abrir um programa já iniciado.
3 - Acesse a pasta
'Rapid-q' e abra um programa fonte em Rapid-q com o nome '$noname.bas' . Este programa é o mais simples, mostra apenas  um  form vasio.

Para compilar e rodar o programa clique em
'Run' no menu no alto da IDE e depois em 'Run F5' ou simplesmente pressione a tecla;F5 . O Rapid-q compila o programa e cria um executável (.exe) na mesma pasta onde está o fonte e roda o programa executável na tela. Para rodar o programa novamente basta clicar 2 vezes no executável. Para alterá-lo, altere o fonte e compile novamente.

Um programa novo, o mais simples possivel:
Com o editor vazio escreva ou copie daqui e cole:

  
'Inicio do programa
Create frmPrincipal As QForm
      Top = 110
      Left = 220
      Width = 250
      Height = 350
      Caption = "Programa teste"
 
End Create

  frmPrincipal.ShowModal
 
'Fim do programa

Obs.: As linhas em verde iniciadas com o apóstrofo são Comentários e não influenciam a programação mas, são importantes para lembrar.

Este programa cria um form ou formulário (janela) com o nome
'frmPrincipal'.
Propriedades:
distância do topo 110 pixels, à esquerda 220 pixels, de largura 250 pixels, de altura 350 pixels. A linha'frmPrincipal.ShowModal' significa que o form1 será mostrado na tela com todos os componentes a ele adicionados aguardanto algum comando.

Sempre que abrir o
'RapidQ.exe' e fizer um programa, ao rodá-lo ele será gravado automaticamente na pasta onde se encontra o 'RapidQ.exe', tanto o fonte como o executável com o nome $noname. Para mudar isso, antes de compilar, dê um nome ao programa e grave-o em uma pasta de sua escolha clicando no menu no alto da IDE em File e Save As e então pressione 'F5' para compilar e rodar. O Rapid-q vai gravar o fonte e o executável dentro da pasta escolhida'. Em seguida coloque um botão dentro do form, aninhando-o dentro do 'Create' do form:

 Create frmPrincipal As QForm
      Top = 110
      Left = 220
      Width = 250
      Height = 350
      Caption = "Programa teste"
      Create btnBotao as QButton
           Left = 74
           Top = 64
            Height = 25
           Width = 75
           Caption = "Clique"
     
End Create
  End Create


frmPrincipal.ShowModal

Em vez de colocar o
Create do botão dentro do Create do form poderia também colocá-los em sequencia e acrescentar a propriedade 'Parent' no Create do botão, o que diz ao programa que o form  é pai do botão ou acomoda-o, assim:

 
Create frmPrincipal As QForm
      Top = 110
      Left = 220
      Width = 250
      Height = 350
      Caption = "Programa teste"
 
End Create

 
Create btnBotao As QButton
      parent= frmPrincipal
      Left = 74
      Top = 64
      Height = 25
      Width = 75
      Caption = "Clique"
 
End Create

frmPrincipal.ShowModal

O primeiro método é melhor para se visualizar a arrumação dos componentes na tela. Adicione mais estes 2 componentes ao programa acima. Mantenha
'frmPrincipal.ShowModal' como a última linha, compile e execute..

 
Create lblRotulo as QLabel
      Parent= frmPrincipal
      Left = 93
      Top = 111
      Height = 13
      Width = 32
      Caption = "Senha"
 
End Create
 
Create edtCaixa as QEdit
      Parent= frmPrincipal
      Left = 88
      Top = 128
      Height = 21
      Width = 41
      Text = ""
      PasswordChar = true
      MaxLength = 6
 
End Create

Em vez de usar 
'Create' pode-se usar'Dim', que dimensiona variáveis ou simplesmente declara de que tipo é a variável. O componente 'Form' pode ser declarado também como uma variável.

  Dim frmPrincipal As Qform

  frmPrincipal.Top = 110
  frmPrincipal.Left = 220
  frmPrincipal.Width = 250
  frmPrincipal.Height = 350
  frmPrincipal.Caption = "Programa teste"

  frmPrincipal.ShowModal

Usando 
Dim o nome da variável 'frmPrincipal'  ou 'btnBotao'  tem de ser repetido para cada propriedade, separado  por  um  ponto. Também  a  propriedade 'parent' deve ser usada obrigatoriamente com exceção do form que será o depositário de todos os demais componentes.
Observe: 
'btnBotao' sem til. Não são aceitos sinais gráficos nos nomes dos componentes.

Acrescentando um botão:

 
Dim frmPrincipal as Qform
 
Dim btnBotao as Qbutton

  frmPrincipal.Top = 110
  frmPrincipal.Left = 22
  frmPrincipal.Width = 250
  frmPrincipal.Height = 350
  frmPrincipal.Caption = "Programa teste"

  btnBotao.parent=frmPrincipal
  btnBotao.Left = 74
  btnBotao.Top = 64
  btnBotao.Height = 25
  btnBotao.Width = 75
  btnBotao.Caption = "Clique"

  frmPrincipal.ShowModal

Uma maneira de não precisar repetir o nome do componente é usando
"With".
Exemplo:

 
With btnBotao
     .parent=frmPrincipal
     .Left = 74
     .Top = 64
     .Width = 75
     .Caption = "Clique"
 
End With

Observe que antes de cada propriedade se mantém o ponto.
Para entender os componentes utilizados e o que fazem vá à pagina inicial desta sessão e clique no botão
'Utilizando componentes Rapid-q' selecionando o componente desejado, veja suas propriedades, métodos e controle de eventos.

Significado de alguns componentes ou objetos:
     
Form = O formulário onde são colocados os demais componentes e que será apresentado na tela do computador ao se executar o programa.
     
Button = Um botão que provocará alguma ação (evento) ao ser pressionado.
     
Edit = Caixa de uma linha onde se pode escrever.
     
Richedit = Caixa multi-linhas onde se pode escrever ou carregar um texto.
     
Image = Painel onde uma imagem BMP será apresentada.
     
Label = Rótulo contendo um texto. O Rótulo pode ficar transparente aparecendo só o texto. É usado para formar títulos ou nomes de tabelas ou componentes.
      Panel = Recipiente onde se pode colocar um componente ou um conjunto deles.

Propriedades mais comuns:

     Top = Distancia do form até o topo da tela ou distância do componente até o topo do form.
     Left = Distancia do form até a lateral esquerda da tela ou do componente ao form.
     Width = Largura do form ou do componente nele contido.
     Height = Altura do form ou do componente nele contido.
     Caption = Título ou texto que aparecerá na margem no alto de um form ou na face de outro componente.
     Text = Texto em um Edit ou um Richedit.
     Color = Muda a cor do form ou do componente. (Button não muda de cor)
     Font = Fonte de caracteres para o texto no caption do form ou outro componente e text.
     Enable = Habilita ou desabilita o componente. Habilitado Enable = 1, Desabilitado  Enable = 0.
     Parent = Pai - Form ou Panel que conterá o componente.
     Visible = Visibilidade do form ou componente. Visível Visible = 1, Invisível Visible = 0.

Faça alguns exercícios com estes componentes e suas propriedades até se familiarizar bem com eles, depois começaremos a executar ações (eventos) ao se pressionar um botão, interpretar um texto no Edit e etc.


2 - PROGRAMANDO EM RAPID-Q


Voltando ao nosso programa de um Form com um botão, vamos executar uma ação com o pressionar deste botão. Até aquí apenas criamos Forms e colocamos neles componentes ou objetos, como buttons, labels e edits. Estes objetos porém servem de ponto de partida para a maioria das ações a serem executadas pelos programas. Vamos então começar por acrescentar uma ação ao botão (button), ou seja apagar e acender um anúncio.
Visto que além do Form estático teremos duas ações, precisaremos a princípio criar duas sub-rotinas, abreviadas como 
'Sub'. As sub-rotinas precisam ser declaradas logo no início do programa assim:

Declare Sub  NomeDaSubrotina       'Sub-rotina de ação - comentário

Obs.:
1 - Ao final de uma linha de programa podemos acrescentar comentários após o símbolo ['] de uma aspa simples ou apóstrofo. Veja o exemplo acima.
2 - O nome da sub-rotina pode ser escolhido pelo programador. Geralmente descreve a função.

Agora programaremos a seção dos
Creates . Iniciamos com o Create do Form que chamaremos de 'frmForm1' com as suas propriedades. Veja o significado de cada propriedade no final do capítulo anterior. Antes de encerrar o Create do Form com 'End Create' introduziremos o Create do botão com o nome 'btn- Bot1' e em seguida colocamos o Create do Label 'lblAnuncio', assim estes objetos aparecerão dentro do Form. (Nomes de objetos não admitem  acentos ou outros sinais gráficos como til e cedilha) Em seguida fecha-se a seção com o 'End Create' do Form.

Obs.:
1 - Um Label é algo como um rótulo onde colocamos caracteres. Neste colocaremos o nosso anúncio na propriedade de texto Caption como
Caption = "PISCANDO" A propriedade Visible iniciará desativada (anúncio apagado).
2 - Os nomes dos botões, forms ou outros objetos podem conter letras maiúsculas ou minúsculas a critério do programador, sendo uma questão de organização.
3 - Para uma padronização pode-se iniciar sempre o nome de um componente com uma abreviação do tipo de objeto.
Ex.: Button - btnBotao; Panel - pnlPainel; Form - frmPrincipal; Edit - edtEntrada; Richedit - rdtTexto; Label - lblCabecalho,  etc.

Poderá observar que junto com as propriedades dos 2 botões
btnBot1 e btnBot2 foi colocado o evento OnClick e o nome de cada sub-rotina pertinente. Significa que ao clicarmos no botão a sub-rotina será executada. Poderá pressionar o botão da página inicial e selecionar componentes verificando os vários eventos a que respondem muitos desses componentes.

Após a seção dos
'Create'colocamos a linha que faz o Form permanecer na tela aguardando uma ação do usuário ou um comando, ou seja:
frmForm1.ShowModal


Após a linha 
'frmForm1.ShowModal' colocamos as nossas sub-rotinas 'AçãoAcender' e 'AçãoApagar' . Veja que são as mesmas que declaramos  nas  linhas Declare Sub no início do programa. Estas têm de alterar a propriedade Visible dos 2 labels. Observe os comentários após o símbolo ['].


 
'Inicio do programa
 
Declare Sub AçãoAcende 'Sub-rotina de ação ao se pressionar o btnBut1.
 
Declare Sub AçãoApaga   'Sub-rotina de ação ao se pressionar o btnBot2.

 
Create frmForm1 As QForm
     Top = 110
     Left = 220
     Width = 250
     Height = 350
     Caption = "Programa teste"
    
Create btnAcende As QButton
          Left = 74
          Top = 50
          Height = 25
          Width = 75
         Caption = "Acende"
         OnClick = AçãoAcende
   
End Create
   
Create btnApaga As QButton
         Left = 74
         Top = 80
         Height = 25
        Width = 75
        Caption = "Apaga"
        OnClick = AçãoApaga
   
End Create
    Create
lblAnuncio As QLabel
        Left = 70
       Top = 120
       Height = 25
      Width = 100
      Caption = "P I S C A N D O"
      Visible = 0     
'o label inicia apagado.
  
End Create
End Create

frmForm1.ShowModal


Sub AçãoAcende
     lblAnuncio.visible = 1
'o label passa a ficar aceso.
End Sub

Sub AçãoApaga
     lblAnuncio.visible = 0
'o label passa a ficar apagado.
End Sub    

Obs.: Uma sub-rotina sempre se inicia com a palavra 'Sub' e se encerra com a expressão 'End Sub' .

Copie o programa para a IDE, compile e execute, e clique em cada um dos botões para ver os caracteres do anúncio apagar e acender.


Para melhorarmos o nosso programa poderíamos fazer a mesma coisa com apenas um botão e uma só sub-rotina. Para exercitar apague as linhas
'Declare Sub AçãoAcende' e 'Declare Sub AçãoApaga' e todas as linhas do create do botão 'btnApaga' , apague também as sub-rotinas 'Sub AçãoAcende' e 'Sub Ação Apaga'. Coloque agora no início do programa o novo'Declare':

Declare Sub AçãoPisca

No Create d
o 'btnAcende' altere o seguinte:

Caption = "Pisca"
OnClick = AçãoPisca

Em seguida crie uma linha
Dim para dimensionar a variável 'SimNão' contendo um valor inteiro e coloque-a após a linha 'Declare':

Dim SimNão as integer
    
Obs. : Uma variável significa que reservamos um local na memória para conter um valor variável e lhe demos um nome. Se fosse uma constante seria um valor fixo, por exemplo o valor de PI. Uma variável pode ser de vários tipos: inteiro, decimal, string (caracteres), etc. Para mais informações vá à página inicial, clique no botão 'Palavras Chaves & Instruções' , selecione 'Tipos de dados' e veja os vários tipos de variáveis suportados e suas possibilidades e limitações.

Após a linha 
frmForm1.ShowModal escreva a sub-rotina já declarada como segue:

 
Sub AçãoPisca
     
If SimNão = 0 Then     
          lblAnuncio.Visible = 1    
         SimNão = 1
     
Else               
         lblAnuncio.Visible = 0  
         SimNão = 0
    
End If
End Sub


Aquí temos uma novidade, é a declaração condicional
'If ... Then ... Else' que se encerra com 'End If'.'   Veja Em 'Palavras Chaves e Instruções' selecionando 'Condicionais'.      

Em nosso caso: Se
[If] a variável 'SimNão' = 0 (ela inicia como 0), então [then] o label passará a ser 'Visible = 1' (ativado,  aceso) e a variável; 'SimNão' passará a ser = 1 (ativado, aceso) memorizando esse valor na variável.
Senão 
[Else] , ou seja, se a variável 'SimNão' for diferente de 0, em nosso caso = 1, o label passará a ser Visible = 0 (desativado, apagado) e a variável memorizará esse valor.
Deste modo a cada vez que clicarmos no botão e executarmos esta sub-rotina inverteremos a propriedade Visible do label para apagarmos ou acendermos o  anúncio. A função desta sub-rotina é muito parecida à de um flip-flop eletrônico ou uma gangorra.

Confira o seu programa com o abaixo, compile e execute. Será que ficou melhor?

 
Declare Sub AçãoPisca  'Sub-rotina de ação ao se pressionar o botão.
  Dim SimNão as integer    'Dimensiona a variável como tipo inteiro.

 
Create frmForm1 As QForm
      Top = 110
      Left = 220
      Width = 250
      Height = 350
      Caption = "Programa teste"
     
Create btnBotão As QButton
          Left = 74
          Top = 50
          Height = 25
         Width = 75
         Caption = "Pisca"
         OnClick = AçãoPisca
    
End Create
     Create
lblAnuncio As QLabel
          Left = 70
          Top = 120
          Height = 25
          Width = 100
          Caption = "P I S C A N D O"
          Visible = 0
     'o label inicia apagado.
    
End Create
  End Create


  frmForm1.ShowModal 

 
Sub AçãoPisca
       
If SimNão = 0 Then             'Se SimNão for igual a zero então...
             lblAnuncio.Visible = 1   
'faça o anuncio acender (visivel)
             SimNão = 1                 
'e ponha a variável SimNão em 1.  (Para que o outro ramos de If saiba o estado anterior)
      
Else                                    'Se não. Caso a var. SimNão for 0;   
            lblAnuncio.Visible = 0  
'faça o anuncio apagar (invisivel)   
             SimNão = 0                
'e ponha a variável SimNão em 0.   (Para que o outro ramos de If saiba o estado anterior)
      
End If                                 'Fim da tomada de decisão.
  End Sub

                                                
'No próximo pressionar do botão todo o processo se inverterá.       


3 - PROGRAMANDO EM RAPID-Q


Agora vamos trabalhar com uma 'Edit', ou seja uma linha em branco em que podemos mostrar uma mensagem ou escrever algo. Comecemos declarando a subrotina 'ApagaTexto' e a seguir criemos um Form contendo uma Edit, umBotão e um Label. Os nomes 'frmForm1', 'edtTexto', 'btnBotao' e 'lblRotulo' podem ser mudados à vontade, já o Qform, Qedit, Qbutton, Qlabel são os tipos dos componentes. Copie e execute.

Obs. : Iniciar os nomes dos Forms como frm, os dos Edits como edt, os dos Buttons como btn, os dos Labels como lbl e etc não é obrigatório mas ajuda-nos a identificar o tipo de objeto a que o nome corresponde.            

Declare subApagaTexto

 
create frmForm1 as QForm
   
create edtTexto as QEdit
        left = 20
        top = 50
        width = 150
        text = "Clique para apagar."
        charcase = 0
   
end create
    create
btnBotão as QButton
       left = 180
       top = 50
       caption = "Apagar"
       onClick = ApagaTexto
   
end create
    create
lblRotulo as QLabel
       left = 20
       top = 80
       visible = 0
       caption = "Escreva na linha"
   
end create
  end create
   

frmForm1.showmodal

 
sub ApagaTexto
      edtTexto.text = ""
      lblRotulo.visible = 1
 end sub


Na linha da edit colocamos um texto inicial que depois pode ser apagado e reescrito. Nas páginas dos componentes procure QEdit e veja as várias; características da edit. Altere a característica 'CharCase'. CharCase = 1 faz as letras ficarem em maiúsculas se = 0 as  fará  minúsculas. A característica  CharCase  pode ter 3 valores: 0 = Normal (misto), 1 = maiúsculas e 2 = minúsculas. Com zero podemos escrever maiúsculas ou minúsculas. Observe que além de podermos colocar os valores 0, 1 e 2 podemos também escrever ecNormal, ecUpperCase ou ecLowerCase, o mesmo se dá quando por exemplo escrevemos visible = 0,   poderia ser visible = false, e visible = 1 poderia ser visible = true, Para podermos fazer essa troca teremos que usar o programa 'RapidQ.inc' que está na mesma pasta do RapidQ.exe e para isso o programa RapidQ.inc precisa ser inserido no nosso programa e para isso basta acrescentarmos a linha; $Include "RapidQ.inc" logo no inicio do programa.
Alguns valores permanecem como numeros, a margem
'left', a largura 'width', a altura 'height', a distância do topo 'top', a característica 'MaxLength' que limita o numero de caracteres que se podem escrever e etc.
Se usarmos a característica 'ReadOnly = true' a edit apenas nos permite ler o texto nela escrito pelo programa mas não poderemos escrever diretamente nela. Se usarmos 'ReadOnly = false' poderemos ler e escrever. Experimente usá-la.
Poderemos acrescentar também um evento à
'Edit' tal como; 'OnKeyUp = AlterouTexto'. Para isso precisaríamos declarar a sub-rotina no inicio; assim: 'Declare sub AlterouTexto' e depois acrescentar a sub no final do programa. Nessa sub podemos por exemplo indicar que o texto foi modificado. Um evento onKeyDown ocorre quando pressionamos o botão esquerdo do mouse e o onKeyUp, quando soltamos o botão. Assim poderíamos acrescentar:

 subAlterouTexto
       lblRot1.caption = "Este texto não é o original!!!"
 
end sub

Ao inserirmos um texto que não é o original isso seria denunciado. O nosso programa ficaria assim:

$Include "RapidQ.inc"      'acrescentado

Declare sub ApagaTexto   'acrescentado   
Declare sub  AlterouTexto

 
create frmForm1 as QForm
     
create edtTexto as QEdit
           left = 20
          top = 50
          width = 150
          text = "Clique para apagar."
          Charcase = true                 
 'modificado 
           onKeyUp = AlterouTexto  
  'acrescentado
     
end create
      create
btnBotão as QButton
          left = 180
          top = 50
          caption = "Apagar"
          onClick = ApagaTexto
     
end create
      creat
e lblRotulo as QLabel
          left = 20
          top = 80
          visible = true                     
 'modificado
          caption = "Altere a linha"
     
end create
  end create


  frmForm1.showmodal 


 sub ApagaTexto
      edtTexto.text = ""
 
end sub

 
sub  AlterouTexto                    'acrescentado
      lblRotulo.caption = "Este texto não é o original!!!"

  end sub
      


4 - PROGRAMANDO EM RAPID-Q


Um objeto muito útil é o
CheckBox . É uma pequena caixa que pode ser marcada para dar início a uma ação, ou várias dessas caixas para se fazer uma  seleção. Rode o exemplo abaixo para começar.
Veja que a ação ativada por
onClick no CheckBox é a subrotina Check. Nela mostramos a mensagem 'ShowMessage' sempre que a  caixa for  clicada. Esse 'ShowMessage' é um pequeno form que mostra uma mensagem e pára o programa até ser apagado da tela.

  Declare Sub Check

  Create frmForm1 as QForm
   
  Create chbChecar as QCheckBox
          Left = 10
          Top = 20
          OnClick = Check

     End Create
End Create

   
  Sub Check
       Showmessage "Checado!"
  End Sub

  frmForm1.ShowModal


Rode o programa e clique sobre a pequena caixa, veja o que acontece...

Obs.: Não colocamos nenhuma propriedade em frmForm1 por isso ele aparecerá no tamanho default (padrão) ou valor inicial predeterminado.

Agora vamos colocar este
CheckBox dentro de um pequeno painel para ficar mais bem acabado. Observe que agora o CheckBox ficará dentro do painel pnlPanel. As margens left e top do CheckBox também terão de ser alteradas, além de limitarmos sua largura em Width. Adicionamos também um Caption  ou letreiro.


  Declare Sub Check

  Create
frmForm1 as QForm
      
Create pnlPainel as QPanel
            Top = 20
            Left = 10
            Width = 100
      
      Create chbChecar as QCheckBox
                  Left = 5
                  Top = 5
                  Width = 80
                  Caption = "Caixa 1"
                  OnClick = Check
            
End Create
       End Create    
  End Create

   
 Sub Check
        Showmessage "Clicado!"
 
  End Sub

  frmForm1.ShowModal 


E agora se quisessemos em vez de uma caixa de marcar, duas caixas?

1º - Dentro do painel
Panel1 colocamos mais um CheckBox. Os 2 CheckBoxes devem agora ser diferenciados CheckBox1 e CheckBox2.  Os Captions também.
2º - Os comandos de ação agora são dois e as subrotina também:
Check1 e Check2. Cuidado as declarações 'Declare'  iniciais devem ser alteradas, agora são duas..
3º - As subrotinas agora também são duas devidamente diferenciadas, inclusive suas mensagens.
4 - O
Panel1 teve de mudar sua altura para conter duas caixas.
Observe que a característica
'Top' das duas caixas é diferente. Porquê? Uma deve ficar embaixo da outra.     


  Declare Sub Check1
  Declare Sub Check2

  CreatefrmForm1 as QForm
      
Create pnlPainel as QPanel
            Top = 20
            Left = 10
            Width = 100
            Height = 50
           
Create chbChecar1 as QCheckBox
                 Left = 5
                 Top = 5
                 Width = 80
                 Caption = "Caixa 1"
                 OnClick = Check1
          
End Create
           Create
chbChecar2 as QCheckBox
                 Left = 5
                 Top = 25
                 Width = 80
                 Caption = "Caixa 2"
                 OnClick = Check2
          
End Create
      End Creat
e   
 
End Create
   
  Sub
Check1
      Showmessage "Clicado 1!"
  End Sub

  Sub
Check2
      Showmessage "Clicado 2!"
 End Sub    

frmForm1.ShowModal  
    

Tente fazer modificações. Por exemplo dentro das subrotina
Check 1 e Check 2 em vez de mostrar mensagens faça com que os captions dos   CheckBox1  e CheckBox2 sejam mudados.
Uma sugestão é que o caption dos
CheckBoxes indique a sua própria condição. Por exemplo mude a subrotina Check1 para:

 Sub Check1
      If Checar1.checked = 1 then Checar1.caption = "Marcado"
      If Checar1.checked = 0 then Checar1.caption = "Desmarcado"
  End Sub

Depois faça o mesmo com a subrotina
CheckBox2 alterando os nomes concordemente.
Sucesso!


5 - PROGRAMANDO EM RAPID-Q


Isto foi apenas uma pequena introdução à arte de programar, há muito o que aprender mas, agora sem dúvida ficou um pouco mais fácil.

Para conhecermos a linguagem
Rapid-q temos a Documentação de Programação em Rapid-q. Para conhecermos todos os tipos de variáveis e dados, todos os operadores, palavras chaves, procedimentos, ramificações e etc. Temos a página  Documentação de Palavras Chaves e Instruções .
Nas páginas dos Componentes (são um total de 54 - de Application a QtreeView) temos 4 sessões para cada componente. Alguns componentes têm menos sessões. Cada sessão é dividida em colunas formando uma tabela.
Tomemos o componente
'Form' como exemplo:

1ª sessão:'Propriedades'
Algumas propriedades são comuns a quase todos os componentes outras são específicas de apenas alguns, outras exclusivas.
Ex.: WindowState é exclusiva do Form.
1ª coluna  'Campo' - Contém os nomes das propriedades. Alguns nomes estão sublinhados indicando que são também links. Pressionando-os com o botão direito do mouse podemos obter mais informações sobre a propriedade ou sobre os valores que lhe são atribuidos além do padrão constante na 4ª coluna.
2ª coluna 'Tipo' - Contém os tipos (types) das propriedades. Alguns têm valores de variáveis simples como INTEGER ou STRING, outros são Types do próprio Rapid-q como RESOURCE, QFORM, QFONT, QPOPMENU, QPANEL, QTABCONTROL, ARRAY... e etc.
3ª coluna  'R/W' - Esta coluna indica se a propriedade é só de leitura, só de escrita ou ambas as coisas. Escrita:  faça frmForm.width = 105. Obtem-se um form com 105 pixels de largura.  Leitura:A = frmForm.width. A variável inteira (integer) 'A' passará a ter o valor da largura do form.
4ª coluna  'Padrão' - Este é o valor padrão da propriedade que poderá ser modificada pelo programador. Algumas têm apenas 2 opções: verdadeiro (true) ou falso (false), outras têm como valor uma variável cujo padrão é mostrado. Ex.: 'bsSizeable'. Outros valores são possíveis e para obtê-los basta clicar no link do nome da propriedade 'BorderStyle'. Há também os valores numerais padrão como para left, top e etc. Estes serão modificados pelo programador.
5ª coluna  'Suporte' - Indica os sistemas operadionais que têm suporte para estas propriedades. W = Windows, X = Linux e G = Solaris
2ª sessão 'Métodos' - Os métodos são subrotinas pré-programadas já embutidas no Rapid-q. Algumas necessitam de dados adicionais que são colocados entre parênteses. Ex.: CopyRect(D, Image, S). Outras não necessitam de mais nada. Ex;: Center.
1ª coluna   'Método' - Contém o nome do métodos ou subrotinas embutidas. Alguns nomes também estão sublinhados significando que são links e clicando-os podemos obter informações adicionais.
2ª coluna  'Tipo' - Contém o tipo de subrotina, pode ser: SUB, SUBI ou FUNCTION.
3ª coluna  'Descrição' - Contém uma descrição do que o método faz.
4ª coluna  'Parâmetros' - Para o tipo SUBI traz o tipo de dados: Integer, String ou outro e a quantidade de dados, geralmente 'infinite' ou seja sem limite. No caso de SUB ou FUNCTION traz o numero de parâmetros necessários.
4ª coluna  'Suporte' - Indica os sistemas operacionais que têm suporte para estas propriedades. W = Windows, X = Linux e G = Solaris
3ª sessão 'Eventos' - Os eventos refletem as ações do usuário ou outro acontecimento, um botão pressionado (onClick), um form que foi fechado (onClose), uma tecla pressionada (onKeyPress) ou um acontecimento como o fim de uma contagem de tempo. Obs.: O evento KeyPress só funcionará se a propriedade KeyPreview estiver ativada, 'KeyPreview = 1' ou 'KeyPreview = true'.
1ª coluna  'Evento' - É o que aconteceu.
2ª coluna 'Tipo' - Alguns eventos não têm tipo (VOID [vazio]) outros são parâmetros que a SUB chamada pelo evento terá que agregar. Ex.:

                              
Sub BotãoClicado
                                      'Conteúdo
                              
End sub

                              
Sub Calculo(comp% larg% alt%)
                                     'Conteúdo
                              
End sub


Obs.: Quando se declara a SUB incluem-se os parâmetros.
Ex.: Declare sub Calculo(comp% larg% alt%)
3ª coluna - 'Ocorre quando...' - Declara-se o evento que ocorreu.
4ª coluna - 'Parâmetros' - Menciona-se o número de parâmetros usados.
5ª coluna - 'Suporte' - Indica os sistemas operacionais que têm suporte para estas propriedades. W = Windows, X = Linux e G = Solaris
4ª sessão  - 'Exemplos' - Um programa exemplo de aplicação do componente em destaque.

Após considerar esta parte execute programas baixados em
Download.




6 - PROGRAMANDO EM RAPID-Q


Dicas importantes e sugestões:


1 - API do Windows:
API do Windows, (Application Programming Interface) ou  (Interface de Programação de Aplicativos) é o conjunto de rotinas de software utilizadas para acessar as funcionalidades do Sistema Operacional e que são utilizadas pelas linguagens de programação como o Rapid-q e as demais.
O Rapid-q (como as demais linguagens)  não utiliza todas as rotinas da API do Windows. Quando uma funcionalidade da API não disponivel na linguagem se torna necessária o programador pode lançar mãos de uma Function da API. Esta possibilidade amplia muito os horizontes da programação.
O modo de utilização das Functions da API no Rapid-q difere de algumas outras linguagens como por exemplo do Visual Basic no fato de necessitar de um
"Alias" para chamar a Function. Veja o item seguinte.

2 - Focus:
FUNCTION GetFocus Lib "user32" Alias "GetFocus"() AS LONG
FUNCTION Setfocus Lib "user32" Alias "SetFocus"(hwnd As Long) AS LONG
Estas duas Functions da
API nos ajudam, a primeira quando temos de saber qual, dentre determinados objetos, tem o foco e a segunda coloca em foco o objeto que determinarmos. Por exemplo, você quer que o cursor esteja  no 1º edit de uma série deles. Quando você preencher esta edit e clicar ENTER você quer que o cursor vá automaticamente para o edit seguinte. Use o foco para isso. Veja uma aplicação no programa "Focus1.bas" no link  Componentes e na pasta  Button.

3 - Linhas:
As linhas do Rapid-q não são numeradas, mas elas têm um numero que aparece no StatusBar ou barra de estado na parte inferior da janela quando colocamos o cursor numa linha. No caso de alguns erros é mencionada a linha em que este ocorreu.
Ao programar não se preocupe com o tamanho das linhas mas se por motivos estéticos necessitar interromper uma linha e continuá-la na próxima, faça o seguinte: Termine a palavra, pare, dê um espaço, digite um anderline ( _ ) e continue na linha seguinte. O Rapid-q entenderá que as duas linhas funcionam como uma só linha.
Acontece de muitas vezes um comando ocupar muito pouco de uma linha, pode-se colocar um segundo comando na mesma linha? Sim. Basta separar um do outro com dois pontos  ( : ).

4 - TickCount e Sleep:
O Rapid-q possui 2 tipos de temporizador;
QTimer e o QDXTimer . Geralmente criamos um destes componentes quando vamos fazer uso contínuo deles mas, e se formos precisar de um temporizador uma só vez, talvez uma paradinha em uma linha de programação? Neste caso podemos usar a Function TickCount   da API. Esta função apenas retorna o numero de segundos passados desde que o micro foi ligado, então fazemos assim: Colocamos esse valor em uma variável, somamos-lhe o tempo que desejamos e aguardamos esse tempo chegar, simples. A vantagem de TickCount é o uso de Doevents  dentro do loop, o que permite que outros objetos dentro do programa continuem funcionando. Veja o exemplo do programa "TickCount.bas" dentro da pasta "APIs" . (Download)
Ex.:  
         
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" As Long   'Linha da declaração da função
        ------------------
         tmp = GetTickCount    
'tmp = milisegundos desde que o micro foi ligado
          Do                                
'Início do loop
         Doevents
         Loop until tp + 5000 = GetTickCount 
'Fim do loop
         ------------------

Ao subrotina Sleep pode parecer igual mas, durante o tempo de espera o programa fica totalmente bloqueado. Veja o exemplo do programa
"Sleep.bas" dentro da pastaAPIs . (Download)
Ex.:
        
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds
        ------------------
        Sleep 5000   
'Dorme 5000 milisegundos
        ------------------

5 - Beep:
Quantas vezes sentimos falta de um retorno audível quando pressionamos um botão ou outro objeto cujo evento gerará resultados tangíveis. A função
"MessageBeep" pode ser a solução. Quando ativada gerará um sinal sonoro nas caixas de altofalantes do micro. Veja o exemplo do programa "speaker beep.bas" dentro da pasta APIs.  (Download)
Ex.:
        
Declare Function MessageBeep Lib "user32.dll" Alias "MessageBeep" (ByVal wType As Long) As Long
        ------------------
        
Dim Retval As Long
        Retval = MessageBeep (50) '10, 20, 70, 80
        ------------------

6 - Sender:
Imagine uma série de botões que a partir de um único evento (Pressionado) devem acessar uma mesma rotina, para isso existe a palavra
Sender   que substitui o nome do objeto que originou o evento. Há ainda outras aplicações.
Ex.:
  btnUm.onClick = onBut(Sender
as QButton )
  btnDois.onClick = onBut(Sender
as QButton)
 
'etc......

 
Sub  onBut (Sender as QButton)
  ----------
 
End sub

7 - Ícones:
Num mesmo programa dois ícones podem ter seu lugar. Um deles pode ser a figura que aparece á esquerda na barra de título e o outro a figura do ícone do programa. Para determinarmos o ícone que será o padrão do programa .bas colocar no início do programa o seguinte comando:
$Option icon "caminho\prog.ico".

Já para colocarmos um ícone na barra de título há duas maneiras. Uma necessita que o arquivo do ícone esteja na mesma pasta do programa:
Form.IcoHandle = "caminho\titulo.ico".

Uma segunda maneira é usando $Resource. Neste caso o ícone como $Resource vai imbutido no executável (.exe).
$Resource Título_Ico as  "caminho\titulo.ico"
Form.IcoHandle = Título_Ico

8 - ShowModal:
Qual a diferença?

     
create form as QForm            create form as QForm
         center         ;                            center
          showModal                       
end create
     
end create                              'conteúdo....
     
'subrotinas                            form.showModal                        
                                                  
'subrotinas

A propriedade ShowModal é na realidade uma função que corresponde a um loop fechado, como a seguinte  linha no Basic antigo:
Label: Goto Label

Assim quando se coloca o ShowModal dentro do create do form, outros comando ou instruções colocadas após esse create não serão executados. Apenas sub-rotinas ou funções serão acessadas.
Quando o ShowModal é colocado fora do create do form, toda uma programação inicial pode ser colocada em
'conteúdo. Talvez haja; toda uma configuração inical e a carga de arquivos necessários, etc.

Futuras dicas poderão ser acrescentadas....

 
Envie-me um Email:    godin13@hotmail.com               Críticas, sugestões e solicitações são benvindas                Meus doownloads favoritos:    Kerodownload