Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kleines Rechenproblem (https://www.delphipraxis.net/28092-kleines-rechenproblem.html)

hhb_man 19. Aug 2004 15:04


Kleines Rechenproblem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Cracks!

Ich habe Folgendes vor:

Ich habe 2 Checkboxen, die inaktiv sind und ein Edit-Feld, in dem eine "Null steht".
Sobald eine Checkbox durch klicken aktiv wird, soll das Edit-Feld plus 1 zählen.

Schaut euch am Besten mal den Anhang an, denn Bilder sagen mehr als 1000 Worte.

Danke
Chris

Matze 19. Aug 2004 15:06

Re: Kleines Rechenproblem
 
Ich blick's noch nicht ganz, aber evtl meinst du's so: Ins CeckBoxOnClick:

Delphi-Quellcode:
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));

oder falls im Edit einfach nur die Lektion stehen soll:

Delphi-Quellcode:
if CheckBox1.Checked then Edit1.Text := '...' ...

SirThornberry 19. Aug 2004 15:08

Re: Kleines Rechenproblem
 
ich würde den einzelnen Checkboxen das gleiche OnClick zuweisen und darin einfach zählen wieviel checkboxen aktiviert sind
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var LKurse: Integer;
begin
  LKurse := 0;
  if Checkbox1.Checked then inc(LKurse);
  if Checkbox2.Checked then inc(LKurse);
  Edit1.Text := inttostr(LKurse);
end;

dizzy 19. Aug 2004 15:09

Re: Kleines Rechenproblem
 
Oder per Cast:

Delphi-Quellcode:
  anzKurse := Integer(CheckBox1.Checked) + Integer(CheckBox2.Checked);

hhb_man 19. Aug 2004 15:10

Re: Kleines Rechenproblem
 
Mit dem ersten tipp lagst du schon ganz richtig. Ich will, dass das Edit-Feld mit jeder aktivierten Checkbox +1 zählt.
Also werde ich einfach in die Checkbox schreiben:

begin
if CheckBox1.Checked := True then
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;



richtig?

SirThornberry 19. Aug 2004 15:10

Re: Kleines Rechenproblem
 
ist True denn zwangsläufig 1? Ich dachte immer True ist alles ungleich 0

Matze 19. Aug 2004 15:12

Re: Kleines Rechenproblem
 
Zitat:

Zitat von hhb_man
begin
if CheckBox1.Checked := True then
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;

Wenn, dann so:

Delphi-Quellcode:
begin
if CheckBox1.Checked then
  Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;

hhb_man 19. Aug 2004 15:12

Re: Kleines Rechenproblem
 
Bin mir nicht sicher, aber wir sind wohl auf dem richtigen Weg. Ich versuchs nachher mal.

Danke Leute. Ihr seit echt nützlich!

SirThornberry 19. Aug 2004 15:14

Re: Kleines Rechenproblem
 
Zitat:

Zitat von Matze
Zitat:

Zitat von hhb_man
begin
if CheckBox1.Checked := True then
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;

Wenn, dann so:

Delphi-Quellcode:
begin
if CheckBox1.Checked then
  Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;

wenn dann so
Delphi-Quellcode:
if CheckBox1.Checked then
  Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1);
Diese variante hat allerdings den Nachteil das vorrausgesetzt wird das im Edit kein Text drin steht. Und wenn ich eine Checkbox mehrmals anklicke erhöht sich der wert auch immer weiter.

Stevie 19. Aug 2004 15:15

Re: Kleines Rechenproblem
 
:idea: Wenn du eine Liste machen willst, wo verschiedene Kurse angewählt werden können, dann würd ich dir die CheckListBox empfehlen...

dizzy 19. Aug 2004 15:16

Re: Kleines Rechenproblem
 
Wenn man einen Integer auf Boolean castet ist alles <> 0 = true, aber ein boolsches true wurde bei mir bisher immer nach 1 gecastet, sowie ein false nach 0.

Das wäre imho auch die eleganteste Lösung, gegenüber diesem ganzen if..then..else-Gedönse. Ist auch leichter erweiterbar wenn man eine Checkbox dazu kommt, und man spart eine Menge Konvertierungen.

SirThornberry 19. Aug 2004 15:18

Re: Kleines Rechenproblem
 
bei einer Checklistbox könnte man das ja dann in ne Schleife machen wenn es da nicht so ne Eigenschaft "Count" oder ähnliches gibt. (hatte auch an die Checklistbox gedacht aber hab die ni gefunden und dachte dann das ich mir das vielleicht nur eingebildet hab das es mal sowas gab)

Stevie 19. Aug 2004 15:24

Re: Kleines Rechenproblem
 
Zitat:

Zitat von SirThornberry
bei einer Checklistbox könnte man das ja dann in ne Schleife machen wenn es da nicht so ne Eigenschaft "Count" oder ähnliches gibt. (hatte auch an die Checklistbox gedacht aber hab die ni gefunden und dachte dann das ich mir das vielleicht nur eingebildet hab das es mal sowas gab)

Nö, haste nicht! :mrgreen: (unter zusätzlich)
Delphi-Quellcode:
function CheckCount(CheckListBox: TCheckListBox): Integer;
var
  i, c: Integer;
begin
  c := 0;
  with CheckListBox do
    for i := 0 to Pred(Count) do
      if Checked[i] then
        Inc(c);
  Result := c;
end;

hhb_man 19. Aug 2004 19:37

Re: Kleines Rechenproblem
 
Mir wird aber der Fehler gemeldet, dass String und Integer inkompatible Typen sind, wenn ich das eingebe:
Delphi-Quellcode:
procedure TForm2.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked then
  Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
end;
WARUM ???

dizzy 19. Aug 2004 19:49

Re: Kleines Rechenproblem
 
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
wird
Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1);

dann gehts

SirThornberry 20. Aug 2004 07:44

Re: Kleines Rechenproblem
 
Das Problem ist das laut Screenshot in dem Editfeld "Edit1" steht. Das Editfeld müsste mit "0" vorbelegt werden oder du nimmst die Lösung:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var LKurse: Integer;
begin
  LKurse := 0;
  if Checkbox1.Checked then inc(LKurse);
  if Checkbox2.Checked then inc(LKurse);
  Edit1.Text := inttostr(LKurse);
end;

Sharky 20. Aug 2004 08:14

Re: Kleines Rechenproblem
 
Hai,

was haltet ihr denn von der Idee für das "Hochzählen" einfach die Eigenschaft .Tag des TEdits zu missbrauchen.
Zum einen ist dann egal was in dem Edit steht und zum anderen muss man keine extra Variable deklarieren.

SirThornberry 20. Aug 2004 08:17

Re: Kleines Rechenproblem
 
Dann müsste die Tag-Eigenschaft aber auch jedesmal geändert werden wenn die Checkbox gescheckt bzw. unchecked wird?

Sharky 20. Aug 2004 08:22

Re: Kleines Rechenproblem
 
Zitat:

Zitat von SirThornberry
Dann müsste die Tag-Eigenschaft aber auch jedesmal geändert werden wenn die Checkbox gescheckt bzw. unchecked wird?

Jup,
mir ging es nur darum das man es ohne eine zusätzliche, möglicherweise auch noch globale, Variable machen kann ;-)

SirThornberry 20. Aug 2004 08:31

Re: Kleines Rechenproblem
 
Wenn man sich den Screenshot ansieht weill er ja eigentlich nicht hochzählen sondern anzeigen wieviel checkboxen gecheckt sind. Würde man den wert im Editfeld immer hoch zählen so würde die zahl ja ständig steigen wenn ich die checkbox ein paar mal anklicke und so wie der screenshot aussieht ist das nicht gewollt

Sharky 20. Aug 2004 08:39

Re: Kleines Rechenproblem
 
:wall:
Den Schirmschuß habe ich mir übehaupt nicht angesehen. Somit ist es natürlich richtig wie Du es gemacht hast.

hhb_man 20. Aug 2004 09:38

Re: Kleines Rechenproblem
 
Okay Leute!
WIR HABEN ES GESCHAFFT!
Die erfolgreichste Lösung war die, von SirThornberry.
Ich danke euch nochmal für eure Mithilfe.

Bis demnächst
Chris

hhb_man 20. Aug 2004 11:15

Re: Kleines Rechenproblem
 
Aber wie sieht der Code denn aus, wenn ich die Anzahl der Kurse nicht in einem edit-Feld, sondern in einem Label angezeigt bekommen möchte?

Chris

xineohp 20. Aug 2004 11:22

Re: Kleines Rechenproblem
 
genauso, nur mit label1.caption statt edit1.text.

hhb_man 20. Aug 2004 12:02

Re: Kleines Rechenproblem
 
Super! Danke. Jetzt habe ich es genau so, wie es sein soll. Mit einem Label sieht es auch einfach besser aus.

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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