delphi Tutorial aktuell
Document Sample


Informatik 12 Seite 1
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Inhaltsverzeichnis
Seite
1. Inhaltsverzeichnis 1
2. Vorwort Pascal und Delphi 2
3. Die Oberfläche von Delphi 3
3.1 Das Menufenster
3.2 Der Objektinspektor
3.3 Das Startformular Form1
3.4 Der Quelltexteditor
4. Objekt- und Ereignisorientierte Programmierung
4.1 Formulare
4.2 Komponenten
4.3 Sonstige Komponenten
5. Das erste Programm
5.1 Schritt 1 Button auswählen
5.2 Schritt 2 Die Größe des Buttons ändern
5.3 Schritt 3 Farbe ändern im Objektinspektor
5.4 Schritt 4 Verknüpfung der Objekte mit den Ereignissen
5.5 Schritt 5 Im Quelltexteditor eine Anweisung eintragen
Form1.caption:= ’Text’;
5.6 Schritt 6 Speichern
5.7 Schritt 7 Starten des Programms
5.8 Aufgabe
6. Das zweite Programm
6.1 Das Eingabe Verarbeitung Ausgabe - Prinzip
EVA
6.2 Das Begrüßungsprogramm
Edit1.text Label1.caption Close-Befehl
6.3 Aufgabe 1
6.4 Aufgabe 2
Showmessage (’Beliebiger Text’);
7. Die Variablen in Delphi
7.1 Die Zahlenvariablen var Name : Typ ;
7.1.1 Integer – Typ aus der Menge N oder Z
7.1.2 Real – Typ aus der Menge Q oder R
7.1.3 Sonstige Boolean Char AnsiChar
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 2
Eine Einführung in Delphi 5/6/7 - 2. März 2012
8. Das Programm – Summe
Zahl1:= StrToInt(Edit1.Text); Zahl2:= StrToInt(Edit2.text);
Label1.Caption:= IntToStr(Summe);
8.1 Aufgabe
8.2 Try …. Except – Anweisung
8.3 Der Lösungsquellcode
9. Das Begrüßungsprogramm mit einer Checkbox
Checkbox1.checked If … Then …. Else
Memo1.text Radiobutton1.checked
FloatTostrF(Variable,ffixed,8,2)
chr(13) oder #13 Listbox.visible:=True
9.1 If Then else
9.2 Aufgabe 1
9.3 Aufgabe 2
9.4 Lösung : Begrüßungstext
9.5 Lösung : Aufgabe 1
9.6 Lösung : Aufgabe 2
9.7 Aufgabe 3
10. Die Image – Komponente und die Listbox
BitButton Listbox1.clear
Stretch (True) Listbox1.items.add(Zeile)
10.1 Aufgabe – Quader Oberfläche und Volumen
10.2 Lösung: Quader
11. Grafik-Anweisungen
Shape Komponente (StCircle) Up-Down Komponente
ColorDialog Trackbar
Associate –Verknüpfung Shape1.pen.color
Shape1.brush.color Shape1.pen.width
11.1 Aufgabe
11.2 Lösung und Quellcode
12. Das Programm : Taxi-Rechnung und Proportionale Schriftarten
12.1 Format (‘%8.2f’,[Variable oder Zahl]) ;
12.2 Quellcode
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 3
Eine Einführung in Delphi 5/6/7 - 2. März 2012
13. Schleifen
Canvas.Textout (x-Koordinate, y-Koordinate,’Aufwärts’)
13.1 For … Next Schleife
13.2 For … Next Schleife zählt abwärts
13.3 Wiederholungsschleife Repeat … Until
13.4 While … Do
14. Wurzeltabelle in einer Listbox
Sqrt (Zahl) Wurzel Sqr(Zahl) Quadrat
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 4
Eine Einführung in Delphi 5/6/7 - 2. März 2012
1. Vorwort
Pascal und Delphi
Vielen fällt bei "Pascal" nur der Name "Borland" ein. Borland hat diese
Programmiersprache jedoch nicht erfunden. Es war der Schweizer Professor Niklaus
Wirth, der die Sprache 1968-1972 an der ETH Zürich auf Basis der Sprache Alogol-
W entwickelte. Sein Ziel war eine klar konzipierte und strukturierte Sprache, die nicht
systemnah war und gut für Lehrzwecke eingesetzt werden konnte. Der erste Pascal-
Compiler für einen Computer wurde 1970 in Zürich fertig gestellt. Bereits 1972 wurde
Pascal in Anfängerprogrammierkursen verwendet. Nach und nach verbreitete sich
Pascal über die ganze Welt und wurde eine der am meisten eingesetzten
Programmiersprachen.
1992 veröffentlichte Borland Version 7.0, die letzte Version mit DOS-Compiler, unter
dem Namen "Borland Pascal" zusammen mit Turbo Pascal für Windows 1.0. So
sollte es auch dem Heimprogrammierer ermöglicht werden, eigene Programme für
das aufkommende Betriebssystem Windows zu erstellen. Das gut gemeinte Produkt
war ein einziger Flop. Das Erstellen einer Windows-Anwendung war gigantische
Arbeit; allein um ein einziges leeres Fenster auf den Bildschirm zu bekommen,
musste seitenweise Code getippt werden.
Borland nahm sich die Kritik zu Herzen; es gab keine weiteren Versionen von Turbo
Pascal.
1995 dann die Sensation: Delphi 1 erblickte das Licht der Welt. Der 16-Bit-Compiler
überzeugte durch RAD (Rapid Application Development) mit vorgefertigten
Komponenten (VCL - Visual Component Library), die das Erstellen von
Anwendungen für Windows 3.1 nahezu zum Kinderspiel machten. Die Sprache, auf
der alles basierte, hieß Pascal - Object Pascal.
Programmierer, die Pascal weiterhin die Treue gehalten hatten, stiegen begeistert
um und verhalfen Delphi damit zum Erfolg.
Die nächsten Delphi-Versionen folgten im Jahresabstand: Delphi 3 1997, Delphi 4
1998, Delphi 5 1999. Es wurde dabei immer ausgefeilter und mächtiger.
Im nächsten Jahr wird die neue und umfangreichste Delphi Version 2005 erscheinen.
Die wichtigsten Links dazu :
http://www.delphi-source.de
http://www.delphi-tutorials.de/
http://www.onlinetutorials.de/del-index.htm
http://www.delphi-treff.de/content/tutorials/
Gleich der wichtigste Hinweis zur Installation von Delphi unter XP. Da Delphi einen
eigenen Debugger besitzt, ( Bordbk70.dll 70 steht für die Version 7.0) gibt es
Konflikte mit dem Microsoft-Debugger! Diese Probleme, die man in vielen Delphi-
Foren nachlesen kann, werden durch das neue Service Pack 2 – Update von
Microsoft behoben!
Viel Spaß beim Programmieren !
Willst Du zum Orakel gehen, musst Du nach Delphi !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 5
Eine Einführung in Delphi 5/6/7 - 2. März 2012
3. Die Oberfläche von Delphi 5
Delphi präsentiert Ihnen nach dem Start 4 frei "schwebende" Fenster:
3.1. Das Menufenster, das man von allen Windows-Anwendungen her kennt.
3.2. Der Objektinspektor, mit dem man die Ereignisse steuert.
3.3 Das Startformular Form1, das als Container für die darauf "aufzusteckenden"
Komponenten dient. Es ist schon mit den üblichen Symbolen Minimieren,
Maximieren und Schließen ausgestattet.
3.4. Der Quelltexteditor, in dem man den Programm-Code eingibt.
Auf die Komponentenleiste, die die Windows-Buttons enthält, kommen wir gleich zu
sprechen.
4. Objekt- und Ereignisorientierte Programmierung
Vergleicht man ein "normales Programm", welches aus einer langen Liste von
Anweisungen besteht, und einem Windows-Programm, so stellt man folgendes fest:
In einem DOS-Programm, wie Turbo Pascal oder Quick Basic werden die
Befehle sequentiell abgearbeitet, d.h. Schritt für Schritt hintereinander
Unter Windows laufen alle Aktionen Objekt – (Buttons werden gedrückt) und
Ereignisorientiert ( es wird etwas berechnet oder ein Fenster öffnet sich ...) ab.
Für jedes Ereignis des Anwenders ist ein Programmteil zuständig, der
unabhängig von anderen Programmteilen ablaufen kann und muss.
Objekte sind :
4.1 Formulare, als ein Windows-Fenster (TForm) kann weitere Formulare
und Komponenten (Siehe unten), Text oder Grafiken enthalten
4.2 Komponenten tauchen in vielfältiger Weise auf, z.B. als Schaltflächen
(TButton), Bildlaufleisten (TBcrollbar), Listenfelder (TListbox), Textfelder
(TEdit) oder als Menüs (TMenu)
4.3 sonstige Objekte sind praktisch die Schnittstellen für das Programm
z.B. Bildschirm (Tscreen), die Windows Zwischenablage (TClipboard) oder der
Drucker (Tprinter).
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 6
Eine Einführung in Delphi 5/6/7 - 2. März 2012
5. Das Erste Programm
Schritt 1
Klicken Sie auf der Komponentenleiste den Button an ! Nach kurzer Zeit zeigt Ihnen
die Kontexthilfe auch wirklich an, dass es ein Button ist.
Schritt 2
Klicken Sie auf die Mitte des Formulars und vergrößern Sie ihn – Bei gedrückter
linker Maustaste – auf die gewünschte Größe ! Sie erhalten dann folgendes Bild.
Die Form lässt sich auch von jeder Ecke
aus verkleinern! Tun Sie es, bis Sie
ungefähr die links abgebildete Größe
erreicht haben! Wir wollen nun die
Hintergrundfarbe der Form verändern.
Dazu müssen wir die Einstellung Farbe im
Objektinspektor verändern.
Schritt 3
Formular anklicken,
damit es markiert ist.
Dann auf die Eigen-
schaft-Seite des Objekt-
Inspektors (Auch F11)
gehen und Color 2x
anklicken und die
gewünschte Farbe
auswählen! Wir wählen
Gelb. Im Eintrag sollte
dann ClYellow stehen.
Genau so funktioniert
das mit dem Pop-Up
Button, der mit dem Pfeil
gekennzeichnet ist. Das
Ergebnis ist sofort
sichtbar, obwohl das
Programm noch gar nicht
gestartet wurde.
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 7
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Schritt 4
Verknüpfen der Objekte mit den Ereignissen:
Doppelklicken Sie auf den Button1 im Formular und es öffnet sich Editorfenster
UNIT1.PAS mit dem vorgefertigten Rahmencode:
Schritt 5
Fügen Sie zwischen Begin und End folgende Anweisung ein :
Form1.Caption:= ' Wow, mein 1. Windows – Programm!';
Klicken Sie jetzt auf die Ereignisseite des Objektinspektors und überprüfen Sie den
Eintrag dort! Steht dort Button1.Click, haben Sie alles richtig gemacht!!
Tipps:
Die Groß-Kleinschreibung ist an sich egal, aber es ist Stil, so wie oben
zu schreiben!
Das Hochkomma ist das Zeichen über der Raute '#
Vergessen Sie Nie das Semikolon hinter jeder Anweisung!
Caption ist der Name des Formulars
Captions können auch im Objektinspektor auf der Eigenschaftsseite
geändert werden
Schritt 6
Damit unser wertvolles 1. Programm nicht verloren geht, müssen wir das Programm
jetzt abspeichern. Erstellen Sie zuerst einen neuen Ordner mit dem Namen Hallo,
damit in Ihrem Verzeichnis Ordnung herrscht. Dann wählen Sie Datei – Alles
Speichern – und geben Sie als Namen Hallo.pas ein !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 8
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Schritt 7
Nun wird der Compiler gestartet, der den Quellcode in die Maschinensprache
übersetzt! Also nur noch Nullen und Einsen 0100111010 ...
Dazu drücken Sie entweder die F9-Taste oder die grüne Schaltfläche, die so ähnlich
aussieht wie die Play-Taste eines Cassettenrecorders.
Nach einer kurzen Rechenzeit haben Sie ein fertiges Windowsprogramm vor sich,
der Button lässt sich drücken und die Titelleiste ändert sich tatsächlich!
Schließen Sie das Programm wie gewohnt durch das X oben rechts im Formular!
Tipps:
Der Rechner legt in Ihrem Verzeichnis eine *.exe Datei an, die recht groß
ist, so ca. 300 KB.
Diese Datei können Sie jetzt auf jedem Windowsrechner laufen lassen,
der Windows 95 und höher als Betriebssystem installiert hat
Das Programm kann zu jeder Zeit verändert werden, indem sie wieder
Hallo.DPR (Delphi-Project) öffnen, verändern und wieder mit F9 neu
compilieren. Der Rechner überschreibt dann die Project1.exe mit dem
neuen Maschinencode.
Bevor Sie eine neue Anwendung erstellen, wählen Sie Datei – Alles
schließen
5.8 Aufgabe :
Wählen Sie Datei – Neue Anwendung – und ergänzen Sie die Form durch
einen 2. Button, der die FormCaption mit einem weiteren beliebigen Text
verändert, wählen Sie ruhig auch mal eine andere Farbe !
6. Das Zweite Programm
Das zweite Programm beinhaltet eine weit verbreitete Programmierart :
6.1 Das EVA – Prinzip – Eingabe, Verarbeitung, Ausgabe
Eingabe : Der Benutzer soll seinen Vornamen eingeben
Verarbeitung: Wenn der Benutzer einen Button anklickt, bestimmt der
Computer einen Begrüßungstext mit dem
eingegebenen Vornamen.
Ausgabe: Die Begrüßung wird auf das Formular geschrieben
Label1
Edit1
Button1 Button2
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 9
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Das Formularfeld sollte dann folgendes Aussehen haben :
6.2 Die Begrüßung programmieren
In Edit1.Text schreibt man nun den Vorna-
men. (Eingabe)
Label1.Caption soll die Ausgabe erhalten
Wenn man nun den Button1 doppelt
anklickt, wird ein OnClick Ereignis progra-
mmiert und eine leere Prozedur mit folgen-
dem Aussehen erzeugt : (Verarbeitung)
Procedure Tform1.Button1Click(Sender:Tobject);
Begin
End;
Zwischen Begin und End; wird nun folgender Code eingeben :
Label1.Caption : = ’Hallo, schön dass Du da bist ’ + edit1.Text ;
Button2 doppelklicken, (Es wird wieder eine Prozedur ...Button2.Click erzeugt!) und
zwischen Begin und End; einfach ein Close; eingeben !
Und niemals das Semikolon vergessen !!!! Fehlerquelle Nr. 1
Nun wieder wie oben Alles speichern wählen, Ordner „Begrüßung“ erstellen, und nun
starten mit F9 oder Play-Taste(grün)
6.3 Aufgabe :
Verändern Sie im Objektinspektor-Eigenschaften die Captions aller Komponenten
folgendermaßen : Edit1 Eingabe, Button1Verarbeitung, Label1 Ausgabe und
Button2 Ende. Speichern nicht vergessen!
6.4 Aufgabe:
Oft sieht man in Windows, dass sich ein Nachrichtenfenster öffnet. Dies kann man
mit dem Befehl ShowMessage (’ Beliebiger Text ’) erreichen. Schreiben Sie ein
Programm, dass beim Anklicken eines Buttons die Nachricht Sie haben gerade
Button 1 angeklickt ! liefert.
Fügen Sie einen zweiten Button ein, der die
Caption Ende besitzt und die Nachricht liefert
Das Programm wird nun beendet !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 10
Eine Einführung in Delphi 5/6/7 - 2. März 2012
7.0 Die Variablen in Delphi
Jedes Programm lebt von seinen Variablen. Wer schon mit BASIC gearbeitet hat,
kennt schon die Struktur von Variablen und Wertzuweisungen. Die Deklaration erfolgt
durch folgende Syntax : var Name : Typ;
7.1 Die Zahlenvariablen
Beispiele : Ich möchte in einem Programm 2 ganze Zahlen addieren.
Var Zahl1,Zahl2:Integer; oder Var z1,z2:Integer; oder Var x,y:Integer;
Tip : Verständliche Variablennamen vereinfachen die Struktur eines Programms!!
Also: Zahl1,Zahl2 wird von Spezialisten bevorzugt. Schüler neigen dazu, aus
Bequemlichkeit einfache Buchstabennamen zu wählen. Das soll aus didaktischen
Gründen vermieden werden!!
7.1.1 Integer-Typ = Ganzzahl-Typ aus der Menge N oder Z
Integer - 32768 < Zahl < + 32768
ShortInt - 128 < Zahl < + 128
LongInt - 2.147.483.648 < Zahl < + 2.147.483.648
Int64 - 9 * 10 18 < Zahl < + 9 * 10 18
Cardinal 0 < Zahl < + 2.147.483.648
Byte 0 < Zahl < 255
Word 0 < Zahl < 65535
7.1.2 Real-Typ = Gleitkommazahl aus der Menge Q
Single Einfache Gleitkommazahl mit 7-8 stelliger
Genauigkeit zwischen 1,5 * 10 – 45 und 3,4 * 10 38
Double zwischen 5 * 10 –324 und 1,7 * 10 308
Extended Supergenaue Gleitkommazahl zwischen
3,4 * 10 –4932 und 1,1 * 10 4932
Real bzw Real48 Hat ausgedient, da er keinen Math. Coprozessor
unterstützt
Hinweis : Die Fettgedruckten Variablen unterstützen den Coprozessor !!!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 11
Eine Einführung in Delphi 5/6/7 - 2. März 2012
7.1.3 Sonstige
Boolean Wahrheitswert ( True oder False )
Char Zeichen zwischen 0 und 255
AnsiChar Byte-Zeichen entsprechend dem erweiterten ANSI-
Zeichensatz
Die zu empfehlenden Variablentypen sind :
Integer (aus Z) und Cardinal (aus N), Single, Double, Extended (aus R)
8. Programm - Summe
Wir benötigen : 2 Edit-Komponenten zur Eingabe der Zahlen, 2 Buttons : Button1 soll
die Caption "Berechnung" erhalten, dient also zur Verarbeitung; Button2 dient zum
Beenden des Programms ! Label1 zur Ausgabe !
Problem : Edit ist ein Textfeld ! Man muss also die Ziffern zuerst in eine Integerzahl
umwandeln. Dann kann man die Summe bilden. Dazu dient der folgende Befehl :
z.B.Zahl1:=StrToInt(Edit1.text); entsprechend dann für die zweite Zahl :
Zahl2:=StrToInt(Edit2.Text); Text kann ich auch mal klein schreiben !
Summe : Summe:= Zahl1 + Zahl2;
Procedure ...... Button1.Click....
Var Zahl1,Zahl2,Summe:Integer;
Begin
... Befehlszeilen...
End;
Hinweis : Die Variablen Zahl1,Zahl2,Summe müssen deklariert werden !!
Bei der Ausgabe im Label-Feld muss ich wieder umgekehrt arbeiten, da Label1 auch
ein Textfeld ist!
Also: Label1.Caption:=IntToStr(Summe);
8.1 Aufgabe :
Erweitern Sie das Summenprogramm auf die anderen Grundrechenarten
Multiplikation, Subtraktion und Division !
Bei der Division muss man beachten, dass die Division durch Null nicht erlaubt ist !
Daher muss eine Fehlerbehandlung (eine sog. Exception-Routine eingebaut werden)
programmiert werden !!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 12
Eine Einführung in Delphi 5/6/7 - 2. März 2012
8.2 Try - Except
Die Exception-Methode Try ... Anweisungen … Except .. Anweisung.. fängt die
Windows-Fehlerbehandlung bzw. Error-Meldung auf!! Als Beispiel erscheint dann
eine Showmessage Siehe Seite 5 Aufgabe 3
8.3 Hier die Lösung als Quellcode :
procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,summe:extended;zeile1,zeile2:string;
begin
zahl1:=StrtoFloat(Edit1.text);
Zahl2:=StrtoFloat(Edit2.text);
summe:=Zahl1+Zahl2;
Zeile1:='Die Summe beträgt : ';
Zeile2:=FloattoStr(summe);
label2.caption:=Zeile1+chr(13)+Zeile2;
end;
procedure TForm1.Button3Click(Sender: TObject);
var zahl1,zahl2,differenz:extended;zeile1,zeile2:string;
begin
zahl1:=StrtoFloat(Edit1.text);
Zahl2:=StrtoFloat(Edit2.text);//Umwandlung eines Strings in eine reelle Zahl
Differenz:=zahl1-zahl2;
Zeile1:='Die Differenz beträgt : ';
Zeile2:=FloattoStr(Differenz);// Umwandlung einer reellen Zahl in einen String
label2.caption:=Zeile1+chr(13)+Zeile2; //chr(13) erzeugt einen Zeilenumbruch
end;
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 13
Eine Einführung in Delphi 5/6/7 - 2. März 2012
procedure TForm1.Button4Click(Sender: TObject);
var zahl1,zahl2,Produkt:extended;zeile1,zeile2:string;
begin
zahl1:=StrtoFloat(Edit1.text);
Zahl2:=StrtoFloat(Edit2.text);
Produkt:=zahl1*zahl2;
Zeile1:='Das Produkt beträgt : ';
Zeile2:=FloattoStr(Produkt);
label2.caption:=Zeile1+chr(13)+Zeile2;
end;
procedure TForm1.Button5Click(Sender: TObject);
var zahl1,zahl2,quotient:extended;zeile1,zeile2:string;
begin
try
zahl1:=StrtoFloat(Edit1.text);
Zahl2:=StrtoFloat(Edit2.text);
quotient:=zahl1/zahl2;
Zeile1:='Der Quotient beträgt : '; Fehlermeldung wird abgefangen
Zeile2:=FloattoStr(quotient);
label2.caption:=Zeile1+chr(13)+Zeile2;
except //on ezerodivide do
showmessage ('Schlimmer Fehler:'+chr(13)+'Durch Null darf man nicht dividieren !!');
end;
end;
end.
Unser einfacher Taschenrechner lässt sich ohne weiteres noch erweitern durch
wissenschaftliche Funktionen oder anspruchsvollere Rechenleistungen wie Wurzeln
oder Potenzen.
9. Begrüßung mit einer Checkbox
Entwerfen Sie ein Formular mit
folgendem Aussehen !
2 Labels
2 Buttons
1 Editfenster
1 checkbox
Folgende Befehle werden
gebraucht:
If .... then .... else
Checkbox1.checked
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 14
Eine Einführung in Delphi 5/6/7 - 2. März 2012
9.1 Der Befehl If … then … else
Zu Deutsch … Wenn (IF) eine bestimmte Bedingung erfüllt ist, dann (Then) soll eine
Anweisung durchgeführt werden, oder (Else) eine 2. Anweisung erfolgen !
Beispiel :
Wenn eine Zahl größer als 100 ist, soll die Ausgabe erfolgen : Die Zahl ist größer als
100, sonst : Die Zahl ist kleiner als 100.
In Delphi :
If Zahl > 100 then showmessage (’Die Zahl ist größer als 100’) else
Showmessage (’Die Zahl ist kleiner als 100’);
If Bedingung
(Zahl > 100)
erfüllt
then Anweisung 1 Else Anweisung 2
Zahl ist größer als 100 Zahl ist kleiner als 100
Oft ist nur eine Anweisung ausreichend! Dann kann der Else – Teil entfallen
In unserem Fall ist die Bedingung : If checkbox1.checked (d.h. Anwender setzt ein
Häkchen bei weiblich) Then .... Anweisung 1, also Begrüßungstext :
Liebe Frau Müller, wir begrüßen Sie in unserem Delphi-Programmierkurs!
Else ... Anweisung2, also Begrüßungstext bzgl. männlichen Geschlechts
Lieber Herr Meier, , wir begrüßen Sie in unserem Delphi-Programmierkurs!
Noch eine Hilfe : Verwenden Sie die zeilenweise Ausgabe des Taschenrechner-
Programms! Also:
Zeile1:=’Liebe Frau usw Zeile2:=’Lieber Herr usw
Label2.caption:=Zeile1 + chr(13) + Zeile2;
Neuen Ordner anlegen und speichern nicht
vergessen!
Dann erst mit F9 oder „Play“ –Taste compilieren
9.2 Aufgabe1:
Schreiben Sie ein Programm, das DM in Euro umrechnet und Euro in DM!
Verwenden Sie 2 Checkbox-Buttons ! Die Umrechnungskurse sind :
Euro:=Zahl*1.95833
9.3 Aufgabe2:
Ein Programm gibt Ihnen zu der Telefonnummer die Vorwahl an! 2 Checkboxes.
Checkbox1 (Sie sind aus Marpingen) Vorwahl 06853
Checkbox2 (Sie sind aus St. Wendel) Vorwahl 06851
Ausgabe z.B. Eingabe 7531 – Checkbox2 -> 06851 / 7531
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 15
Eine Einführung in Delphi 5/6/7 - 2. März 2012
9.4 Lösungen: Begrüßungstext
procedure TForm1.Button1Click(Sender: TObject);
var zeile1,zeile2:string;
begin
If checkbox1.checked
Then Zeile1:='Liebe Frau ' +Edit1.text +','
Else Zeile1:= ' Lieber Herr ' +Edit1.text +',';
Zeile2:=' Wir begrüßen Sie hier im Info Kurs ';
Label2.caption:=zeile1+chr(13)+zeile2;
end;
9.5 Lösung-Aufgabe1:
procedure TForm1.RadioButton1Click(Sender: TObject);
var Euro,Zahl,DM:extended;
begin
If Radiobutton1.checked then Begin
Zahl:=strtofloat(edit1.text);
Euro:=Zahl/1.95833;
Memo1.text:= edit1.text+' DM sind umgerechnet:'
+ floattostrf(Euro,fffixed,8,2)+' Euro';
end;
If Radiobutton2.checked then Begin
Zahl:=strtofloat(edit1.text);
DM:=Zahl*1.95833;
Memo1.text:= edit1.text+' Euro sind umgerechnet:'
+ floattostrf(DM,fffixed,8,2)+' DM';
end;
FloatToStrF bedeutet :
Festkomma-Format mit
8 Stellen insgesamt und
2 Nachkommastellen !
Die mit dem Pfeil gekenn-
Zeichnete Komponente
Ist eine Radiogroup. Sie
dient zur grafischen
Verbesserung der Anzeige
des Formulars!
Aufgabe :
Lässt man das Eingabefeld
frei, erfolgt eine
Fehlermeldung : Dies ist
keine Gleitpunktzahl !
Verändern Sie das Programm durch Try ... Except und fangen Sie diese
Fehlermeldung damit ab!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 16
Eine Einführung in Delphi 5/6/7 - 2. März 2012
9.6 Lösung-Aufgabe 2
Neue Komponenten :
1. Bitbutton – BKind Close
-Auszuwählen im Objekt-
inspektor! Ersetzt den
Button mit der Caption
z.B. Ende; Beim Bitbutton
entfällt der Eintrag Close;
im Quell-Code-Fenster
2. Eine Listbox mit der
Hintergrundfarbe Grau!
Borderstyle – BSNone
Visible – False
Items – Liste eintragen
Alle Eigenschaften im
Objektinspektor einstellen!
Procedure TForm1.RadioButton1Click(Sender: TObject);
begin
If radiobutton1.checked then
label2.caption:='St. Wendel ist :';
label3.caption:='06851';
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
If radiobutton2.checked then
label2.caption:='Marpingen ist :';
label3.caption:='06853';
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
If radiobutton3.checked then
label2.caption:='Saarbrücken ist :';
label3.caption:='0681';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
listbox1.visible:=true; // Listbox wird sichtbar !!
end;
end.
Memofeld und Listbox sind in der Handhabung gleich !!!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 17
Eine Einführung in Delphi 5/6/7 - 2. März 2012
9.7 Aufgabe:
Fügen Sie im obigen Programm noch einen Button hinzu und schreiben Sie das
Programm um, dass folgende Veränderungen eintreten!
Button1 – Listbox wird sichtbar! Caption = Liste an!
Button2 – Listbox ist unsichtbar! Caption = Liste aus!
10. Die Image – Komponente und die Hilfe in einer Listbox
Folgende Buttons sind einzurichten :
2 Buttons, 1 BitButton, 1 Listbox und eine Imagekomponente
Das Bild 1ur.jpg wird als Datei zur Verfügung gestellt und befindet sich im Schüler-
ordner H:\D5.
Klickt man auf den Hilfe-Button, soll folgender Text in der Listbox erscheinen:
„Man zieht die Flasche und leert sie mit einem Zug !“
Klickt man auf den Clear-Button, wird der Inhalt der Listbox gelöscht !
Der Befehl lautet : Listbox1.clear;
Wichtig ! Die Image Komponente besitzt eine Eigenschaft im Objektinspektor, die
sich Stretch nennt ! Das ist ein Boolean-Wert, der also den Wert True oder False
annehmen kann! Hier muss True angewählt werden damit das Bild sich dem
vorgegebenen Grafikrahmen anpasst. Das muss unbedingt ausprobiert werden,
damit die Grafik auch ganz sichtbar ist !
Der Source-Code:
procedure TForm1.Button1Click(Sender: TObject);
var zeile:string;
begin
zeile:='Anleitung';
listbox1.items.add(zeile);
Zeile:='Man zieht die Flasche';
listbox1.items.add(zeile);
zeile:='Und leert sie mit einem Zug!';
listbox1.items.add(zeile);
end;
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 18
Eine Einführung in Delphi 5/6/7 - 2. März 2012
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.clear;
end;
end.
10.1 Aufgabe
Schreiben Sie ein Programm, dass die Oberfläche und das Volumen eines Quaders
berechnet !
Können mit folgendem Befehl
gelöscht werden: z.B.
Edit1.text : = ’’;
Das ist ein sogenannter Leer-
String!
Die Formeln sind :
V=a*b*c
O=2*(a*b+a*c+b*c)
Als Einheit sollen einfach nur
die Begriffe :
Flächeneinheiten bzw.
Volumeneinheiten in der
Listbox erscheinen !
Drückt man auf den Hilfe-
Button, sollen in der Listbox
Die oben genannten Formeln
zur Berechnung erscheinen!
10.2 Lösung - Quader
Der Source-Code:
procedure TForm1.BitBtn2Click(Sender: TObject);
var zeile:string;
begin
zeile:='Die Formel für die Oberfläche beträgt:';
listbox1.items.add(Zeile);
Zeile:=' O = 2*(ab+ac+bc)';
listbox1.items.add(Zeile);
zeile:='______________________________________';
listbox1.items.add(Zeile);
Zeile:=' Die Formel für das Volumen beträgt:';
listbox1.items.add(Zeile);
Zeile:=' V = a * b * c ';
listbox1.items.add(Zeile);
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 19
Eine Einführung in Delphi 5/6/7 - 2. März 2012
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.items.clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,O:extended;Zeile:string;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
O:=2*(a*b+a*c+b*c);
Zeile:='Die Oberfläche beträgt :';
listbox1.items.add(Zeile);
Zeile:= FloatTostr(O)+' Flächeneinheiten';
listbox1.items.add(Zeile);
end;
procedure TForm1.Button2Click(Sender: TObject);
var a,b,c,V:extended;Zeile:string;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
V:=a*b*c;
Zeile:='Das Volumen beträgt :';
listbox1.items.add(Zeile);
Zeile:= FloatTostr(V)+' Volumeneinheiten';
listbox1.items.add(Zeile);
end;
11. Grafikanweisungen –Shape-Colordialog
Colordialog, Shape(Stcircle), Up-Down, Trackbar, Bitbutton(Close), 4 Buttons
3 Labels (Randdicke, Radius einstellen, Pixel).
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 20
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Erstellen Sie erst einmal das Formular mit obigem Aussehen !
In der Menuleiste Dialoge wählen Sie die Colordialog-Komponente aus
und platzieren Sie diese irgendwo auf
dem Formular-Fenster. Nach dem Start des Programms ist diese zwar nicht
sichtbar, wird aber beim Anklicken des entsprechenden Buttons aktiviert.
Folgende Anweisung ändert die Füllfarbe der ausgewählten Shape – Hier der
Kreis :
If ColorDialog1.Execute then shape1.brush.color:= ColorDialog1.color;
…..shape1.pen.color :=ColorDialog1.color ; ändert die Farbe des Kreisrandes !
…shape1.pen.width :=Zahl gibt die Randdicke des Kreises an !!
Wie kann man nun die Randdicke bequem steuern ? Das kann man z.B. mit der
Up-Down Komponente im Komponentenmenu Win 32 realisieren.
Dazu sind noch folgende Einstellungen im
Objektinspektor vorzunehmen : Associate – Button3 auswählen !!
Die Verknüpfung dieser Komponente mit dem Randdicke-Einstellungsbutton .
Verändert man die Up-Down Komponente, so ändert sich auch die Caption des
entsprechenden Buttons. Hier im Beispiel ist das der Button3.
Klickt man den Button3 an, so ändert sich automatisch die Randdicke des
Kreises, so wie die Caption es anzeigt und wie die aktuelle Position der Up-Down
Komponente ist. shape1.pen.width:=updown1.position;
Eine andere Möglichkeit, bestimmte Größen zu verändern, ist die Trackbar-
Komponente unter Win32 zu finden :
shape1.height:=trackbar1.position; Steuert den Radius des Kreises
label2.caption:=inttostr(trackbar1.position); Gibt den aktuellen Radius an !
Mit dem Button NEU sollen alle Einstellungen auf Standardwerte zurück gestellt
werden. Diese sind :
Kreisfarbe = weiß, Randfarbe = schwarz und Randdicke = 1 !
Vervollständigen Sie jetzt diese Programm und speichern es ab !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 21
Eine Einführung in Delphi 5/6/7 - 2. März 2012
11.1 Aufgabe :
Platzieren Sie 1 Shape-Komponente auf dem Formularfenster(Rechteck). Steuern
Sie die Farbe mit dem Colordialog und Breite und Höhe mit einer Trackbar !
11.2 Der Source Code :
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then shape1.brush.color:= ColorDialog1.color;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ColorDialog1.Execute then shape1.pen.color:= ColorDialog1.color;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
shape1.pen.width:=updown1.position;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
shape1.brush.color:=clwhite;
shape1.pen.color:=clblack;
shape1.Pen.width:=1;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
shape1.height:=trackbar1.position;
label2.caption:=inttostr(trackbar1.position);
end;
end.
Lösung der Aufgabe :
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 22
Eine Einführung in Delphi 5/6/7 - 2. März 2012
procedure TForm1.Button1Click(Sender: TObject);
begin
If colordialog1.execute then shape1.brush.Color:=colordialog1.Color;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
If colordialog1.execute then shape1.Pen.Color:=colordialog1.Color;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
shape1.width:=trackbar1.Position;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
label1.caption:=inttostr(trackbar1.position);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
shape1.Height:=trackbar1.Position;
end;
end.
12. Das Programm – Taxi – Proportionale Schriftarten
Wir programmieren ein Rechnungs-
programm für ein Taxi-Unternehmen.
Grafiken findet man entweder im
Internet oder das Beispiel hier unter
\microsoft office\cliparts\
TR00233_.wmf.
Ein Problem beim Programmieren
sind die unterschiedlichen Schriftart-
größen (Fonts) unter Windows. Da
die einzelnen Zeichen verschiedene
Platzgrößen beanspruchen, ergeben
sich Unregelmäßigkeiten bei der
Ausgabe ! Siehe links bei der
Fontwahl : Arial !
Abhilfe schafft hier die Wahl einer
sogenannten Proportionalschrift :
z.B. Courier New, die in der obigen
Form im Objektinspektor ausgewählt
wurde !!
Erstellen Sie obige Form :
4 extended -Variablen,
4 string-Variablen für die Ausgabe
und wir lernen einen neuen Befehl
kennen, der sich Format nennt !!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 23
Eine Einführung in Delphi 5/6/7 - 2. März 2012
12.1 Format (‘%8.2f’,[Variable oder Zahl]) ;
Erklärungen :
% steht immer vor der Formatausgabe – ist also eine Syntax
8.2 Zahlendarstellung = 8 Stellen insgesamt ; einschließlich des Kommas
und 2 Nachkommastellen (Währung Euro).Je größer die Vorkommazahl,
desto weiter rückt die Zahlengruppe nach rechts ! Logisch Oder ?
f Feste Gleitkommazahl
Hinweis : Bewegen sie den Cursor vor das F von Format ! |Format
Und Drücken Sie die F1 – Taste für die Index-Hilfe unter Delphi
Wählen Sie jetzt unter dem Menu für Format --- String-Ausgabe !
12.2 Der Quellcode für das Taxi-Programm
procedure TForm1.Button1Click(Sender: TObject);
var kmgeld,koffergeld,gesamtgeld:extended;
z1,z2,z3,z4:string;
begin
{Verarbeitung Eingabe}
kmgeld:=strtofloat(edit1.text)*0.6;
koffergeld:=strtofloat(edit2.text)*1;
gesamtgeld:=3+kmgeld+koffergeld;
{Ausgabe Vorbereitung}
z1:='Grundgebühr :'+format('%8.2f',[4.0])+' €';
z2:='Kilometergeld :'+format('%8.2f',[kmgeld])+' €';
z3:='Koffergeld :'+format('%8.2f',[koffergeld])+' €';
z4:='Endpreis :'+format('%8.2f',[gesamtgeld])+' €';
{Ausgabe}
label4.caption:=z1+#13+z2+#13+z3+#13+z4;
Übrigens : chr(13) bedeutet dasselbe wie #13
13. Schleifen
Es gibt 4
Grundtypen an
Schleifen, die
individuell
einsetzbar sind
und rein
programm-
technisch
gleichwertig sind.
Der Variablentyp
ist Integer !
Programmieren Sie obiges Formular ! Tipp : Um die einzelnen Buttons auszurichten,
karkiert man sie mit einem Mausklick und drückt zusätzlich die Hoch- bzw die shift-
Taste. Danach mit der rechten Maustaste auswählen .. Position ... Am Raster
ausrichten !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 24
Eine Einführung in Delphi 5/6/7 - 2. März 2012
13.1 Die For ... next .. Schleife
z. B. For n :=1 to 10 Do ... // Zählt aufwärts
Begin
Anweisung 1 //
Anweisung 2
End ;
13.2 Die Schleife zählt abwärts
z. B. For n :=10 Downto 1 Do ... // Zählt abwärts
Begin
Anweisung 1 //
Anweisung 2
End ;
13.3 Wiederholungsschleife Repeat .....Until
begin // i wird so oft um eins hochgezählt, bis sie gleich dem Wert 10 ist.
i:=1;
repeat Anweisung1
i:=i+1 until i=10;
end;
13.4 While – Schleife
begin
i:=1;
while i <=10 Do // Genau so funktioniert while i< 11
begin
Anweisung1;
i:=i+1;
end;
Die Ausgabe z.B. von
Aufwärts1 erfolgt mit dem
Grafik-Befehl :
Canvas.Textout (x-Koordinate, y-Koordinate,’Aufwärts’)
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 25
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Die Konstruktion für die 1. Schleife sieht dann folgender Maßen aus :
procedure TForm1.btnFORAUFWAERTSClick(Sender: TObject);
? var i:Integer;
begin
?? for i:= 1 to 5 do
??? begin Canvas.TextOut(60,i*25, 'Aufwärts '+inttostr(i))end;
end;
Erklärungen dazu :
? Die Zahlenvariable i wird festgelegt
?? Während "i" nun von 1 bis 5 hochgezählt wird,
??? erscheint auf dem Formular jedes Mal der Text : "Aufwärts".
Er wird an der x-Koordinate 60 und an der y-Koordinate i*25 ausgegeben.
Der 1. Text also bei den Koordinaten (60,25), der 2. Text bei (60,50), der
3. Text bei (60,75) bis .......
Zusätzlich wird noch der Index mit angezeigt, also Aufwärts1, Aufwärts2 ...
Vorsicht ! Canvas.Textout arbeitet mit Strings . Da der Index vom Typ
Integer ist , muss man ihn noch mit IntToStr umwandeln !
Aufgabe
Vervollständigen Sie den Programmcode für alle 4 Schleifen und speichern Sie unter
dem D5 Ordner Schleifen ab !
14. Aufgabe : Wurzeltabelle in einer Listbox
Verwenden Sie eine
Schleife ihrer Wahl:
Der Befehl für die Wurzel-
berechnung lautet :
Y :=sqrt(x) ;
Square Root = Quadrat-
wurzel.
Zur Formatierung ist
wieder wie beim Taxi-
Programm eine Propor-
tionalschrift wie
Courier New notwendig !
Die Ausgabe wird
formatiert ausgegeben :
Also : Format
(‘%8.2f’,[Variable oder
Zahl]) ;
Hinweis : Für eine Quadratzahltabelle wird übrigens der Befehl y :=sqr(x) verwendet.
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 26
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Der Quellcode :
procedure TForm1.Button1Click(Sender: TObject);
var start,ende:integer;x,y:extended;z:string;
begin
start:=strtoint(edit1.text);
ende:=strtoint(edit2.text);
z:=' x Wurzel';
listbox1.Items.add(z);
z:='======================';
listbox1.Items.add(z);
x:=start;while x<=ende Do
begin
y:=sqrt(x);
z:=format('%8.0f',[x])+' '+format('%8.6f',[y]);
listbox1.Items.add(z);
x:=x+1;
end;
z:='======================';
listbox1.Items.add(z);
15. Wurzeln mit Val
- Der Befehl Val
- Eigenes ICON
- Eigene GLYPH auf
Speedbutton
- Windows.Beep
- OnKey Ereignis
15.1 Der Befehl Val hat folgende Syntax : Val (Text, Zahl, Fehler)
- Text wäre z. B. Edit1.text
- Zahl ist die Zahl, die im Edit-Fenster steht
- Fehler ist eine Zahl, die die Stelle des Fehlers angibt
Fehler ist 0 =>kein Fehler; Fehler ist 1 => Fehler an der 1. Stelle der Zahl
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 27
Eine Einführung in Delphi 5/6/7 - 2. März 2012
15.2 Quellcode
procedure TForm1.BitBtn1Click(Sender: TObject);
var zahl,wurzel:extended;wurzelwert:string[30];fehler:integer;ok:boolean;
begin
val(edit1.Text,zahl,fehler);
ok:=(fehler=0);
if not(ok)then begin
windows.Beep(440,400);edit1.setfocus;exit;
end;
wurzel:=sqrt(zahl);str(wurzel:1:15,wurzelwert);
label2.Caption:=wurzelwert;
end;
procedure TForm1.pruefe(Sender: TObject; var Key: Char);
begin
case key of
',':key:='.';'o','O':key:='0';
end;
end;
end.
Erklärungen:
- Windows.beep (Frequenz, Millisekunden) => 440 Hz ist Ton A (Kammerton)
- Komponentexyz.setfocus => Cursor – Eingabefeld
- Procedure TForm1.pruefe => vermeidet falsche Eingabe im Edit – Feld:
1.) Edit1.text – Objektinspektor (Kurz OI) – Ereignisse – OnKeypress –
Pruefe oder bel. Namen eintragen – Doppelklick erzeugt gewünschte Prozedur
2.) Komma wird zu Punkt; kleines o und großes O wird zur Null
3.) Bei anderen Fehlern wie z B. 3e erfolgt der Beep
4.) Glyph (Icon, Cursor oder Bitmap BMP) erzeugen im Grafikeditor unter Tools –
Menu => BMP (30 x 30 Pixels) – im Projektordner speichern
Zoom aktivieren !!
5.) Eigenes Icon entwerfen – Einrichten unter : Projekt – Optionen – Anwendung
Symbol laden – Vorgabe anklicken – Bei Start des Programms => Your icon
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 28
Eine Einführung in Delphi 5/6/7 - 2. März 2012
16. Datum und Zeit einfügen
Folgende Komponenten sind wichtig :
2 Editboxen, 1 Trackbar (Win32), 1 Bitbutton (BKClose), 1 Label , 1 Timer (System)
Wichtige Befehle : Var z.B. Uhr oder DatumZeit vom Typ TdateTime ist für Datum
und Zeit extra reserviert ! Also : Var DatumZeit :TdateTime
procedure TForm1.Timer1Timer(Sender: TObject);
var
Datumzeit : TDateTime;
str,sek : string;
begin
DatumZeit := Time; // aktuelle Uhrzeit zuweisen!
str := TimeToStr(DatumZeit); // Uhrzeit in einen String konvertieren
sek:=copy(str,7,2); // z.B. 14:32:17
trackbar1.position:=strtoint(sek); // Min=1;Max=60
label1.caption:=sek+' Sekunden'; // Ausgabe der Sekunden an Trackbar
Edit2.text:=str; {Ausgabe der Uhrzeit in Edit2 } // Mit {}auch Kommentar möglich
DatumZeit:=Date; {aktuelles Datum zuweisen}
str:=Datetostr(DatumZeit); {Datum in String konvertieren}
Edit1.Text:=str; {Ausgabe des datums in Edit1}
caption:=str+' '+timetostr(time); {Form.caption=Datum und dahinter Uhrzeit}
end;
// So schreibt man einen Kommentar
Ist nur eine Captionzuweisung d.h. hier die Formzuweisung , kann der Zusatz
Form.Caption auch entfallen!!! Wird aber selten empfohlen !!
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 29
Eine Einführung in Delphi 5/6/7 - 2. März 2012
16.1 Uhrzeit in einem Panel und Datum in Langform
2 Neue Komponenten werden
eingesetzt :
1. Panel (Color ClBlack und
gelber Font )
2. StatusBar (Windows32
Komponente)
procedure TForm1.Timer1Timer(Sender: TObject);
var Hour, Min, Sec, mSec: Word;
begin
Panel1.Caption:= TimeToStr(Time); //Ausgabe der Zeit im Panel
with StatusBar1.Panels do begin
Items[0].Text:= TimeToStr(Time);
Items[1].Text:= FormatDateTime('"Heute ist "dddd", der "d. mmmm yyyy"',
Date) //Langform des datums
end;
DecodeTime(time, Hour, Min, Sec, mSec);
Trackbar1.Position := sec;label1.caption:=intTostr(trackbar1.position)+'
Sekunden';
end;
end.
16.2 Zeitmessung mit Bordmitteln
GetTickcount gibt die Zeit in ms zurück, die seit dem letzten Windowsstart vergangen
sind. Der Rückgabewert ist vom Typ Cardinal (Vorzeichenloser 32Bit-Datentyp).
Damit kann man ausreichend genug Algorithmen messen und vergleichen, wie
Sortierverfahren zum Beispiel.
Var zeit:cardinal;
Begin
zeit:=GetTickCount; // Anfangszeitpunkt festlegen
…… Anweisungen, die gemessen werden sollen
…
Label1.caption:=intTostr(GetTickCount-zeit);//Ausgabe und Differenz festlegen!
End;
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 30
Eine Einführung in Delphi 5/6/7 - 2. März 2012
16.3 MDI - Kindfenster
MDI = Multiple Document Interface ! Im Objektinspektor
lassen sich mit Formx.show sogenannte Kindfenster oder
Child-Forms anzeigen !! Man muss bei FormStyle die
Eigenschaft fsMDIChild einstellen !!
Solche Anwendungen werden dann geschrieben, wenn die Kindfenster immer alle
aktiv bleiben sollen !
Übrigens kann man die Kindfenster nicht schließen. Man muss sie durch einen
besonderen Befehl zerstören und damit wird wieder Speicherplatz freigegeben.
Der Befehl dazu lautet : Action:=caFree; und wird im
OnClose – Ereignis des Kindfensters eingetragen !
Action:=caMinimize ist Standardeinstellung
Schreiben Sie obiges Programm und vernichten Sie ein Kindfenster durch obige
Prozedur !
Das zerstörte Kindfenster lässt sich nicht ohne weiteres wieder erzeugen!!
16.4 MDI mit Menu und Anordnung der Kindfenster
Schritt 1: Neue Anwendung – Formstyle = MDIForm
Schritt 2 : Form 2 = Kind 1 => Formstyle =MDIChild mit Label1=Kind 1
Schritt 3 : Form 3 = Kind 2 => Formstyle =MDIChild mit Label1=Kind 2
Schritt 4: Form 4 = Kind 3 ..
Schritt 5: Menu erzeugen mit :
Datei Anordnen Programm beenden
Öffnen Kind 1 Kind 2 Kind 3 Horizontal
Alle Schließen Vertikal
Überlappend
Zusatz: Unter Projekt – Optionen – Die Kindfenster von „Automatisch erzeugt“ nach
„Verfügbare Formulare „ verschieben und dann selbst zur Laufzeit erzeugen mit dem
Befehl : z.B. Tform2.create(self) in der Hauptunit der Form1
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 31
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Quellcode:
uses Unit2,unit3,unit4;
{$R *.dfm}
procedure TForm1.Kind11Click(Sender: TObject);
begin
Tform2.create(self);
end;
procedure TForm1.Programmbeenden1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Kind21Click(Sender: TObject);
begin
Tform3.Create(self);
end;
procedure TForm1.Kind31Click(Sender: TObject);
begin
Tform4.Create(self);
end;
procedure TForm1.berlappend1Click(Sender: TObject);
begin
Cascade;
end;
procedure TForm1.Horizontal1Click(Sender: TObject);
begin
Tilemode:=tbhorizontal;tile;
end;
procedure TForm1.Vertikal1Click(Sender: TObject);
begin
tilemode:=tbvertical;tile;
end;
procedure TForm1.Alleschlieen1Click(Sender: TObject);
var n:integer;
begin
for n:=mdichildcount-1 downto 0 do mdichildren[n].close;
end;
end.
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 32
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Aufgaben:
1. Schreiben sie ein Delphiprogramm
Summenzeichen
erzeugt mit Delphi-
Grafikeditor – Format:
Bitmap ( 30 x 30 Pixels)
Die Einstellung „Flat“ im
Objektinspektor
einstellen !
Speedbutton
Flat=True
2. Schreiben Sie ein Delphiprogramm
Image-Komponente –
Delphi - Grafikeditor
Image1.click –
programmieren
Ende Button :
Speedbutton mit
eigenem Glyph
3. Schreiben Sie ein Delphiprogramm
Label1 soll sich ändern – je nach Button
Schriftgröße = label1.font.size
Schriftfarbe = label1.font.color
Radiogroup mit Radiobuttons
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 33
Eine Einführung in Delphi 5/6/7 - 2. März 2012
Sourcecode – Aufgabe 1:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var summe,ug,og,n:integer;
begin
summe:=0;
ug:=strtoint(edit1.Text); //Untergrenze
og:=strtoint(edit2.Text); //Obergrenze
for n:=ug to og do begin
summe:=summe+n;
end;
label3.Caption:=inttostr(summe);
end;
Sourcecode – Aufgabe 2:
procedure TForm1.Image1Click(Sender: TObject);
var n:cardinal;lim:extended;
begin
n:=strtoint(edit1.Text);
lim:=power( 1+1/n,n); // uses math;
label2.Caption:=floattostrf(lim,ffFixed,12,10);
//12 Stellen insgesamt(Dezimalpunkt mitgerechnet!!)-10 Nachkommastellen
end;
Sourcecode – Aufgabe 3:
Farben warden hier manuell
in Itemindex gesetzt!
Itemindex:=0 ist die 1. Farbe
procedure TForm1.FormCreate(Sender: TObject);
begin
with radiogroup1 do begin
with items do begin
add('Schwarz');add('Rot');add('Gelb');add('Blau');add('Grün');
end;
itemindex:=0;
end;
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 34
Eine Einführung in Delphi 5/6/7 - 2. März 2012
label1.font.name:='Arial';label1.font.size:=18;label1.Font.Color:=clmaroon;
label1.Font.Style:=[fsbold]+[fsitalic];
borderstyle:=bsnone;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if radiogroup1.ItemIndex=0 then label1.Font.Color:=clblack;
if radiogroup1.ItemIndex=1 then label1.Font.Color:=clred;
if radiogroup1.ItemIndex=2 then label1.Font.Color:=clyellow;
if radiogroup1.ItemIndex=3 then label1.Font.Color:=clblue;
if radiogroup1.ItemIndex=4 then label1.Font.Color:=clgreen;
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
if radiogroup2.itemindex=0 then label1.Font.size:=20;
if radiogroup2.itemindex=1 then label1.Font.size:=24;
if radiogroup2.itemindex=2 then label1.Font.size:=30;
if radiogroup2.itemindex=3 then label1.Font.size:=36;
end;
procedure TForm1.RadioGroup3Click(Sender: TObject);
begin
if radiogroup3.itemindex=0 then borderstyle:=bssingle;
if radiogroup3.itemindex=1 then borderstyle:=bsdialog;
if radiogroup3.ItemIndex=2 then borderstyle:=bssizetoolwin;
if radiogroup3.itemindex=3 then
borderstyle:=bsnone;bordericons:=bordericons+[bihelp];
end;
17. Ein einfaches Zeichenprogramm mit Mouse – Programmierung
On Form.Create Ereignis mit
folgenden Eigenschaften
erstellen: Hintergrundfarbe der
Form => weiß;
Position der Form => links
oben;
Größe => Bildschirmgröße;
Pinselfarbe => Schwarz;
Pinselgröße => 3;
Cursorform => Kreuz;
Eine Variable vom Typ ‚Boolean’ erstellen!
Name ist egal ! Die Variable soll
überprüfen, ob die Mouse geklickt ist !
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 35
Eine Einführung in Delphi 5/6/7 - 2. März 2012
var
Form1: TForm1;
var Mouseclicked:boolean=false; //wird sofort auf False gesetzt=> Also keine
Aktion!! Diese Variablen gelten automatisch für alle Ereigniscodes der Anwendung!
implementation
Bei Mouse – Ereignissen werden gewöhnlich 3 Klick – Zustände programmiert :
1. Ist die Mouse gedrückt ! => MouseDown
2. Wird die Mouse bewegt! => MouseMove
3. Wird die Mouse – Taste losgelassen! => MouseUp
Rechte Mousetaste wird in dieser Anwendung nicht benötigt!
Mit einem Doppelclick wollen wir die Anwendung beenden !!
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
edit1.text:=inttostr(x);
edit2.text:=inttostr(y);
if mouseclicked then canvas.lineto(x,y); //Bei Bewegung wird gezeichnet!
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Refresh; // Zeichnung wird gelöscht!
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
borderstyle:=bssingle;
Top:=0;left:=0;
Height:=screen.Height;width:=screen.Width;
screen.Cursor:=crcross;
Form1.Color:=clwhite;
farbe.itemindex:=0;
Canvas.Pen.Color:=clblack;
canvas.Pen.width:=3;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mouseclicked:=true;
canvas.MoveTo(x,y);
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mouseclicked:=false;
end;
Norbert Schulz – Gesamtschule Marpingen 2005
Informatik 12 Seite 36
Eine Einführung in Delphi 5/6/7 - 2. März 2012
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Label3.Caption:='Dicke :'+inttostr(trackbar1.Position);
canvas.Pen.width:=trackbar1.Position;
end;
procedure TForm1.FarbeChange(Sender: TObject);
begin
if farbe.text='Schwarz' then canvas.Pen.Color:=clblack;
if farbe.text='Blau' then canvas.Pen.Color:=clblue;
if farbe.text='Rot' then canvas.Pen.Color:=clred;
if farbe.text='Gelb' then canvas.Pen.Color:=clyellow;
if farbe.text='Grün' then canvas.Pen.Color:=clgreen;
end;
procedure TForm1.Button2Click(Sender: TObject); //Radieren
begin
canvas.Pen.Color:=clwhite;
canvas.Pen.width:=10;
end;
procedure TForm1.FarbeDblClick(Sender: TObject);//Siehe Delphi – Hilfe!
begin
if Application.MessageBox('Wollen Sie das Programm beenden ?','Frage',36) = 6
then
Close; // 6 bedeutet : MouseResultYes => mryes … 7 wäre mrno ..
end;
end.
Norbert Schulz – Gesamtschule Marpingen 2005
Get documents about "