Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zwei Labels funktionieren nicht (https://www.delphipraxis.net/124651-zwei-labels-funktionieren-nicht.html)

Pro-Grammierer 22. Nov 2008 12:26


Zwei Labels funktionieren nicht
 
Hier die Probleme:

Ich hab zwei Labels, die eig. nach einem OnClick Ereignis ansteigen sollen, bzw. ihre Caption ändern sollen.

Das eine Label legt den Preis fest, der parallel zum Liter-Label ansteigt (das Liter Label steigt komischerweise an), das andere ist einfach nur eine Anzeige, die der ausgewählte Treibstoff pro Liter kostet (sie ändert sich nicht).

Allerdings steigt das Label für den Preis nicht an und das Label, dass anzeigen soll, wv der ausgewählte Treibstoff pro Liter kosten soll, nimmt ebenfalls nichts die gewünschte Zahl an.

(hier die beiden Quelltexte für die Label):
(1. Label, dass parallel zum Liter ansteigen soll)

Delphi-Quellcode:
procedure TForm1.GroupBox3Click(Sender: TObject);

begin
if Sender=BitBtn1 then
Preis:=Preis-0.1
else if Sender=BitBtn2 then
Preis:=Preis-0.2
else if Sender=BitBtn3 then
Preis:=Preis-0.5
else if Sender=BitBtn4 then
Preis:=Preis-1
else if Sender=BitBtn5 then
Preis:=Preis-2
else if Sender=BitBtn6 then
Preis:=Preis-5
else if Sender=BitBtn7 then
Preis:=Preis-10
else if Sender=BitBtn8 then
Preis:=Preis-20
else if Sender=BitBtn9 then
Preis:=Preis-50;
lbPreis.Caption:=FloatToStr(Preis);
Groupbox2.Enabled:=false;
end;

(hier das Label, das einfach nur den Treibstoffpreis pro Liter festlegen soll)
procedure TForm1.GroupBox1Click(Sender: TObject);
begin
if Sender=Button1 then
lPreis:=1.172
else if Sender=Button2 then
lPreis:=1.165
else if Sender=Button3 then
lPreis:=1.256
else if Sender=Button4 then
lPreis:=1.150;
GroupBox1.Enabled:=false;
GroupBox2.Enabled:=true;
lblpreis1.Caption:=FloatToStr(lpreis);



end;
So hab ich das geschrieben, warum funktioniert das nicht und wo liegt der Fehler? Wenn ihr nicht folgen könnt, schick ich euch gerne das Design und den vollständigen Quelltext und ihr probiert es aus.

Es wurde geschrieben, dass der Sender die Groupbox sein soll - wie würde das dann aussehen?!

[edit=MrSpock]Delphi Code Tags eingefügt. Mfg, MrSpock[/edit]

freak4fun 22. Nov 2008 12:30

Re: Zwei Labels funktionieren nicht
 
Bitte setze deinen Quelltext in Delphi-Tags und formatiere ihn anständig. :dp:

Noedel 22. Nov 2008 12:30

Re: Zwei Labels funktionieren nicht
 
häng mal bitte den rest an
ich seh da grad (fast) nix drin

Pro-Grammierer 22. Nov 2008 12:34

Re: Zwei Labels funktionieren nicht
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    Label7: TLabel;
    Label8: TLabel;
    btWechsel: TButton;
    lbWechsel: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    lbLiter: TLabel;
    lbPreis: TLabel;
    Label13: TLabel;
    lblPreis1: TLabel;
    TDauer: TTimer;
    btTanken: TButton;
    procedure btTankenClick(Sender: TObject);
    procedure GroupBox1Click(Sender: TObject);
    procedure GroupBox3Click(Sender: TObject);
    procedure btWechselClick(Sender: TObject);
    procedure TDauerTimer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
     var Liter, lpreis, Preis : real;

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btTankenClick(Sender: TObject);

begin
if btTanken.Caption ='Tanken' then
   begin
   btTanken.Caption:='Stop';
   TDauer.Enabled:=true;
   end
else
   begin
   btTanken.Caption:='Tanken';
   TDauer.Enabled:=false;
   lbPreis.Caption:=FloatToStr(liter*lpreis);
   Label11.Visible:=true;
   Label10.Visible:=true;
   end;

   end;

procedure TForm1.btWechselClick(Sender: TObject);
begin
   if Preis<0 then
      Preis:=0
   else if Liter>0 then
      Liter:=0
   else if Preis>0 then
      btWechsel.Enabled:=false
   else if Preis>=0 then
      btWechsel.Enabled:=false;
         
     

   lbWechsel.Visible:=false;
   lbLiter.Caption:=FloatToStr(Liter);
   lbPreis.Caption:=FloatToStr(Preis);
   GroupBox1.Enabled:=true;
   Label10.Visible:=true;
   Label11.Visible:=true;

end;

procedure TForm1.GroupBox1Click(Sender: TObject);
begin
   if Sender=Button1 then
      lPreis:=1.172
   else if Sender=Button2 then
      lPreis:=1.165
   else if Sender=Button3 then
      lPreis:=1.256
   else if Sender=Button4 then
      lPreis:=1.150;
   GroupBox1.Enabled:=false;
   GroupBox2.Enabled:=true;
   lblpreis1.Caption:=FloatToStr(lpreis);


   
end;

procedure TForm1.GroupBox3Click(Sender: TObject);

begin
    if Sender=BitBtn1 then
       Preis:=Preis-0.1
    else if Sender=BitBtn2 then
       Preis:=Preis-0.2
    else if Sender=BitBtn3 then
       Preis:=Preis-0.5
    else if Sender=BitBtn4 then
       Preis:=Preis-1
    else if Sender=BitBtn5 then
       Preis:=Preis-2
    else if Sender=BitBtn6 then
       Preis:=Preis-5
    else if Sender=BitBtn7 then
       Preis:=Preis-10
    else if Sender=BitBtn8 then
       Preis:=Preis-20
    else if Sender=BitBtn9 then
       Preis:=Preis-50;
    lbPreis.Caption:=FloatToStr(Preis);
    Groupbox2.Enabled:=false;

end;

procedure TForm1.TDauerTimer(Sender: TObject);

begin
    Liter:=Liter+1;
    lbLiter.Caption:=FloatToStr(Liter);
    Preis:=Liter*lpreis;
    lbPreis.Caption:=FloatToStr(Liter*Preis);
end;

end.

Das ist der komplette Code. Hoffe ihr könnt mir weiter helfen.

DeddyH 22. Nov 2008 12:36

Re: Zwei Labels funktionieren nicht
 
Bitte editiere den Post nochmal und setze den Quellcode in Delphi-Tags (
Delphi-Quellcode:
Quellcode
oder markieren und die Schaltfläche "Delphi-Code" benutzen), sonst wird sich niemand die Mühe machen wollen, das zu lesen ;)

Pro-Grammierer 22. Nov 2008 12:39

Re: Zwei Labels funktionieren nicht
 
Ah, hab mich schon gewundert wie das geht :D
Danke. Habs gemacht

DeddyH 22. Nov 2008 12:44

Re: Zwei Labels funktionieren nicht
 
Sieht eigentlich gut aus auf den ersten Blick (sofern vor dem Tanken btWechsel betätigt wird). Wird das Timer-Ereignis denn auch durchlaufen?

Noedel 22. Nov 2008 12:48

Re: Zwei Labels funktionieren nicht
 
ich seh da immer noch keinen fehler drin?! kannst du die ganzen delphi sachen mal in nem .rar verzeichnis mit hochladen?
dann kann man besser sehen, wo der schuh drückt

DeddyH 22. Nov 2008 12:53

Re: Zwei Labels funktionieren nicht
 
Lieber zip als rar, das ist verbreiteter ;). Ich vermute allerdings, dass einfach das Timer-Event im OI nicht mit dem Timer verbunden ist oder das Interval auf 0 steht oder sowas.

Andreas L. 22. Nov 2008 13:23

Re: Zwei Labels funktionieren nicht
 
Delphi-Quellcode:
Label1.Refresh;
aufrufen nach jeder Änderung der Caption-Eigenschaft.

Noedel 22. Nov 2008 13:59

Re: Zwei Labels funktionieren nicht
 
Zitat:

Zitat von Andreas L.
Delphi-Quellcode:
Label1.Refresh;
aufrufen nach jeder Änderung der Caption-Eigenschaft.

muss das sein?

Andreas L. 22. Nov 2008 14:49

Re: Zwei Labels funktionieren nicht
 
Zitat:

Zitat von Noedel
Zitat:

Zitat von Andreas L.
Delphi-Quellcode:
Label1.Refresh;
aufrufen nach jeder Änderung der Caption-Eigenschaft.

muss das sein?

IMHO Ja

Pro-Grammierer 22. Nov 2008 16:34

Re: Zwei Labels funktionieren nicht
 
Ok, ich werd das ganze Projekt einfach mal hochladen.

Habs bei rapidshare hochgeladen.

http://rapidshare.com/files/16632071...telle.zip.html

10x Download, also jetzt zugreifen ;-)

Noedel 22. Nov 2008 16:56

Re: Zwei Labels funktionieren nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
du kannst, auch am ende deiner nachricht was anhängen...

unter

"Attachment hinzufügen"


edit habs mir mal angeguckt:
zuerst mal :
1)schwarze Schrift auf dunkelblauem Hintergrund ist NICHT GUT!
2)schwarze Schrift in Größe 8 auf dunkelblauem Hintergrund ist GAR NICHT GUT!

das problem waren die groupboxen. ich hab die labels und den kram mal auf panels gelegt, jetzt gehts!
was das mit dem wechselgeld soll, ist mir nicht bewusst geworden! (oder ist das nochnicht fertig?)

bei weiteren fragen, immer drauf los

PS. im Anhang

I
V

findest du das überarbeitete Projekt

Pro-Grammierer 22. Nov 2008 17:10

Re: Zwei Labels funktionieren nicht
 
Wenn euch das lieber ist mach ich das auch noch mal :O

Noedel 22. Nov 2008 17:21

Re: Zwei Labels funktionieren nicht
 
blätter mal zurück :) (erste Seite, letzer post)

Pro-Grammierer 22. Nov 2008 17:46

Re: Zwei Labels funktionieren nicht
 
Es ist fast fertig. Vielen Dank schon einmal
Das ganze sollte nun eig. so ablaufen, dass man halt den Preis, den man fürs Tanken bezahlen soll, bezahlt. (je nach dem, welchen Treibstoff man sich ausgesucht hat, so legt sich ja auch der Preis fest). Durch das betätigen der BitButtons sollte nun der errechnete Preis eig. immer weiter absinken, also wenn ich den für 5€ anklicke, steht da ...

Ich erklärs mal anhand eines Beispiels xD

Angenommen ich wähle nun Superbenzin. Dann klick ich auf "Tanken", dann läuft ja die Literanzahl und der dazugehörige Preis hoch. Wenn ich nun nach 10 Litern genug habe, drück ich halt auf "Stop". Dann liegt der Preis glaub ich so bei 11,65€. Durch drücken des BitButtons mit dem 10 Euro Schein sollten nun von den 11,65€ 10€ abgezogen werden. Dann hab ich folgerichtig noch 1,65€. Angenommen ich drück nun noch den 2€ BitButton schuldet mir der Automat ja 0,35€. Diese -0,35 sollten nun durch den Button "Wechselgeld" wieder auf 0€ zurückgesetzt werden.

Hoffe es wurde so deutlich. Ich wunder mir, warum das nicht funktioniert. Vielleicht könnt ihr euch das ja auch noch einmal angucken.

Pro-Grammierer 22. Nov 2008 19:06

Re: Zwei Labels funktionieren nicht
 
Ok, das Problem hab ich selber gelöst bekommen.
Soll ich nun wirklich für mein letztes Problem ein neues Thema eröffnen?!

Noedel 22. Nov 2008 22:08

Re: Zwei Labels funktionieren nicht
 
wenn das gelöst ist, dann kann man es ja schließen


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

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