Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante,...

47
Lazarus – Schnelleinseg Programmieren ist eine interessante, schöpferisch-kreave und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und kann von jeder Person erlernt und ausgeführt werden. Pascal mit den Erweiterungen zu Object Pascal ist die wohl übersichtlichste, am leichtesten erlernbare, lesbare und wartbare Programmiersprache. Sie ist bereits 1971 erschienen, wegen der fortwährenden Weiterentwicklung aber weder zurückgeblieben noch altmodisch, sondern absolut „up to date“. Mehr dazu in einem gutem Wikipediaarkel . Gern möchte ich Dich dabei unterstützen, Dein Wissen in Soſtware zu bringen und damit sowohl Dir selbst als auch anderen Menschen damit das Leben zu erleichtern. Besonders freuen würde ich mich über Rückmeldungen dazu, was an dieser Anleitung zu einem Schnelleinseg noch zu verbessern ist – daraus kann ich nur lernen. Dazu kannst Du mir eine Mail an [email protected] schreiben oder mich im Lazarusforum informieren (Mein Username ist dort „Niesi“). Harald Nieswandt

Transcript of Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante,...

Page 1: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Lazarus – Schnelleinstieg

Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und kann von jeder Person erlernt und ausgeführt werden.

Pascal mit den Erweiterungen zu Object Pascal ist die wohl übersichtlichste, am leichtesten erlernbare, lesbare und wartbare Programmiersprache. Sie ist bereits 1971 erschienen, wegen der fortwährenden Weiterentwicklung aber weder zurückgeblieben noch altmodisch, sondern absolut „up to date“. Mehr dazu in einem gutem Wikipediaartikel.

Gern möchte ich Dich dabei unterstützen, Dein Wissen in Software zu bringen und damit sowohl Dir selbst als auch anderen Menschen damit das Leben zu erleichtern.

Besonders freuen würde ich mich über Rückmeldungen dazu, was an dieser Anleitung zu einem Schnelleinstieg noch zu verbessern ist – daraus kann ich nur lernen. Dazu kannst Du mir eine Mail an [email protected] schreiben oder mich im Lazarusforum informieren (Mein Username ist dort „Niesi“).

Harald Nieswandt

Page 2: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Inhaltsverzeichnis 1 Vorbereitungen................................................................................................................................3

1.1 Download des Programmpakets...................................................................................................3

1.2 Installation....................................................................................................................................3

1.3 Hilfe finden....................................................................................................................................3

2 Es geht los mit dem Schnelleinstieg.................................................................................................5

2.1 Lazarus starten..............................................................................................................................5

2.2 Das Projekt speichern...................................................................................................................8

2.3 Eine Textausgabe einfügen.........................................................................................................11

2.3.1 Ein Memo einfügen..................................................................................................................11

2.3.2 Dem Memo einen Namen geben............................................................................................12

2.3.3 Das Memo platzieren...............................................................................................................13

2.3.4 Den Text im Memo ändern......................................................................................................14

2.4 Der erste Programmstart............................................................................................................15

2.5 Ein Hauptmenü einfügen............................................................................................................17

2.6 Daten speichern..........................................................................................................................25

3 Classes............................................................................................................................................37

3.1 TCustomerMemo........................................................................................................................37

3.2 tGraphicObject............................................................................................................................39

3.3 tList..............................................................................................................................................40

3.4 tMemo........................................................................................................................................41

3.5 tObject........................................................................................................................................44

3.6 tObjectList...................................................................................................................................46

3.7 tStringList....................................................................................................................................47

Page 3: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

1 Vorbereitungen

1.1 Download des ProgrammpaketsDu kannst die Lazarus-IDE als komplettes Paket (inklusive FreePascal) downloaden. Entweder von

• der Website Lazarus-IDE.org (http://www.lazarus-ide.org/index.php?page=downloads),

• bei Heise.de (https://www.heise.de/download/product/lazarus-59651) oder

• bei SourceForge.net (https://sourceforge.net/directory/os:windows/?q=lazarus).

Falls es mal Probleme mit den Links gibt, so kannst Du auch in jeder Suchmaschine mit der Eingabe„Download Lazarus IDE“ die aktuellen Download-Quellen finden

1.2 InstallationÜberlege Dir, wohin Du auf Deinem Rechner die Lazarus-Software installieren möchtest. Bei mir habe ich es auf dem „großen“ Notebook unter „D:\lazarus“, auf dem „kleinen“ Notebook unter „C:\lazarus“ installiert.

Für die Projekte habe ich mir ein Verzeichnis „D:\Projekte“ bzw. „C:\Projekte“ eingerichtet.

Du benötigst Admin-Rechte für den Rechner, auf dem Du Lazarus installieren möchtest. Der Download lieferte eine exe-Datei, die Du wie gewohnt mit einem Doppelklick startest und dann dieInstallation erlaubst.

1.3 Hilfe findenWenn Du etwas nicht weißt, wenn Du nicht weiter kommst oder wenn Du Anregungen suchst, dann kannst Du im Lazarusforum fündig werden. Sieh Dich ein wenig um, suche Dir die richtige Kategorie und stelle Deine Fragen.

Nach Aufruf der Seite befindest Du Dich im Portal, links oben findest Du den Link zur Foren-Übersicht.

Lazarus IDE mit Hinweisen für Einsteiger, zur Installation und Benutzung der IDE (IDE = Integrated Development Environment = Integrierte Entwicklungsumgebung).

Page 4: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Programmierung, ebenfalls mit einem Extraforum für Einsteigerfragen.

Bevor Du Fragen stellst, kann es sehr sinnvoll sein, erst einmal die Suchfunktion zu benutzen, denn viele Fragen wurden bereits gestellt und auch beantwortet.

Page 5: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2 Es geht los mit dem Schnelleinstieg

2.1 Lazarus startenIm Lazarus-Ordner findest Du recht viele Beispiele. Diefunktionieren aber leider nicht immer, Viele sind halt altund wurden nicht gepflegt. Das hängt auch damitzusammen, dass Lazarus und FreePascal komplettkostenlos sind, also niemand mit der aufwändigen Pflegeder Beispiele Geld verdienen kann.

Wir fangen hier mit einem einfachen, eigenen Projektan. Dazu einfach Lazarus starten, wie jedes andereProgramm auch.

Oben findest Du das „Hauptfenster“. Es enthält das Hauptmenü und die Komponentenpalette.

Links darunter befindet sich der Objektinspektor. In ihm werden die Eigenschaften der Komponenten angezeigt und geändert, er bietet Zugriff auf die Ereignisse und vieles mehr.

Rechts unterm Hauptfenster ist der Quelltexteditor, in ihm wirst Du Deine Programme schreiben.

Ganz unten befindet sich das Nachrichtenfenster, hier gibt Lazarus z. B. Fehlermeldungen aus.

Nun ist alles absolut notwendige getan, nun soll es losgehen:

Abbildung 2: Die Lazarus IDE

Abbildung 1: Lazarus im Windows Startmenü

Page 6: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke mit der Maus im Hauptmenü auf „Projekt“, wähle „Neues Projekt ...“.

Es erscheint der Dialog

Bestätige die Auswahl „Anwendung“ mit einem Klick auf den Button „Ok“.

Abbildung 3: Neues Projekt starten

Abbildung 4: Projektart festlegen

Page 7: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Das neue, fast leere Projekt wird geöffnet und wartet auf Deine Programmierung.

Abbildung 5: Das neue Projekt

Page 8: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.2 Das Projekt speichernGewöhne Dir bitte an, immer wieder mal Deine Arbeit zu sichern! Auch die besten Rechner und Programme sind nicht gegen jede Unwägbarkeit wie Abstürze sicher.

Auch wenn Du noch nichts programmiert hast, sichere das Projekt schon einmal: Klicke im Hauptmenü auf dasIcon mit dem Diskettensymbol:

Abbildung 6: Das Projekt speichern

Page 9: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Speichere das Projekt in einem eigenen Ordner, das macht die Arbeit übersichtlicher.

Erstelle einen Ordner Projekte auf der Festplatte, in diesem einen Ordner „Projekt01“. Hierin kannst Du zuerst die „*lpi“-Datei speichern, z. B. als „projekt1.lpi“. Dazu brauchst Du nur auf den Butten „Speichern“ klicken.

Als nächstes wird die Quelltextdatei gespeichert.

Für mich bewährt hat es sich, die Datei mit dem Hauptfenster als „main.pas“ zu speichern.

Abbildung 7: Die Projektdatei speichern

Abbildung 8: Den Pascal-Quelltext speichern

Page 10: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Und so sieht der Inhalt des Ordners dann aus, wenn alles gut gegangen ist:

Welche Datei wofür da ist - wir klären das. Später. Denn jetzt soll es einfach schnell weitergehen mit dem wirklichen Programmcode.

Abbildung 9: Die Dateien im Projektordner

Page 11: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.3 Eine Textausgabe einfügen

2.3.1 Ein Memo einfügenDamit wir im Programm Texte ausgeben können nutzen wir ein sogenanntes Memo. Dazu klicke bitte auf das TMemo-Symbol in der Komponentenpalette:

Klicke dann in das Fenster-Formular:

Abbildung 10: Das tMemo in der Komponentenpalette auswählen

Abbildung 11: Das tMemo im Fenster platzieren

Page 12: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Das Objekt TMemo wurde hinzugefügt. Mit Hilfe des Objektinspektors können wir dieses Objekt jetzt für unsere Zwecke zurecht machen.

2.3.2 Dem Memo einen Namen geben

Scrolle im Objektinspektor, bis Du die Eigenschaft „Name“ siehst:

Gib dem Memo einen eindeutigen Namen, der nicht vom Lazarus mit anderen Objekten verwechselt werden kann. Bewährt für mich hat sich hier einfach „MyMemo“.

Abbildung 12: Dem Memo einen Namen geben

Page 13: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.3.3 Das Memo platzierenKlicke im OS (Objektinspektor) auf „Align“ und „aBottom“.

Das Memo wird nun am unteren Rand des Anwendungsfensters platziert.

Probiere die anderen Einstellungen aus …

Du kannst das Memo im Objektinspektor über die Eigenschaften „Top“ und „Left“ auch selbst platzieren. Die Größe kannst Du mit „Height“ und „Width“ ändern. Oder alles visuell mit der Maus erledigen.

Abbildung 13: Voreinstellungen zum Platzieren des Memos

Abbildung 14: aBottom-Einstellung

Page 14: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.3.4 Den Text im Memo ändernIm Objekt MyMemo sind die Textzeilen im Array „Lines“ gespeichert. Jede Zeile in - richtig: einer Line. Vorbelegung ist, dass in der ersten Textzeile der Name des Objektes tMemo angezeigt wird.

Das nervt.

Daher ändern wir das, klicke dazu im OS auf „Lines“:

Nun klicke auf den „...“ -Button, damit der Zeichenketteneditor erscheint:

Hier kannst Du den Text „MyMemo“ löschen.

Hier kannst Du, wenn Du es willst, auch andere Texte eingeben, die dann zum Programmstart angezeigt werden. Teste es …

Abbildung 15: Lines im Memo bearbeiten

Abbildung 16: Der Zeichenketteneditor

Page 15: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.4 Der erste ProgrammstartKlicke im Hauptmenü auf das grüne Dreieck oderdrücke die F9-Taste. Dein programm wirdcompiliert, d. h., in einen Code übersetzt, den derRechner abarbeiten kann.

Im Nachrichtenfenster werden dazu diverseMeldungen ausgegeben, die aber, solange Du allesrichtig machst, nicht so wichtig sind. Am Schlusssollte es so aussehen:

Und Dein Programm wurde gestartet, was dann so aussehen sollte:

Abbildung 17: Der Zeichenketteneditor für die Memo.Lines

Abbildung 18: Compilieren und starten

Abbildung 19: Das Nachrichtenfenster nach dem Compilieren

Page 16: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Ja, wenig los im Moment. Du kannst ins Memo schreiben, das Geschriebene editieren. Es geht allerdings verloren, wenn das Programm geschlossen wird.

Abbildung 20: Das gestartete Programm

Abbildung 21: Im Memo kann schon Text eingegeben und editiert werden

Page 17: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Das ändern wir als nächstes, dazu schließen wir das Programm:

2.5 Ein Hauptmenü einfügenDamit Du das Programm steuern kannst, muss es Befehle, komandos oder so entgegen nehmen können. Das soll zuerst über ein Hauptmenü passieren. Klicke in der Komponentenpalette auf den Menübutton:

Nun ins Fenster, womit Du ein Hauptmenü in Deinem Programm platzierst:

Abbildung 22: Programm beenden

Abbildung 23: Ein Hauptmenü über die Komponentenpalette einfügen

Page 18: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke nun mit der rechten Maustaste auf das MainMenu-Symbol und wähle Menü-Editor:

Abbildung 24: Das Hauptmenüicon im Programmfenster

Abbildung 25: Den Menüeditor starten

Page 19: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke dann mit der linken Maustaste einmal auf den Eintrag „New Item1“ und gib diesem im Objektinspektor eine andere Beschriftung, indem Du bei „Caption“ den Text „Datei“ einfügst und das mit drücken der Entertaste bestätigst..

Abbildung 26: Der Menüeditor

Abbildung 27: Das Menü mit den richtigen Texten versehen

Page 20: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Wo Du schon mal dabei bist, fülle bitte gleich noch mehr aus: klicke mit der rechten Maustaste im Menüeditor auf den Eintrag „Datei“ und wähle „Erzeuge Untermenü“.

Es erscheint unter „Datei“ ein Feld, dessen Beschriftung Du im Objektinspektor in „Test starten“ änderst und dann die Entertaste drückst.

Abbildung 28: Weiteren Menüeintrag einfügen

Abbildung 29: Text im Menüeintrag ändern

Page 21: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke mit der rechten Maustaste auf im Menüeditor auf den Menüeintrag „Test starten“, wähle „Neuen Eintrag einfügen (dahinter) und ändere im Objektinspektor den Text bei Caption in „-“ (ein Minuszeichen), drücke Enter.

Abbildung 31: Weiteren Menüpunkt einfügen

Abbildung 30: Noch ein Menüeintrag, diesmal ein trenner

Page 22: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Wähle wieder „Neuen Eintrag einfügen (dahinter)“ und andere Caption in „Beenden“.

Wenn es bei Dir auf dem Monitor so aussieht wie im Bild oben, dann hast Du es richtig gemacht.

Jetzt sorgst Du dafür, dass das Programm auch etwas tut, wenn Du die Menüeinträge im laufendenProgramm anklickst. Klick im Programmfenster auf den Menüeintrag „Datei“ und dann auf „Beenden“.

Abbildung 32: Menüpunkt "Beenden" eingefügt

Abbildung 33: Menüpunkte mit Aktionen verbinden

Page 23: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und
Page 24: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Du findest Dich dann im Quelltexteditor wieder, der Textcursor in der Porcedure TForm1.MenuItem4Click.

Und hier gibst Du nun das erste mal direkt Quelltext ein: tippe ein „Close;“ in die Zeile.

Starte nun das Programm erneut und klicke im Menü auf „Beenden“ ...

Abbildung 34: Die durch den Menüpunkt aufzurufende procedure bearbeiten

Abbildung 35: "close;" einfügen

Page 25: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

2.6 Daten speichernKlicke in der Komponentenpalette auf den Reiter „Dialogs“ und dann auf den „tSaveDialog“.

Anschließend klicke ins Programmfenster, so dass Du es in etwa so siehst:

Abbildung 36: Einen tSaveDialog einfügen

Abbildung 37: tSaveDialog im Programmfenster

Page 26: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke nun mit der rechten Maustaste auf das Hauptmenüsymbol und wähle „Menü-Editor“.

Abbildung 38: Dem tSaveDialog einem Namen geben

Abbildung 39: den Menü-Editor aufrufen

Page 27: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Klicke mit der rechten Maustaste auf den Menüeintrag mit dem Minuszeichen und wähle „Neuen Eintrag einfügen (davor)“.

Abbildung 40: Einen Menüpunkt hinzufügen

Page 28: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Ändere die Beschriftung (Caption) für den neuen Eintrag im Objektinspektor in „Memo speichern“, drücke Enter.

Abbildung 41: Die Beschriftung für den Menüpunkt ändern

Page 29: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Schließe den Menüeditor. Klicke im Programmfenster auf „Datei“ und dann auf „Memo speichern“.

Lazarus leitet Dich in den Quelltexteditor und legt eine procedure an, die abgearbeitet werden soll,wenn User im Programm den Menüpunkt „Memo speichern“ anklicken. Diese Procedure muss nunmit Quelltext gefüllt werden.

Tippe in die procedure einfach diese Zeile ein:

„if MySaveDialog.execute then MyMemo.Lines.SaveToFile(MySaveDialog.Filename);“

Abbildung 42: Menüpunkt "Memo speichern" mit Aktionen verbinden

Abbildung 43: Lazarus fügte eine procedure ein

Abbildung 44: Die procedure mit Quelltext versehen

Page 30: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Nun compiliere und starte das Programm. Gib einen Text in das Memo ein:

Klicke nun im Hauptmenü auf „Memo speichern“, dann sollte Dir der folgende Dialog angeboten werden:

Abbildung 45: Das Programm laufen lassen, Text einfügen

Abbildung 46: Der aufgerufene MySaveDialog

Page 31: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Speichere die Datei, z. B. unter dem Namen „Beispiel.txt“. Anschließend kannst Du die Datei mit einen Doppelklick im Windowsexplorer im Texteditor öffnen:

Das war einfach, oder? Nun vervollständigst Du noch das Programm um die Möglichkeit, Dateien auch einzulesen.

Füge einen tOpenDialog ein und gib ihm einen Namen im Objektinspektor:

Abbildung 48: Der Memotext im Texteditor

Abbildung 47: Den Memotext im Windowsexplorer aufrufen

Page 32: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Füge im Hauptmenü einen Eintrag zum Aufruf des MyOpenDialog ein (Maustastenklick rechts auf das MainMenu1-Icon, Menü-Editor starten):

Abbildung 49: Einen tOpenDialog einfügen

Abbildung 50: Den Namen des tOpenDialog ändern

Page 33: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Maustastenklick rechts auf „Memo speichern“ und „Neune Eintrag einfügen (davor)“ wählen:

Abbildung 51: Einen Menüpunkt zum Memo laden einfügen

Page 34: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Im Objektinspektor die Beschriftung (Caption) in „Memo laden“ ändern, den Menüeditor schließenund dann im Menü den Eintrag anklicken:

Abbildung 52: Eintrag einfügen

Abbildung 53: Beschriftung ändern

Abbildung 54: Aktion für Menüpunkt "Memo laden" einfügen

Page 35: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

In die bereitgestellte procedure gibst Du nun „if MyOpenDialog.execute then MyMemo.Lines.LoadFromFile(MyOpenDialog.Filename);“ ein, dann compilieren und starten.

Nun kannst Du die bereits gespeicherte Dateiwieder ins Memo einlesen.

Abbildung 55: Quelltext für das Programm eingeben

Abbildung 56: Programm starten

Abbildung 57: Im Programm den Memotext laden

Page 36: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

Abbildung 58: Der aufgerufene MyOpenDialog

Abbildung 59: Der eingelesene Memotext im Programm

Page 37: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3 Classes

3.1 TCustomerMemotype TCustomMemo = class(TCustomEdit)

class procedure WSRegisterClass; override;

Registers this component class with the current WidgetSet.

protected

procedure CreateParams(); override;

procedure InitializeWnd; override;

procedure FinalizeWnd; override;

function RealGetText; override; Returns the contents of Lines.Text

procedure RealSetText(); override; Replaces Lines.Text.

function GetCachedText(); override; Returns the cached Text property (FCaption).

function GetCaretPos; override;

procedure SetCaretPos(); override;

procedure SetLines();

procedure SetSelText(); override; The selected text in the edit box.

procedure SetWantReturns();

procedure SetWantTabs();

procedure SetWordWrap();

procedure SetScrollBars();

procedure Loaded; override;

procedure ControlKeyDown(); override;

Lets the Application handle an navigation key.

procedure CNChar(); message; Handler for a key pressed notification. CNChar is sent by the widget before it has handled the keypress itself.

protected

class function GetControlClassDefaultSize; override;

public

constructor Create(); override;

destructor Destroy; override;

procedure Append(); Appends a line to the text.

property Lines: TStrings; [rw] An array with one string for every line (paragraph) in the control.

property HorzScrollBar: TMemoScrollbar; [rw]

The horizontal scroll bar for this control.

Page 38: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

property VertScrollBar: TMemoScrollbar; [rw]

The vertical scroll bar for this control.

property ScrollBars: TScrollStyle; [rw] Adds vertical and/or horizontal scrollbars to the control.

property WantReturns: Boolean; [rw] Allows the user to insert Return characters (line breaks) into the text.

property WantTabs: Boolean; [rw] Allows to enter Tab characters into the text.

property WordWrap: Boolean; [rw] Allows long logical lines (paragraphs) to wrap into multiple display lines.

Page 39: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.2 tGraphicObject

Page 40: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.3 tListtype TList = class(TObject, IFPObserved)

public

constructor Create; Class to manage collections of pointers.

destructor Destroy; override; Destroys the list and releases the memory used to store the list elements.

procedure FPOAttachObserver(); Add an observer to the list of observers

procedure FPODetachObserver(); Remove an observer from the list of observers

procedure FPONotifyObservers(); Notify observers of changes in the list

procedure AddList(); Add all pointers from another list

function Add(); Adds a new pointer to the list.

procedure Clear; virtual; Clears the pointer list.

procedure Delete(); Removes a pointer from the list.

class procedure Error(); virtual; Raises an EListError exception.

procedure Exchange(); Exchanges two pointers in the list.

function Expand; Increases the capacity of the list if needed.

function Extract(); Remove the first occurrence of a pointer from the list.

function First; Returns the first non-nil pointer in the list.

function GetEnumerator; Create an IEnumerator instance

function IndexOf(); Returns the index of a given pointer.

procedure Insert(); Inserts a new pointer in the list at a given position.

function Last; Returns the last non-nil pointer in the list.

procedure Move(); Moves a pointer from one position in the list to another.

procedure Assign(); Copy the contents of other lists.

function Remove(); Removes a value from the list.

procedure Pack; Removes Nil pointers from the list and frees unused memory.

procedure Sort(); Sorts the pointers in the list.

property Capacity: Integer; [rw] Current capacity (i.e. number of pointers that can be stored) of the list.

property Count: Integer; [rw] Current number of pointers in the list.

property Items: Pointer; default; [rw]

Provides access to the pointers in the list.

property List: PPointerList; [r] Memory array where pointers are stored.

end;

Page 41: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.4 tMemotype TMemo = class(TCustomMemo)

published

property Align; Specifies the placement of the control inside its Parent.

property Alignment;

property Anchors; The set of anchor definitions for this control.

property BidiMode; Customization (of text controls) in bidirectional reading environments.

property BorderSpacing; Determines the inner and outer border spacing for this control.

property BorderStyle; Allows to show a border (line) around the control,

property CharCase;

property Color; The background color of the control.

property Constraints; The minimal and maximal Width and Height of this control.

property DragCursor; The cursor shape shown while the control is dragged.

property DragKind; The operation when the control is dragged - Drag or Dock.

property DragMode; Allows the user to drag the control.

property Enabled; Determines whether the control reacts on mouse or keyboard input.

property Font; The font to be used for text display in this control.

property HideSelection;

property Lines; An array with one string for every line (paragraph) in the control.

property MaxLength; The maximum length of the text; zero for unlimited.

property OnChange; Event handler for any change in text.

property OnClick; Notification handler for mouse clicks.

property OnContextPopup; Invoked when a context-sensitive pop-up menu is requested.

property OnDblClick; Event Handler for double mouse clicks.

Page 42: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

property OnDragDrop; This handler determines the action on an drop onto this control, in a drag-drop operation.

property OnDragOver; Event handler for a control being dragged over this control.

property OnEditingDone; Event handler when editing is done.

property OnEndDrag; Notification handler for the end of a draggingoperation.

property OnEnter; Handler for control receiving the focus.

property OnExit; Handler for control loosing the focus. This is agood place for checking the finished user input.

property OnKeyDown; Handler for keyboard key pressed.

property OnKeyPress; Handler for a character entered by the user.

property OnKeyUp; Handler for keyboard key released.

property OnMouseDown; Event handler for mouse button going down.

property OnMouseEnter; Event handler for mouse entering the area of the control.

property OnMouseLeave; Event handler for mouse leaving the area of the control.

property OnMouseMove; Event handler for mouse movement within the control.

property OnMouseUp; Event handler for mouse button going up.

property OnMouseWheel; Event handler for mouse wheel turned.

property OnMouseWheelDown; Notification handler for downward movement of mouse wheel.

property OnMouseWheelUp; Notification handler for upward movement ofmouse wheel.

property OnStartDrag; Event handler for the start of a dragging operation.

property OnUTF8KeyPress; Handler for a character entered by the user.

property ParentBidiMode; Allows to use the BiDiMode settings of Parent. Default is true.

property ParentColor; If true, the Color of the control will be the same as the one from the Parent. Default is true.

property ParentFont; If true, the Font of the control will be the same as the one from the Parent. Default is true.

property PopupMenu; A context-sensitive menu that pops up when the right mouse button is clicked over this

Page 43: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

control

property ParentShowHint; If true, the value of ShowHint for the control will be the same as the one from the Parent. Default is true.

property ReadOnly; Prevents the user from changing the text.

property ScrollBars; Adds vertical and/or horizontal scrollbars to the control.

property ShowHint; Enables the Hint display.

property TabOrder; Determines the sequence of controls, reachable when the user presses the Tab key.

property TabStop; Allows the user to navigate to this control, by pressing the Tab key.

property Visible; Allows to show or hide the control, and all of its children.

property WantReturns; Allows the user to insert Return characters (line breaks) into the text.

property WantTabs; Allows to enter Tab characters into the text.

property WordWrap; Allows long logical lines (paragraphs) to wrap into multiple display lines.

end;

Page 44: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.5 tObjecttype TObject = class

public

constructor Create; TObject Constructor

destructor Destroy; virtual; TObject destructor.

class function newinstance; virtual; Allocate memory on the heap for a new instance

procedure FreeInstance; virtual; Clean up instance and free the memory reserved for the instance.

function SafeCallException(); virtual;

Handle exception object

procedure DefaultHandler(); virtual; Default handler for integer message handlers.

procedure Free; Check for Nil and call destructor.

class function InitInstance(); Initialize a new class instance.

procedure CleanupInstance; Finalize the class instance.

class function ClassType; Return a "class of" pointer for the current class

class function ClassInfo; Return a pointer to the type information for this class.

class function ClassName; Return the current class name.

class function ClassNameIs(); Check whether the class name equals the given name.

class function ClassParent; Return the parent class.

class function InstanceSize; Return the size of an instance.

class function InheritsFrom(); Check whether class is an ancestor.

class function StringMessageTable; Return a pointer to the string message table.

class function MethodAddress(); Return the address of a method

class function MethodName(); Return the name of a method.

function FieldAddress(); Return the address of a field.

procedure AfterConstruction; virtual;

Method called after the constructor was called.

procedure BeforeDestruction; virtual;

Method called before the destructor is called.

procedure DefaultHandlerStr(); virtual;

Default handler for string messages.

procedure Dispatch(); virtual; Dispatch an integer message

procedure DispatchStr(); virtual; Dispatch a string message.

function GetInterface(); Return a reference to an interface

function GetInterfaceByStr(); Return an interface based on its GUID

function GetInterfaceWeak(); Get a reference to an interface, not increasing the

Page 45: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

reference count

class function GetInterfaceEntry(); Return the interface table entry by GUID

class function GetInterfaceEntryByStr();

Return the interface table entry by string

class function GetInterfaceTable; Return a pointer to the table of implemented interfaces fora class

class function UnitName; Unit name

function Equals(); virtual; Check if two objects are equal.

function GetHashCode; virtual; Return a hash code for the object

function ToString; virtual; Return a string representation for the object

end;

Page 46: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.6 tObjectListtype TObjectList = class(TList)

public

constructor Create(); Create a new object list.

function Add(); Add an object to the list.

function Extract(); Extract an object from the list.

function Remove(); Remove (and possibly free) an element from the list.

function IndexOf(); Search for an object in the list

function FindInstanceOf(); Search for an instance of a certain class

procedure Insert(); Insert an object in the list.

function First; Return the first non-nil object in the list

function Last; Return the last non-nil object in the list.

property OwnsObjects: Boolean; [rw] Should the list free elements when they are removed.

property Items: TObject; default; [rw] Indexed access to the elements of the list.

end;

Page 47: Lazarus – SchnelleinstiegLazarus – Schnelleinstieg Programmieren ist eine interessante, schöpferisch-kreative und sehr herausfordernde Aufgabe, kann sehr viel Spaß machen und

3.7 tStringList

type TStringList = class(TStrings)

public

destructor Destroy; override; Destroys the stringlist.

function Add(); override; Implements the TStrings.Add function.

procedure Clear; override; Implements the TStrings.Clear function.

procedure Delete(); override; Implements the TStrings.Delete function.

procedure Exchange(); override; Implements the TStrings.Exchange function.

function Find(); virtual; Locates the index for a given string in sorted lists.

function IndexOf(); override; Overrides the TStrings.IndexOf property.

procedure Insert(); override; Overrides the TStrings.Insert method.

procedure Sort; virtual; Sorts the strings in the list.

procedure CustomSort(); virtual; Sort the stringlist using a custom sort algorithm

property Duplicates: TDuplicates; [rw]

Describes the behaviour of a sorted list with respect to duplicate strings.

property Sorted: Boolean; [rw] Determines whether the list is sorted or not.

property CaseSensitive: Boolean; [rw] Indicates whether comparing strings happens in a case sensitive manner.

property OnChange: TNotifyEvent; [rw]

Event triggered after the list was modified.

property OnChanging: TNotifyEvent; [rw]

Event triggered when the list is about to be modified.

property OwnsObjects: Boolean; [rw] Determines whether the stringlist owns it's objects or not.

property SortStyle: TStringsSortStyle; [rw]

Sort style for strings

end;