Jump to content

Recommended Posts

Posted

CarlosPiccoli,

Qual é a tua experiência com programação em Lazarus? Pergunto isto porque aquilo que pedes é muito simples, e a única forma de não o conseguires fazer é por desconhecimento completo da linguagem e/ou do IDE. Aconselho-te vivamente a leres um pouco sobre o Lazarus e programação em Pascal.

Posto isto, para fazer o que pretendes basta converteres o valor dos campos relevantes em números (com StrToFloat, por exemplo), calcular o resultado que pretendes, e converter esse resultado para uma string (via FloatToStr). Depois atribuis essa string resultante à propriedade .text do campo desejado.

De momento não posso dar-te um exemplo pois não tenho aqui o Lazarus; outros poderão fazê-lo. Ainda assim, ver o exemplo não é substituto de aprender a linguagem verdadeiramente (não irás longe com exemplos apenas...)

Posted

Eu preciso fazer em um form fazer um calculo assim : PreçoLiquido= PreçoBruto- Desconto. Todos os campos estão no mesmo formulario. Onde eu faço essas operações. Se alguem puder dar um esxemplo almenos parecido agradeço.

Como diz o pwseo, interessa saber qual o teu nível de conhecimento.

Interessa também saber onde tens esses valores. Estão em variáveis (de que tipo?); estão em componentes, tipo TEdit; estão numa base de dados; estão num ficheiro?

E onde queres apresentar o resultado?

E qual a acção que o utilizador deve (ou não) fazer para que os cálculos sejam efectuados? Deve carregar num botão? Deve calcular assim que insere os dados?

Tens de ser mais conciso no que escreves. Aliás, em programação, esse nível de raciocínio preciso é essencial.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted (edited)
procedure Tfrmpagvista.Button1Click(Sender: TObject);
var
  PBruto, PLiquido:Currency;
  Desconto:integer;
begin
 frmprincipal.show;
 if edPreco.text<>''
         then PBruto:=StrToCurr(edPreco.text)
         else PBruto:=0;
  if edDesconto.text<>''
         then Desconto:=StrToInt(edDesconto.text)
         else Desconto:=0;

  PLiquido:=PBruto-(PBruto*(Desconto/100));
  edPreli.text:= currtostr(pliquido);


end;

ve se vai da certo

Edited by nunopicado
Adicionadas tags GeShi
Posted

Pessoal comecei a programar com o Lazarus não tem nem um mês. Tem uma boa experiencia com Pascal.

Se tens boa experiência com Pascal, parte-se do principio que sabes fazer as operações, apenas não sabes ir buscar os dados e/ou mostrar os resultados.

É isso?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted (edited)

A teoria diz-nos o seguinte (em palavras bastante resumidas): cada janela que interage com o utilizador é uma form (pode ser outras coisas, mas para agora não interessa). Cada form contém componentes, sejam eles Text Boxes, Radio Buttons, Buttons, etc. Cada componente tem uma série de eventos - por exemplo, um Button tem um evento onclick, que ocorre sempre que o utilizador clica no botão. Podes implementar código para controlar o comportamento do programa aquando estes eventos ocorrem - noutras linguagens chamam-se handlers, em Delphi não sei se se chama assim.

A partir daqui não consigo ajudar grande coisa na prática pois nunca me dediquei a programar em Delphi (com GUI), mas tenho estas noções porque já programei em VB.NET.

Uns tutoriais devem ajudar-te a dar os primeiros passos. Vai-nos dizendo o que tens vindo a ver e esclarece as tuas dúvidas, vais ver que terás o teu programa feito em três tempos 🙂

P.S.: para o teu programa poderás ter duas Text Boxes para receber o Preço Bruto e o Desconto, e um Button para mandar fazer o cálculo, sendo o output feito numa Label. O evento do botão será o onclick, cpomo o @tremelique indicou, e aí deverás 1) validar os dados introduzidos, e caso sejam válidos, 2) realizar o cálculo e colocá-lo na Label.

Cada componente tem uma série de propriedades, esqueci-me de dizer. Por exemplo, uma Label terá uma propriedade que permite manipular o texto que contém (em VB.NET é a propriedade Text, em Delphi não deve ser diferente).

Edited by thoga31

Knowledge is free!

Posted (edited)

As operações são simples de serem realizadas eu não sei a maneira como elas devem ser declaradas no código. E complementando o resultado das operações deve pararecer em um TEdit assim que os dados forem inseridos.

Edited by CarlosPiccoli
Posted

exatamente, as operações eu consigo desenvolver.

OK. Então o que possivelmente te faz confusão é como pegar nos valores que existem no ambiente grafico, calcular e depois retornar o resultado.

Se é assim, o conceito que tens de perceber antes de mais é:

Os componentes, tal como o TEdit que provavelmente estás a usar na form, têm 3 características principais:

* Propriedades

* Métodos

* Eventos

A começar pelos métodos, são na verdade funções e procedimentos ligados ao próprio componente, que vão manipular de alguma forma os valores contidos pelo componente.

Para este caso específico, não nos interessa. Apenas deves reter que cada componente os tem, e que muitas vezes o que pensares em fazer com os dados de um componente, já existe forma de o fazer através dos métodos.

Os Eventos são uma lista de circunstâncias que podem ocorrer a um componente durante o decorrer do programa. Por exemplo, um botão, entre outros, pode ter um evento chamado onclick, que ocorre quando clicamos nesse botão.

Se para esse evento escreveres um Handler (um conjunto de instruções a executar quando essa circuntância, ou evento, ocorre, terás controlo do que o programa faz nesse momento.

No caso, interessam os eventos para saberes quando é que os cálculos serão executados.

Se for quando se carrega num botão, o evento que te interessa é o onclick desse botão. Se quiseres o calculo feito enquanto estás a escrever os valores, o evento será o onchange do TEdit onde estás a escrever, se preferires que o calculo seja feito quando o utilizador dá enter, o evento será o onkeypress do TEdit onde estás a escrever... E assim por aí fora, há imensos eventos, é só escolher o que dá mais jeito, sendo estes três que referi alguns dos mais usados.

Por fim tens as propriedades.

No caso, é o que tens de mais importante.

Ao contrário de uma variável de tipo simples, que pode ter apenas um valor, uma variável de tipo complexo pode guardar vários valores, dependendo do seu tipo.

Um componente não é mais que uma representação de uma Classe, que por sua vez é um tipo de dados complexo, pelo que pode guardar vários valores.

Uma propriedade, em termos simplistas, é uma sub-variável do componente, e serve para guardar lá dados.

Na verdade, é até mais do que isto, mas essa explicação terá de ficar para mais tarde, quando tiveres mais algum traquejo em Delphi (Lazarus é uma alternativa ao dialecto Delphi, pelo que quando ouvires aqui falar em Delphi, aplicas aos teus conhecimentos em Lazarus, visto serem em boa parte compatíveis).

Aplicando isto à prática:

Tens na tua form um componente do tipo TEdit, chamado Edit1.

Uma das propriedades do TEdit chama-se Text, e é a sub-variável que guarda o texto que é apresentado no TEdit.

Assim, se fizesses:

Edit1.Text:='Olá mundo';

Na tua caixa de texto ia aparecer a famosa mensagem.

Se com isto já sabes escrever no TEdit, falta-te saber como ir lá buscar os dados que o proprio utilizador escreve na caixa de texto.

var
  s:string;
begin
  s:=Edit1.Text

ou seja, podes usar a sub-variável Edit1.Text tal como qualquer variável do tipo string.

Quando executar isto?

Lá está, num evento.

Para não complicar, recomendo-te que o faças num botão, no evento onclick. Mais fácil é impossível. Basta pores um botão na form e clicares nele duas vezes, que o Lazarus irá automáticamente criar um esboço de um Handler para o evento onclick desse botão.

Como fazer os cálculos se os dados estão em string?

Bem, se estão em string (como vimos, a propriedade Text é de um tipo string), tens de converter para o tipo que desejas.

Podes usar, como já disseram aqui, as funções StrToFloat e FloatToStr que convertem de string para real e vice-versa respectivamente.

um exemplo:

procedure TForm1.Button1Click(Sender:TObject)
var
  ValorA,ValorB,Resultado:Real;
begin
  ValorA:=StrToFloat(Edit1.Text);
  ValorB:=StrToFloat(Edit2.Text);

  Resultado:=ValorA*ValorB;

  Edit3.Text:=FloatToStr(Resultado);
end;

Dúvidas?

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.