![]() |
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 |
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 := '...' ...
|
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; |
Re: Kleines Rechenproblem
Oder per Cast:
Delphi-Quellcode:
anzKurse := Integer(CheckBox1.Checked) + Integer(CheckBox2.Checked);
|
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? |
Re: Kleines Rechenproblem
ist True denn zwangsläufig 1? Ich dachte immer True ist alles ungleich 0
|
Re: Kleines Rechenproblem
Zitat:
Delphi-Quellcode:
begin
if CheckBox1.Checked then Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1)); end; |
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! |
Re: Kleines Rechenproblem
Zitat:
Delphi-Quellcode:
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.
if CheckBox1.Checked then
Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1); |
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...
|
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. |
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)
|
Re: Kleines Rechenproblem
Zitat:
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; |
Re: Kleines Rechenproblem
Mir wird aber der Fehler gemeldet, dass String und Integer inkompatible Typen sind, wenn ich das eingebe:
Delphi-Quellcode:
WARUM ???
procedure TForm2.CheckBox2Click(Sender: TObject);
begin if CheckBox2.Checked then Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1)); end; |
Re: Kleines Rechenproblem
Edit1.Text := IntToStr(StrToInt(Edit1.Text + 1));
wird Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1); dann gehts |
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; |
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. |
Re: Kleines Rechenproblem
Dann müsste die Tag-Eigenschaft aber auch jedesmal geändert werden wenn die Checkbox gescheckt bzw. unchecked wird?
|
Re: Kleines Rechenproblem
Zitat:
mir ging es nur darum das man es ohne eine zusätzliche, möglicherweise auch noch globale, Variable machen kann ;-) |
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
|
Re: Kleines Rechenproblem
:wall:
Den Schirmschuß habe ich mir übehaupt nicht angesehen. Somit ist es natürlich richtig wie Du es gemacht hast. |
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 |
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 |
Re: Kleines Rechenproblem
genauso, nur mit label1.caption statt edit1.text.
|
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