Abfrage nach möglichen Feldern

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Abfrage nach möglichen Feldern

Beitrag von McReier »

Hallo Profis,
habe mir heute Lazarus installiert und will mich zukünftig ein bisschen damit beschäftigen. :D
Den ersten Button habe ich schon erstellt nun "hänge" ich an folgenden Problem.
Ich möchte Fragen, wie viel Variablen für die Berechnung notwendig sind (max. 10)
Nach der Eingabe sollen vorne rechts TCheckBoxes und danach ein Freitextfeld folgen (je nach Beantwortung der o.g. Frage).
Alle angekreuzten Felder sollen dann berücksichtigt (im ersten Schritt einfach addiert werden) und darunter das Ergebnis erscheinen. Felder die nicht ankreuzt wurden, sollen natürlich inaktiv sein.

Kann mir jemand weiterhelfen? :?:

Danke!
McReier

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Abfrage nach möglichen Feldern

Beitrag von Michl »

McReier hat geschrieben:habe mir heute Lazarus installiert und will mich zukünftig ein bisschen damit beschäftigen.
Das ist schön, willkommen im Forum! Ich würde dir als erstes empfehlen, ein paar Turorials durchzunehmen, dann klären sich viele Fragen wie von selbst.
McReier hat geschrieben:Ich möchte Fragen, wie viel Variablen für die Berechnung notwendig sind (max. 10)
Dafür gäbe es eine Anzahl veschiedenster Ansätze, z.B. ein TEdit auf deine Form plazieren und in dessen Event "OnEditingDone" dessen ".Text" auswerten.
McReier hat geschrieben:Nach der Eingabe sollen vorne rechts TCheckBoxes und danach ein Freitextfeld folgen (je nach Beantwortung der o.g. Frage).
??? Was meinst du mit "vorne rechts"?! Ich nehme an, du willst 10 Checkboxen, die dir jeweils ein TEdit an-/bzw. ausschalten?! Könnte man z.B. so machen:

Code: Alles auswählen

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox1.checked then Edit1.Enabled:=true
                       else Edit1.Enabled:=false;
end;
für alle 10 Checkboxen/Edits analog
McReier hat geschrieben:Alle angekreuzten Felder sollen dann berücksichtigt (im ersten Schritt einfach addiert werden) und darunter das Ergebnis erscheinen.
z.B:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  Zahl,Summe:real;
begin
  Summe:=0;
 
  if checkbox1.Checked then 
    if trystrtofloat(Edit1.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox2.Checked then
    if trystrtofloat(Edit2.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox3.Checked then
    if trystrtofloat(Edit3.Text,Zahl) then Summe:=Summe+Zahl;
 
  ...   //Kann man definitiv besser lösen, als 10Edits nacheinander -> ist für Verständnis aber erstmal gut so...
 
  Caption:=floattostr(Summe);
end; 
Wie gesagt halte ich es jedoch für sinnvoller, wenn du ein paar Tutorials durchnimmst, da ich nicht weiss, ob die von mir geposteten Codeschnipsel dich weiter bringen?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Abfrage nach möglichen Feldern

Beitrag von McReier »

Hallo Michl,
danke für Deine Antwort.

Gebe Dir Recht, ich sollte mir da auch Zeit geben, um die Dinge zu verstehen. Bin da vielleicht etwas ungeduldig mit mir...

Habe trotzdem den Quelltext mal reinkopiert und "gebastelt" (ist ja auch Übung) und hätte eine Frage zum Schluss meiner Aufgabe.
Muss ich da noch ein TEdit setzen, indem er mir die Summe anzeigt?

Dank Dir nochmals!
McReier

Vielleicht noch der aktuelle Quelltext:

Code: Alles auswählen

unit Rechenversuch;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    CheckBox9: TCheckBox;
    Edit1: TEdit;
    Edit10: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    procedure Edit10EditingDone(Sender: TObject);
    procedure Edit1EditingDone(Sender: TObject);
    procedure Edit2EditingDone(Sender: TObject);
    procedure Edit3EditingDone(Sender: TObject);
    procedure Edit4EditingDone(Sender: TObject);
    procedure Edit5EditingDone(Sender: TObject);
    procedure Edit6EditingDone(Sender: TObject);
    procedure Edit7EditingDone(Sender: TObject);
    procedure Edit8EditingDone(Sender: TObject);
    procedure Edit9EditingDone(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Edit1EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit10EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit2EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit3EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit4EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit5EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit6EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit7EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit8EditingDone(Sender: TObject);
begin
 
end;
 
procedure TForm1.Edit9EditingDone(Sender: TObject);
begin
 
end;
 
end.
        procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      if Checkbox1.checked then Edit1.Enabled:=true
                           else Edit1.Enabled:=false;
    end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
  if Checkbox2.checked then Edit2.Enabled:=true
                       else Edit2.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox3.checked then Edit3.Enabled:=true
                       else Edit3.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox4.checked then Edit4.Enabled:=true
                       else Edit4.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox5.checked then Edit5.Enabled:=true
                       else Edit5.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox6.checked then Edit6.Enabled:=true
                       else Edit6.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox7.checked then Edit7.Enabled:=true
                       else Edit7.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox8.checked then Edit8.Enabled:=true
                       else Edit8.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox9.checked then Edit9.Enabled:=true
                       else Edit9.Enabled:=false;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox10.checked then Edit10.Enabled:=true
                       else Edit10.Enabled:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  Zahl,Summe:real;
begin
  Summe:=0;
 
  if checkbox1.Checked then
    if trystrtofloat(Edit1.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox2.Checked then
    if trystrtofloat(Edit2.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox3.Checked then
    if trystrtofloat(Edit3.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox4.Checked then
    if trystrtofloat(Edit4.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox5.Checked then
    if trystrtofloat(Edit5.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox6.Checked then
    if trystrtofloat(Edit6.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox7.Checked then
    if trystrtofloat(Edit7.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox8.Checked then
    if trystrtofloat(Edit8.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox9.Checked then
    if trystrtofloat(Edit9.Text,Zahl) then Summe:=Summe+Zahl;
 
  if checkbox10.Checked then
    if trystrtofloat(Edit10.Text,Zahl) then Summe:=Summe+Zahl;
 
  Caption:=floattostr(Summe);
end;
Zuletzt geändert von Lori am So 18. Aug 2013, 11:12, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Abfrage nach möglichen Feldern

Beitrag von Michl »

Bitte um Quellcode zu posten "Highligther Lazarus/Freepascal" nutzen - erhöht die Lesbarkeit ungemein!!!
McReier hat geschrieben:

Code: Alles auswählen

Caption:=floattostr(Summe);
Zeigt die "Summe" in der Titelleiste.

Willst du diese in einem TEdit angezeigt bekommen, kannst du auch einfach

Code: Alles auswählen

Edit11.Text:=floattostr(Summe);
schreiben.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten