Beruflich Dokumente
Kultur Dokumente
Depois de pronta a estrutura dos menus, associar manipuladores de eventos aos itens de menu bastante fcil. Feche o Menu Designer e clique sobre o item de menu ao qual voc deseja associar um manipulador. Por exemplo, se voc tivesse um item Sair, o cdigo seria o seguinte: procedure TForm1.mnuSairClick(Sender: TObject); Anotaes:
close;
onde mnuSair foi o nome dado ao item de menu. Tambm possvel criar submenus, ou menus aninhados. Basta voc clicar sobre um item no Menu Designer e apertar simultaneamente as teclas Ctrl e seta para a direita. Isto abrir um submenu partindo do item em que voc clicou. Contudo, no abuse dos submenus, porque o cursor pode se mover enquanto voc faz uma seleo, tornando a estrutura um pouco instvel. A construo de menus flutuantes semelhante de menus suspensos, mas sua exibio exige um pequeno truque. Para construir um menu deste tipo, posicione o componente PopupMenu no formulrio e configure-o como se fosse um MainMenu, lembrando-se que menus deste tipo tm apenas um item principal. A seguir, chame o mtodo Popup para exibir o menu flutuante nas coordenadas (X, Y), como mostrado abaixo: procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then PopupMenu1.PopUp(X,Y); end; Note que voc deve escrever este manipulador no evento OnMouseDown do formulrio, procurando-o com auxlio do Object Inspector. Este evento ocorre quando o mouse pressionado e repassa o parmetro button, que indica qual boto do mouse foi pressionado, e o parmetro shift, que indica o estado das teclas shift, ctrl e alt durante o evento. O que o manipulador faz identificar se o boto direito foi pressionado e, caso tenha sido, exibir o menu flutuante nas coordenadas X e Y. Voc pode construir manipuladores mais complexos, que sejam sensveis a determinadas regies da tela, mostrando menus diferentes (Popupmenu1, Popupmenu2, etc.).
Anotaes:
O cdigo do menu Editar ser construdo a partir do objeto Clipboard, e no de uma prosaica varivel CortaTexto, como no Bloco de Notas. A vantagem que o texto cortado ou copiado estar acessvel a todos os aplicativos Windows. Para usar o Clipboard, necessrio incluir a unidade Clipbrd na clusula uses, como a seguir: implementation uses Clipbrd;
O objeto Clipboard muito fcil de usar se empregaremos os mtodos adequados. Para iniciar a programao, escreva os seguintes procedimentos:
Anotaes:
procedure TfrmEditor.mnuColarClick(Sender: TObject); begin txtEditor.PasteFromClipboard; end; Toda a funcionalidade do menu Editar fornecida por estes trs mtodos do Clipboard. O cdigo do menu Fontes pode ser implementado rapidamente. A diferena que estaremos usando a propriedade Checked dos menus, para identificar qual a fonte atualmente selecionada. procedure TfrmEditor.mnuCourierClick(Sender: TObject); begin txtEditor.SelAttributes.Name := 'Courier'; RemoveCheck; mnuCourier.Checked:=true; end;
Anotaes:
procedure TfrmEditor.mnuScriptClick(Sender: TObject); begin txtEditor.SelAttributes.Name := 'Script'; RemoveCheck; mnuScript.Checked:=true; end; procedure TfrmEditor.mnuSymbolClick(Sender: TObject); begin txtEditor.SelAttributes.Name := 'Symbol'; RemoveCheck; mnuSymbol.Checked:=true; end;
A procedure RemoveCheck deve ser implementada externamente, tendo a funo de remover as barras de verificao de todos os menus.
Anotaes:
procedure RemoveCheck; begin with frmEditor do begin mnuCourier.Checked:=false; mnuHelvetica.Checked:=false; mnuRoman.Checked:=false; mnuModern.Checked:=false; mnuScript.Checked:=false; mnuSymbol.Checked:=false; mnuSystem.Checked:=false; end; No se esquea de incluir a procedure RemoveCheck tambm no cabealho da unidade. Os comandos para o menu mnuArquivo so mais complicados e exigem que trabalhemos com arquivos e janelas de dilogo, o que ser visto nas prximas sees.
Anotaes:
Janelas previamente carregadas na memria podem ser mostradas fazendo-se a propriedade Visible verdadeira. Da4.2 - Propriedades carregadas na memria podem ser escondidas fazendo-se Visible falsa. Figura mesma forma, janelas de formul?rios Quando uma janela descarregada da memria, todos os seus componentes, variveis locais e procedimentos tornam-se inacessveis. Vale salientar que formulrios que tenham sido apenas escondidos, mas no descarregados, continuaro presentes, ocupando memria. Entretanto, podero ser acessados muito mais rapidamente da prxima vez em que forem necessrios, haja vista que no precisaro ser recuperados do disco. A Figura 4.1 mostra algumas caractersticas de formulrios que podem ser teis na personalizao, bem como para evitar que o usurio faa coisas que no deve, tais como maximizar ou minimizar o formulrio ou acessar a Control Box. Estas caractersticas podem ser configuradas por meio da propriedade BorderStyle, que pode assumir os seguintes valores: bsDialog: a caixa de dilogo aparece sem a Control Box e sem os botes MinButton e MaxButton. A borda no dimensionvel; bsNone: a caixa aparece sem borda; bsSingle: borda simples, com todos os botes, mas no dimesnionvel; bsSizeable: borda dimensionvel, com todos os botes; bsSizeToolWin: borda dimensionvel, com legenda reduzida; bsToolWindow: borda no dimensionvel, com legenda reduzida. Estas propriedades so teis na personalizao de formulrios, mas devem ser usadas com cuidado. O usurio deve ter ao menos uma opo de fechar a janela antes de recorrer s derradeiras teclas Ctrl + Alt + Del ... Uma recomendao til que voc pense, antes de mais nada, em opes de sada do formulrio, pois muito fcil esquecer delas depois. Botes de comando tambm tm algumas propriedades que ajudam na personalizao de caixas de dilogo. Default: O boto que tiver Default verdadeiro (true) ser acionado quando o usurio pressionar Enter; Cancel: O boto que tiver Cancel verdadeiro ser acionado quando o usurio pressionar Esc.
Anotaes:
Figura 4.3 Tudo comea quando o usurio seleciona uma unidade em Drive1, gerando um evento change. Devemos capturar este evento e atribuir o Drive selecionado ao Drive da caixa de lista de diretrios (Dir1). A atribuio desta propriedade gerar um evento change em Dir1. Novamente, este evento ser capturado para repassar o nome correto do arquivo para File1. Finalmente, o caminho completo repassado para a caixa de edio txtArquivo. Para implementar esta automao na janela Abrir Arquivo, escreva os seguintes trechos de cdigo nos objetos correspondentes: procedure TfrmAbrir.Drive1Change(Sender: TObject); begin Dir1.Drive:=Drive1.Drive; end; procedure TfrmAbrir.Dir1Change(Sender: TObject); begin
Anotaes:
end;
Nada muito complicado, no mesmo ! O formulrio frmAbrir, finalmente, pode ser configurado de modo a ficar como na Figura 4.4. Falta apenas escrever os cdigos para os botes cmdOK e cmdCancelar. O mais simples deles o boto cmdCancelar, cuja procedure para o evento clique deve apenas descarregar o formulrio sem realizar ao alguma, conforme mostrado abaixo. procedure TfrmAbrir.cmdCancelarClick(Sender: TObject); begin close; end;
Figura 4.4 - O formulrio frmAbrir A instruo Close sempre fecha o formulrio ativo. Caso este formulrio seja tambm o formulrio principal, o aplicativo encerrado.
Anotaes:
Note que voc precisa declarar a varivel NomeArquivo como um string na seo var da unidade Edit1. O mtodo LoadFromFile providencia toda a automao necessria para a manipulao do arquivo sequencial.
Figura 4.5 - o formulrio frmSalvar Agora, tudo que falta escrever o cdigo para carregar os formulrios frmAbrir e frmSalvar, quando requerido pelo usurio. Isto feito nas procedures associadas aos menus mnuAbrir e mnuSalvar, respectivamente.
Anotaes:
Nosso editor est quase pronto. Falta apenas implementar um modo de mudar a cor do texto selecionado. Esta tarefa ser deixada como exerccio, mas vai aqui uma dica. Para compor uma cor qualquer voc pode usar a funo RGB, cuja sintaxe mostrada abaixo: MinhaCor := RGB (Vermelho, Verde, Azul); onde os parmetros Vermelho, Verde e Azul variam de zero (intensidade mnima para a cor correspondente) e 255 (intensidade mxima). A cor obtida , assim, uma mistura de vermelho, verde e azul (as chamadas cores bsicas aditivas). Para atribuir a cor gerada ao texto selecionado, escreva a seguinte linha: frmEditor.txtEditor.SelAttributes.Color:=MinhaCor;
Anotaes:
Popup Menu
No
Label
Sim
Edit
Sim
Memo
Sim
Button
Sim
CheckBox
Sim
Anotaes:
Tabela 4.2.b Componentes da Pgina Standard CONE ListBox VISUAL Sim PROPRIEDADES,EVENTOS,OU MTODOS RELEVANTES Exibe uma lista de escolhas P:ItemIndex P:Columns P:MultiSelect P:Selected P:Items M:Add* M:Delete* M:Insert* * Items property (TStrings object) Combina um edit box e uma list P:Text box para exibir uma lista de P:ItemIndex escolhas P:Sorted P:Items M:add* M:Delete* M:Insert* * Items property (TStrings object) Move atravs de uma faixa de P:Kind incrementos P:LargeChange P:SmallChange P:Min P:Max P:Position E:OnScroll M:SetParms Agrupa componentes, P:Caption geralmente utilizado para P:Parent representar um grupo de opes relacionadas Agrupa radio buttons para que P:Columns trabalhem em conjunto como P:Items um grupo P:ItemIndex Exibe um painel onde outros P:Align componentes podem ser P:Alignment inseridos P:Caption PROPSITO
Combo Box
Sim
ScrollBar
Sim
GroupBox
Sim
Sim Sim
Anotaes:
A tabela 4.3 a seguir descreve os componentes na pgina Additional da Paleta de Componentes: Tabela 4.3.a Componentes da Pgina Additional CONE BitBtn VISUAL Sim PROPSITO Fornece um boto que exibe um bitmap no boto PROPRIEDADES,EVENTOS,OU MTODOS RELEVANTES P:Kind P:Glyph P:Default P:Cancel P:ModalResult E:OnClick P:Glyph P:NumGlyphs P:Layout P:Margin P:Tabs P:TabIndex P:FirstIndex P:Align P:Pages P:PageIndex P:ActivePage M:OnClick P:ActivePage P:Pages P:PageIndex P:TabFont P:TabsPerRow M:GetIndexForPage M:SetTabFocus P:Text P:EditMask P:EditText P:MaxLength
Sim
Fornece um boto para representar um processo Cria abas de um Notebook para dar aparncia de pginas Fornece uma pilha de diversas pginas (Utilizadas em combinao com o componente TabSet) Cria um quadro de dilogo com diversas pginas com abas para agrupar informaes
Sim
Notebook
Sim
Tabbed Notebook
No
MaskEdit
Sim
Outline
Sim
Exibe uma rea onde o usurio pode inserir ou alterar texto utilizando somente caracteres vlidos especificados pela propriedade EditMask Exibe informao em formas variadas de tpicos
StringGrid
Sim
P:CurItem P:Items M:Add* M:Delete* M:Insert* * Itens(Objeto TStrings) Fornece uma maneira de exibir strings P:Cells em colunas e linhas P:Objects P:Cols P:Rows
Anotaes:
Tabela 4.3.b Componentes da Pgina Additional CONE DrawGrid VISUAL Sim PROPSITO Fornece uma maneira de exibir informao grfica em linhas e colunas Exibe um bitmap, cone, ou metafile Exibe forrnas geomtricas, tais como elipses, retngulo ou retngulo com cantos arredondados Fornece um retngulo com linhas ou bordas em alto ou baixo relvo PROPRIEDADES,EVENTOS,OU MTODOS RELEVANTES P:DefaultDrawing P:Selection E:OnDrawCell M:CellRect M:MouseToCell P:Picture P:AutoSize P:Stretch P:Shape P:Align P:Color* P:Style* *(Object TBrush) P:Shape P:Style P:Align P:Componentes P:Sections
Image Shape
Sim Sim
Bevel Header
Sim Sim
ScrollBox
Sim
Fornece um controle seccionado que exibe texto e permite que cada seo seja reajustada utilizando-se o mouse. Pode ser utilizado com o componente grid para exibir cabealhos de colunas Exibe uma rea que pode ser rolada P:HorzScrollBar P:VertScrollBar M:ScrollInView
COFFEE-BREAK: O LADO CMICO DA INFORMTICA As diferentes maneiras usadas por programadores para caar elefantes
CLIPPER. Na verdade, esses programadores no caam elefantes; eles apenas constroem enormes bibliotecas de partes de elefantes e passam anos tentando integr-las; DBASE. Esses programadores caam apenas no silncio da noite, para que os outros programadores no saibam que eles esto usando armas to antigas; FOXPRO. Esses coitados mudam para rifles mais modernos e poderosos quase todos os dias, o que os leva a gastar mais tempo aprendendo novas tcnicas de tiro do que
Anotaes:
caando, propriamente dito; C. Recusam-se a comprar rifles da prateleira, preferindo levar tubos de ao e ferramentas at a frica, de modo a poder fabricar a arma perfeita para cada situao; RBASE. Esses programadores so mais raros do que os elefantes. De fato, quando um elefante v um programador em RBASE, ele sabe que o seu dia de sorte; ADA, APL, and FORTRAN. Esses programadores so frutos da imaginao, to reais quanto Papai Noel ou a Fada do Dente; COBOL. Esses programadores no caam elefantes, pois nutrem um elevado respeito por outras espcies em extino.
Anotaes: