delphi Tutorial aktuell

Shared by: HC120302103327
Categories
Tags
-
Stats
views:
61
posted:
3/2/2012
language:
German
pages:
36
Document Sample
scope of work template
							                              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, Button1Verarbeitung, 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 

						
Related docs
Other docs by HC120302103327
OCR Document
Views: 60  |  Downloads: 0
008204 MC 3572 2007 ESSALUD RAR BASES
Views: 74  |  Downloads: 0
? ???? Nikon ????????? ??
Views: 22  |  Downloads: 0
Nikon Coolpix S3000
Views: 31  |  Downloads: 0
Bewerbung online
Views: 57  |  Downloads: 0
???????????? OTV SC c MAJ 554
Views: 9  |  Downloads: 0
Jimmies on the Move 5K
Views: 1  |  Downloads: 0
Mercia summary of HMRC consultation documents
Views: 4  |  Downloads: 0