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 do '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 create 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 - OPanel1 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 CreatechbChecar2 as QCheckBox Left = 5 Top = 25 Width = 80 Caption = "Caixa 2" OnClick = Check2 End Create End Create 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.... |