Autor Beitrag
Lindenbaum
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 12.11.08 15:12 
Wir sollen in der Schule ein Projekt machen und haben uns ausgesucht einen Vokabeltrainer zu schreiben. Leider kennen wir uns nicht wirklich in Delphi (Delphi 7.0) aus.

Als erstes wollen wir im Hauptmenü des Vokabeltrainers verschiedene Button haben. Beim anklicken z.B. des Buttons "Spielanleitung" soll darunter die Spielanleitung an sich erscheinen. Unsere Frage ist jetzt, wie das funktioniert.

Beim anklicken vom Button "Vokabelliste anlgen" soll jeder Schüler seine eigen Liste anlegen können, in der die Vokabel eingegeben werden können. Auf diese Liste soll im späteren Programm wieder zurückgegriffen werden können. Jetzt ist unsere Frage, wie man das macht (mit Hilfe einer Tabelle? Mit Hilfe von Edit-Feldern?)?
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.11.08 15:15 
Ich empfehle euch einen Crashkurs.Googlet mal nach Suche bei Google DELPHI CRASHKURS.
Da findet ihr ein Tutorial ,das erstaml die Grundlagen vermittelt. :wink:
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 78

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 13.11.08 23:12 
Das finde ich als Anfänger Projekt etwas zu weit reichend, würde euch erst mal ein paar einfachere Spiele empfehlen. Gut für den Einstieg sind solche Sachen wie, Zahlen vom Computer raten lassen.
Lindenbaum Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 19.11.08 15:33 
Wir wollen nun in ein Label einen Text schreiben, kriegen das irgendwie nicht hin... Könnt ihr uns da helfen? Wir haben das Gleiche auch mit einem Memo ausprobiert uns stört aber dabei, dass der Text dann noch geändert werden kann... Welche Möglichkeit ist besser und wie geht das?
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 20.11.08 10:58 
Hi
Versuch mal folgendes:
Auf eine Form bringst du zwei TListbox-Objekte. Eines für Englisch-Vokabeln und eines für die deutsche Vokabel.
Genau darauf legst du jeweils ein Editfeld.
Nun brauchst du ein Button 'Prüfen'.
Folgende Vorgehensweise könnte man sich nun vorstellen:
Du wählst mit einer Listbox eine Vokabel aus. Englisch oder Deutsch ist erst mal egal. Wenn du immer die Vokabelpaare in die Comboboxen eingetragen hast, wird die zugehörige Vokabel über den ItemIndex der Auswahllistbox referenziert. Nun schreibst du in das darüberliegende Editfeld die Antwort und drücst 'Prüfen'
Nun kannst du in einem Messagedlg die Antwort auswerten.

Hier mal kurz ein wenig Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Procedure myForm.CB_EnglischOnChange(Sender:TObject);
Begin
  Ed_Englisch.Text:=Cb_Englisch.Text; // Text im Editfeld sichtbar machen
  ED_Deutsch.Text:='';                // auf der anderen Seite Editfeld leeren
  Cb_Deutsch.Text:=Cb_Deutsch.Items[Cb_Englisch.ItemIndex]; 
// Textfeld der Combobox mit der Antwort füllen. 
// Ist aber durch Ed_Deutsch verdeckt und nicht sichtbar
end;

selbiger Vorgang kan durch das Onchange- Ereignis der CB_Deutsch Combobox entsprechend ausgeführt werden. Natürlich wäre dann Ed_Englisch leer. Nun wird die Antwort in das leere Editfeld eingetragen.
Das Betätigender Prüfen-Taste vergleicht nun den selbstgeschriebenen Text mit dem dahinterliegenden Text
ausblenden Delphi-Quelltext
1:
If (ED_Deutsch.Text=CB_Deutsch.Text) and (ED_Englisch.Text=CB_Englisch.Text) then ...					

Nun, eine Seite des Vergleiches ist zwangsläufig richtig, da es ja die Kopie des Dahinterliegenden Textes der Combobox ist. Nur der selbstgeschriebene Teil kann falsch sein.
Nun kannst du dir noch Gedanken machen, wie du deine Vokablen eingibst und abspeicherst. Da wäre z.B. ein Stringgrid nicht verkehrt, oder auch 2 Edifelder, die du entsprechend beschreibst und abspeicherst. Immer daran denken, das die Speicherung auch immer paarweise geschieht.
Sollte erst mal für einen Denkanstoß reichen.
gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Lindenbaum Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 26.11.08 15:26 
Wir haben das jetzt mit dem Vobaelliste erstellen erst einmal in soweit hinbekommen, dass man die Vokabeln in Editfelder eingeben kann+Übersetzung und das wird dann in ein Memo eingespeichert.

Könnt ihr uns jetzt sagen (oder oldmax bitte noch einmal etwas genauer erklären,o b das mit unserer jetzigen Speichermethode auch funktioniert), wie man nun das Spiel erstellt, in dem eine Vokabel (Deutsch oder Fremdsprache) zeigt und der Schüler die Übersetzung eingeben muss? Wie funktioniert das nach unserer Vokabeleingabe dann mit der Überprüfung der Vokabeln?
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Fr 28.11.08 08:12 
Hi
Mach es erst mal ganz einfach.
Ich hatte gesagt, das du dir zwei Comboboxen auf deine Form bringen und darüber zwei Editfelder legen sollst. Die Eingabe läuft folgendermaßen ab:
Zuerst sind die Editfelder leer. Nun schreibst du die Vokabeln in die Editfelder, also Deutsch beispielsweise Rechts und englisch links. Dabei macht es Sinn, die Editfelder mit Ed_Deutsch und Ed_Englisch zu benennen und die Comboboxen CB_Deutsch und CB_Englisch.
Jetz brauchst du einen Button, der bei Betätigung dieses Vokabelpaar in die Comboboxen überträgt und dir die Editfelder wieder leert.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Cb_Englisch.Items.Add(Ed_Englisch.Text);
Cb_Deutsch.Items.Add(Ed_Deutsch.Text);
Ed_Deutsch.Text:='';
Ed_Englisch.Text:='';

Damit hast du deinen Eingabe-Editor. Du kannst dir nun überlegen, wie du doppelte oder leere Eingaben verhindern kannst. Das gehört auch dazu. Auch kannst du diese Ebene zur Korrektur benutzen, indem du die zweite Vokabel mit anzeigst, wenn du einen Eintrag aus der Combobox aufrufst. Dann allerdings nicht mit .Add( ..) eintragen, sondern unter Verwendung vom ItemIndex zuweisen
Cb_Englisch.Items[Cb_Englisch.ItemIndex]:= Ed_Englisch.Text;
Wobei der ItemIndex der Combobox benutzt werden muß, aus welcher du einen Eintrag ausgewählt hast.
Und So kann z. B. die Ereignis-Procedure einer Combobox im Editiermodus aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Procedure TMyForm.Cb_englischOnChange(Sender: TObject);
Begin
   ED_Englisch.Text:=Cb_Englisch.Text; // Text aus Combobox in das darüberliegende Editfeld
  Cb_Deutsch.ItemIndex:=Cb_Englisch.ItemIndex; // Index auf andere Combobox übertragen
  Cb_Deutsch.Text:=Cb_Deutsch.Items[CB_Deutsch.ItemIndex]; // Text holen
  Ed_Deutsch.Text:=Cb_Deutsch.Text;  // und auch im Editfeld anzeigen
End;

Kommen wir nun zur Speicherung deiner Eingaben. Es gibt eine relativ einfache Methode, unter Verwendung von SaveToFile und LoadFromFile Stringlisten auf ein Speichermedium zu schreiben, bzw. davon zu holen.
Einfach nur
ausblenden Delphi-Quelltext
1:
2:
Cb_Englisch.SavetoFile(‚Englischvokabel’);
Cb_Deutsch.SaveToFile(‚Deutschvokabel’);

In ein Buttonereignis schreiben und fertig. Zum Laden der Daten entsprechend .LoadFromFile.
Nun ja, es ist nicht grad das gelbe vom Ei, das weiß ich auch, aber bevor ich hier auf ein etwas umfassenderes Speicherhandling eingehe, geb ich erst mal ganz einfache Tipps. Außerdem ist in der Delphi-Hilfe ein Beispiel für Dateizugriffe.
Um nun das Vokabelprogramm zum lernen zu benutzen muß die Ereignisprocedure der Comboboxen etwas geändert werden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Procedure TMyForm.Cb_englischOnChange(Sender: TObject);
Begin
   ED_Englisch.Text:=Cb_Englisch.Text; // Text aus Combobox in das darüberliegende Editfeld
  Cb_Deutsch.ItemIndex:=Cb_Englisch.ItemIndex; // Index auf andere Combobox übertragen
  Cb_Deutsch.Text:=Cb_Deutsch.Items[CB_Deutsch.ItemIndex]; // Text holen
  Ed_Deutsch.Text:=’’;  // und Inhalt Editfeld Deutsch löschen für Engabe
End;

Da du zur Laufzeit eine Procedure nicht ändern kannst, gibt es folgende Möglichkeit, die Procedure für beide Zwecke zu benutzen. Du schaffst dir eine globale Boolsche Variable, nennen wir sie Edit_Mode
Also Edit_Mode : Boolean;Wenn du Editieren oder neue Vokabeln eingeben willst, dann setzt du
Edit_Mode:=true;Beim Vokabeln lernen entsprechend
Edit_Mode:=False;
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Nun kannst du Edit_Mode in der Ereignisprocedure der Combobox einbauen:
Procedure TMyForm.Cb_englischOnChange(Sender: TObject);
Begin
   ED_Englisch.Text:=Cb_Englisch.Text; // bleibt….
  Cb_Deutsch.ItemIndex:=Cb_Englisch.ItemIndex; // bleibt
  Cb_Deutsch.Text:=Cb_Deutsch.Items[CB_Deutsch.ItemIndex]; // bleibt
  If Edit_Mode then Ed_Deutsch.Text:=Cb_Deutsch.Text  // hier kommt die Abfrage
  Else  Ed_Deutsch.Text:=’’;  // und der entsprechende  Eintrag in das Textfeld
End;
Die Buttons, die du zur Steuerung deines Programmes brauchst, solltest du selbst hinbekommen.
Da wäre die Schalter für Editiermodus, für Lernmodus, für Daten eintragen, für Speichern, für Daten holen und für den Vergleich im Lernmodus.
Damit solltest du nun arbeiten können.

_________________
Zier dich nich so, ich krieg dich schon....