Formulários e Componentes
Visão geral dos componentes gráficos
O sistema de scripts gere dois tipos de componentes: componentes visuais e não visuais.
Os componentes visuais são utilizados para construir a interface do utilizador e os componentes não visuais são utilizados para diferentes tarefas, tais como TimerOpenDialogMainMenu
- O
componente não visual pode ser utilizado para ativar código específico em intervalos programados e nunca é visível para o utilizador.Timer - O
,Button eEdit são componentes visuais.Memo
Ambos os tipos de componentes aparecem na fase de conceção, mas os componentes não visuais não são visíveis na fase de execução. Os componentes do
- Propriedades
- Eventos
- Métodos
Uma
Um
Um
Todos os formulários de script têm um ou mais componentes. Os componentes geralmente apresentam informações ou permitem que o utilizador execute uma ação. Por exemplo, um LabelEditButton
Pode colocar-se qualquer combinação de componentes num formulário e, enquanto o script estiver a ser executado, o utilizador pode interagir com qualquer componente do formulário. Cabe ao programador decidir o que acontece quando um utilizador clica num botão ou altera o texto numa Edit
O sistema de scripts fornece vários componentes que podem ser utilizados para criar interfaces de utilizador complexas para scripts. Para colocar um componente num formulário, localize o seu ícone nopainel «Paleta de Ferramentas» e clique duas vezes nele. Esta ação coloca um componente no formulário ativo. A representação visual da maioria dos componentes é definida através das suas propriedades. Um componente é inicialmente colocado numa posição predefinida no formulário, mas pode ser reposicionado (arrastado) e redimensionado (esticado) conforme necessário. Também é possível alterar o tamanho e a posição posteriormente, utilizando o
Quando um componente é solto num formulário, o sistema de Scripting gera automaticamente o código necessário para utilizar o componente e atualiza o formulário de script. Basta definir as propriedades e implementar o código do manipulador de eventos para utilizar os métodos desejados e fazer com que o componente no formulário funcione.
Conceção de formulários de script
Um formulário de script é concebido para interagir com o utilizador no ambiente. A conceção de formulários de script constitui o cerne do desenvolvimento visual.
Na prática, todos os componentes são colocados num formulário de script e cada propriedade definida é armazenada num ficheiro que descreve o formulário (um *.DFM*.PAS.PAS.DFM
Ao trabalhar com um formulário de script e os seus componentes, todas as propriedades dos elementos podem ser inspecionadas e modificadas utilizando o Caption
Criar um novo formulário de script
Com um projeto de script aberto, clique com o botão direito do rato num projeto no EditScript1.pas
Exibir um formulário de script
Um script tem de conter um procedimento que exiba o formulário quando o formulário de script for executado. Dentro deste procedimento, o ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
O ShowModalRunDialogDialogFormDialogForm.ShowModal
O ModalResultmrOkmrCancelShowModal
Procedure TForm.OKButtonClick(Sender: TObject); Begin ModalResult := mrOK; End; Procedure TForm.CancelButtonClick(Sender: TObject); Begin ModalResult := mrCancel; End; Procedure RunShowModalExample; Begin // Form's Visible property must be false for ShowModal to work correctly. If Form.ShowModal = mrOk Then ShowMessage('mrOk'); If Form.ShowModal = mrCancel Then ShowMessage('mrCancel'); End;
Quando o utilizador clica em qualquer um dos botões deste formulário de script, a caixa de diálogo fecha-se. Não é necessário chamar o CloseModalResult
Note que, se pretender definir o ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Aceitar entradas do utilizador
Um dos componentes mais comuns que pode aceitar entradas do utilizador é o TEditTMaskEdit
O exemplo abaixo ilustra o processo que ocorre quando o utilizador clica no botão após digitar algo na caixa de edição. Se o utilizador não tiver digitado nada no componente de edição (em branco), o manipulador de eventos responde com uma mensagem de aviso.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Note-se que o utilizador pode alterar o foco de entrada da caixa de diálogo utilizando a
Resposta a eventos
Quando se clica num botão num formulário ou num componente, o Sistema de Scripting responde ao receber uma notificação de evento do Altium Designer e ao chamar o método de manipulador de eventos apropriado.
O projeto HelloWorld da Scripts\DelphiScript Scripts\General\
O script de exemplo ShowModal da Scripts\DelphiScript Scripts\General\
Escrever manipuladores de eventos
Cada componente num script de formulário possui um conjunto de nomes de eventos, que são utilizados pelos manipuladores de eventos do script para determinar como o script reagirá às ações do utilizador no Altium Designer. Por exemplo, quando um utilizador clica num botão num formulário, o Altium Designer envia uma mensagem ao script e este reage a este novo evento. Se o OnClick
O código para responder aos eventos está normalmente contido nos manipuladores de eventos do DelphiScript, e todos os componentes têm um conjunto de eventos aos quais podem reagir. Por exemplo, todos os componentes clicáveis têm um OnClickOnEnterOnExitOnEnterOnExit
Em resumo, um evento é uma ligação entre uma ocorrência no Altium Designer, como clicar num botão, e um trecho de código que responde a essa ocorrência. O código de resposta é um manipulador de eventos. Este código modifica valores de propriedades e chama métodos.
Propriedades do componente
Para ver uma lista das propriedades de um componente, selecione um componente e abra o
Eventos do componente
Para ver uma lista dos eventos aos quais um componente pode reagir, selecione um componente e abra o
Por exemplo, selecione o TButtonOnClickOnClick

Se um botão tiver um CloseCloseClickOnClickClose
Em resumo, selecione um componente de botão, quer no formulário, quer utilizando o OnClick
Métodos dos componentes
Para ver uma lista de métodos de um componente, consulte o documento «Referência de Componentes ».
Colocar componentes num formulário de script
Para utilizar componentes do painel «Paleta de Ferramentas» num script, é necessário que exista um formulário de script antes de se poderem arrastar componentes para o formulário. Normalmente, quando os componentes são arrastados para um formulário de script, estes objetos não precisam de ser criados nem destruídos — o formulário de script faz isso automaticamente.
O sistema de scripts também gera automaticamente o código necessário para utilizar um componente e atualiza o formulário de script. Depois, basta definir as propriedades, inserir código nos manipuladores de eventos e utilizar os métodos necessários para implementar um formulário de script funcional.
Criação de Componentes num Script
Os componentes podem ser criados ou destruídos diretamente num script, passando um NilConstructorOpenSaveTOpenDialogTSaveDialog
Personalização de formulários de script
Os pontos essenciais para personalizar formulários de script são:
- Para forçar um formulário a permanecer na frente de outros painéis abertos, defina a
propriedade paraFormStyle .fsStayOnTop - Para definir o comportamento predefinido de um formulário, defina a
para um dos seguintes valores;FormKind ,fkNone ,fkNormal oufkServerPanel .fkModal - Se
estiver fechado, o formulário será um formulário modal — ou seja, aguardará a entrada do utilizador antes de prosseguir, por exemplo, para fechar o formulário. SefkModal então o formulário será apresentado como um painel do servidor. SefkServerPanel então o formulário funciona como um formulário normal não modal.fkNormal - Para remover as barras de deslocamento predefinidas do formulário, altere o valor do
eHorzScrollBar .VertScrollBar - Para tornar o formulário um quadro MDI ou um elemento filho MDI, utilize a
.FormStyle - Para alterar o estilo da moldura do formulário, utilize a
eBorderIcons (os resultados são visíveis em tempo de execução).BorderStyle - Para alterar o ícone do formulário minimizado, utilize a
.Icon - Para especificar a posição inicial de um formulário na janela da aplicação, utilize a
propriedade.Position - Para especificar o estado inicial do formulário (por exemplo, minimizado, maximizado ou normal), utilize a
propriedade.WindowState - Para definir a área de trabalho do formulário em tempo de execução, utilize a
eClientHeight (note queClientWidth eClientHeight representam a área dentro da borda do formulário;ClientWidth eHeight representam toda a área do formulário).Width - Para especificar qual o controlo que tem o foco inicial no formulário em tempo de execução, utilize a
propriedade.ActiveControl - Para passar todos os eventos de teclado para o formulário, independentemente do controlo selecionado, utilize a
propriedade.KeyPreview - Para especificar um menu específico, caso um formulário contenha mais do que um menu, utilize a
propriedade.Menu
Atualização de formulários e componentes de script
Quando a interface de um formulário de script fica desatualizada — por exemplo, quando os controlos não são atualizados ou redesenhados —, os controlos podem parecer congelados ou corrompidos; isto pode dever-se a um processamento intensivo em segundo plano desse script.
O UpdateUpdate
Procedure TConverterForm.loadbuttonClick(Sender: TObject); Begin If OpenPictureDialog1.Execute then Begin XPProgressBar1.Position := 0; XStatusBar1.SimpleText := ' Loading...'; XStatusBar1.Update; // loading a monochrome bitmap only Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); // Check if image is monochrome, otherwise prompt a warning If Image1.Picture.Bitmap.PixelFormat > pf1bit Then Begin ShowWarning('The image is not a monochrome!'); Close; End; lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' + IntToStr(Image1.Picture.Height) + ' mils'; convertbutton.Enabled := True; LoadButton.Enabled := False; XStatusBar1.SimpleText := ' Ready...'; XStatusBar1.Update; End; End;
O fragmento de código acima provém do PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator