Autor Beitrag
Comilo
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 14.01.12 17:49 
Hallo Zusammen

Ich bin ein Anfänger was das Programmieren angeht und bin bereits auf eine Frage gestossen.
Und zwar möchte ich ein Programm um Schulnoten einzulesen.
Diese sollen dann unter ihrem jeweiligen Fach ausgegeben werden.

Das Problem besteht bei der ComboBox wo man sein gewünschtes Fach auswählen muss und dann mit einem Button die Note hinzufügen.
Ich schaffe es nicht die ComboBox und den Button gleichzeitig zu verwenden.
Bzw ich möchte das wenn zum Beispiel jemand Sport in der ComboBox auswählt, dass die Note (bzw. der Durschnitt) dann beim Feld Sport erscheint.

Mein bisheriger Versuch:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TFormNoten.bntaddClick(Sender: TObject);
var
  Schnitt,Gewicht,Note : Real;
  Fach : Integer;
begin
  Fach:=CBoxFach.ItemIndex + 1;

  case Fach of

  1:
         begin
         Note:=StrToFloat(EdtNote.Text);
         Gewicht:=StrToFloat(EdtGewichtung.Text);
         Schnitt:=Note*Gewicht;
         EdtSport.Text:=FloatToStr(Schnitt);
          end;

    2:
          begin
          Note:=StrToFloat(EdtNote.Text);
          Gewicht:=StrToFloat(EdtGewichtung.Text);
          Schnitt:=Note*Gewicht;
          EdtBG.Text:=FloatToStr(Schnitt);
          end;
    end;
  end;


Wenn ich das so mache, kann er zwar kompilieren, jedoch das Programm nicht ausführen.
Was mache ich falsch?
Muss ich die ComboBox in einer Eigenen Procedure angeben?
Wenn ja, wie verbinde ich die Button-Procedure dann mit der ComboBox-Procedure?

Danke für eure Hilfe!
Gruss
Comilo
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 14.01.12 18:02 
Hallo und :welcome:

user profile iconComilo hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich das so mache, kann er zwar kompilieren, jedoch das Programm nicht ausführen.
Wie meinst du das? :gruebel:
Wenn du das Programm kompilieren kannst, hast du auch eine Anwendung, die du ausführen kannst.

Kommt ein Fehler? Passiert nicht das was du willst? ...

user profile iconComilo hat folgendes geschrieben Zum zitierten Posting springen:
Muss ich die ComboBox in einer Eigenen Procedure angeben?
Wenn du damit meinst, dass du darauf reagieren willst, dass man in der ComboBox etwas auswählt, dann musst du im Objektinspektor bei der ComboBox das Event OnChange benutzen (sprich dort doppelklicken) und darin den Code schreiben, der dann ausgeführt werden soll.
Wenn dort das selbe wie beim ButtonClick passieren soll, kannst du bei OnChange auch die selbe Ereignisbehandlungsmethode bntaddClick angeben.
Comilo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 14.01.12 18:24 
Also beim kompilieren kommt keine Error-Meldung, die den Programmtext betrifft.
Sondern der Debugger meldet sich mit folgender Nachricht:
"Projekt Noten.exe hat Exception-Klasse "Unknown" ausgelöst mit der Meldung:
###(gdb unparsed remainder:s 0x568 out of bounds>) ###

Dann drücke ich Fortsetzen und es kommt die Error-Meldung:
Error reading CBoxFach.OnChange:Invalid value for property.


Muss ich also das Ganze unter OnChange angeben (Wie du gesagt hast?)
Geht das mit meinem Weg also nicht?

Danke dir ;)
Comilo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 14.01.12 18:31 
Hab das Ganze nun unter OnChange angegeben.
Funktioniert nun =)
Doch mein Button ist nun eig. Überflüssig, da die Note sofort eingetragen wird, sobald ich das Fach auswähle.
Dadurch entsteht auch ein Fehler wenn ich noch keine Note eingegeben habe.

Möchte also lieber den Button benutzen.
Wie schaffe ich es also, dass die Noten erst nach dem Button Click übertragen werden?

//edit:
Hat sich erledigt =)
Hab einfach eine separate Prozedur für die ComboBox erstellt.

Danke dir für die kleine aber entscheidende Hilfe.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 14.01.12 18:42 
user profile iconComilo hat folgendes geschrieben Zum zitierten Posting springen:
Dadurch entsteht auch ein Fehler wenn ich noch keine Note eingegeben habe.
Weil du die Eingaben einfach als Zahlen voraussetzt. Schau dir statt StrToFloat einmal TryStrToFloat an. ;-)