Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Progress Bar (https://www.delphipraxis.net/163497-progress-bar.html)

BWRobert 30. Sep 2011 15:48

Progress Bar
 
Hallo,

Ich habe ehrlich lange gesucht aber nichts gefunden, was mir erklärt, wie ich eine Progressbar vernünftig in mein Programm einfüge :)
Ich habe seit 3 Wochen an meiner Schule Informatik und habe mal ein wenig herum probiert ... Da kam mir die Idee einen kleinen "Kalorienzäher" zu entwickeln :D
Hier der Code:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    EdFruehstueck: TEdit;
    EdMittag: TEdit;
    GroupBox1: TGroupBox;
    ChWeiblich: TCheckBox;
    ChMaennlich: TCheckBox;
    EdAbend: TEdit;
    BuRechne: TButton;
    BuEnde: TButton;
    PaEingenommen: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    PaTag: TPanel;
    EdEssen4: TEdit;
    EdEssen5: TEdit;
    EdEssen6: TEdit;
    EdEssen7: TEdit;
    EdEssen8: TEdit;
    procedure BuEndeClick(Sender: TObject);
    procedure BuRechneClick(Sender: TObject);
    procedure PaTagClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BuEndeClick(Sender: TObject);
begin
 close
end;

procedure TForm1.BuRechneClick(Sender: TObject);
Var Zahl1, Zahl2, zahl3, zahl4, Zahl5,Zahl6, Zahl7, Zahl8, Zahl9 : Real;
begin
 Zahl1:= StrToFloat (Edfruehstueck.Text);
 Zahl2:= StrToFloat (EdMittag.text);
 Zahl3:= StrToFloat (EdAbend.text);
 Zahl5:= StrToFloat (EdEssen4.text);
 Zahl6:= StrToFloat (EdEssen5.text);
 Zahl7:= StrToFloat (EdEssen6.text);
 Zahl8:= StrToFloat (EdEssen7.text);
 Zahl9:= StrToFloat (EdEssen8.text);
 Zahl4:= Zahl1+Zahl2+Zahl3+Zahl5+zahl6+zahl7+zahl8+zahl9;   //Kalorien werden zusammengerechnet
 PaEingenommen.Caption:= FloatToStr (Zahl4);
end;

procedure TForm1.PaTagClick(Sender: TObject);
Var Zahl7 : Real;
begin
 if ChMaennlich.Checked then Zahl7:=2400;
 if ChWeiblich.checked then Zahl7:=1900;
 PaTag.Caption:= FloatToStr (Zahl7);
end;

end.
Nun wollte ich eine Progressbar einfügen, die Anzeigt wie viel Kalorien man am Tag schon von den Benötigten gegessen hat. (Dient zur Veranschaulichung)
Und so nebenbei: Wisst ihr vielleicht warum ich erst auf das Pannel Tag klicken muss damit die Kalorienanzahl angezeigt wird? (Man muss ja erst Männlich oder Weiblich auswählen)

Vielen Dank schonmal!

Grüße Robert

Jumpy 30. Sep 2011 15:54

AW: Progress Bar
 
Die checkboxen haben ein Ereigniss onclick oder oncheck oder sowas. Das würde ich benutzen, um die Anzeige im Panel zu verändern. Dann muss man da garnicht mehr draufklicken.

BWRobert 30. Sep 2011 15:59

AW: Progress Bar
 
Also müsste ich ChMaenlich.Checked zu ChMaenlich.clicked ändern ?

Sorry ich bin absoluter Neuling!

p80286 30. Sep 2011 16:12

AW: Progress Bar
 
Dann mach dir doch einmal ein paar Gedanken, was Dein Programm wann tun soll.

Bisher wird eine empfohlene Kalorienmenge in der patag.Caption angezeigt, je nachdem ob weiblich oder männlich,
und Du rechnest irgendwelche Eingaben aus Editfeldern zusammen und gibst diese Summe in PaEingenommen.Caption aus.

Wenn Du hiermit arbeiten willst, eine globale Variable für die Kalorienzahl wäre vllt. angebracht(?)

dann setzt Du das progressbar.Min auf 0 das Maximum auf die angestrebt Kalorienzahl und übergibst als Position die errechnete Kalorienzahl.
Nur wenn man sich in Richtung übergewicht bewegt, dann wird das nicht visualisiert.

Gruß
K-H

Jumpy 30. Sep 2011 16:23

AW: Progress Bar
 
ChMaenlich.Checked ist ja eine Eigenschaft, die du abfragst. Aber, du fragst sie erst ab, wenn auf das Panel geklickt wird in TForm1.PaTagClick(Sender: TObject).
PaTagClick ist dabei ein Ereigniss, also es passiert irgendwas und das löst dann die Ausführung des Codes in der entsprechenden Prozedur aus.

Auch checkboxen haben Ereignisse und du reagierst halt einfach auf das Ereignis, dass eine Checkbox geklickt wurde und änderst in dieser Ereignisroutine den Text auf dem Panel.

Du brauchst dann natürlich die Prozedur und das Ereignis PaTagClick nicht mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz