Programmieren mit Prozeduren und Delphi-Komponenten

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Forschungszentrum caesar
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Programmierung 1 - Repetitorium
Einführung MySQL mit PHP
Marcus Haller & René Schulze
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
Delphi II - OOP IFB Fortbildung
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Ein Automatensimulator
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
AINF-Lehrgang PROGRAMMIEREN Martina GREILER Wolfgang KATOLNIG
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die objektbasierte Programmierung mit Delphi
Datenstrukturen Klaus Becker (2002).
Einführung in die Software-Entwicklung mit Delphi Teil 2
Prozeduren und Funktionen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Konzept einer Programmiersprache!
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Permanente Datenspeicherung
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Objectives Verstehen was unterDelegate verstanden wird
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Datentypen: integer, char, string, boolean
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Erste Schritte in DELPHI
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Zeichenketten in PASCAL
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Codebaumanalyse Was geschieht in der Methode Codebaum.decodiere, wenn als Parameter der Code 001 übergeben wird? Gib die Zeilennummern der durchlaufenen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Formulare in HTML.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
1 VeranstaltungThemaTeilnehmerBetreuer AINF-Lehrgang PROGRAMMIEREN Martina GREILER Wolfgang KATOLNIG Peter RENDL Helfried TUISEL Peter ZYCH Heinz STEGBAUER.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
(Syntax, Strings/Zahlen, Variablen, Arrays)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Delphi Chars und Strings
Objektorientierte (OO) Programmierung
Arbeiten mit dem Terminal
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
 Präsentation transkript:

Programmieren mit Prozeduren und Delphi-Komponenten Klaus Becker (2002)

Salve Caesar PYLZFOWBN, QCY BUVN CBL GYCHY AYBYCGMWBLCZN YHNTCZZYLN! VDOYH FDHVDU!

Verarbeitung von Zeichenketten Teil 1 Verarbeitung von Zeichenketten Prozedurkonzept

Caesar-Chiffrierung Klartextalphabet A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Geheimtextalphabet Schlüssel: 3 Klartext: Geheimtext: ASTERIX DVWHULA

Problembeschreibung Zielsetzung: Mit Hilfe des zu entwickelnden Programms soll der Benutzer kurze Texte mit der Caesar-Methode verschlüsseln und wieder entschlüsseln können. Anforderungen an das System: - Der Benutzer kann (kurze) Texte selbst eingeben. - Der Benutzer kann den Schlüssel (0..25) einstellen. - Das Programm bereitet den Text geeignet vor (enttfernt Leerzeichen; wandelt Umlaute um). - Der verschlüsselte Text wird angezeigt und kann auch wieder entschlüsselt werden. - ...

Benutzungsoberfläche PTitel: TPanel GBQuelltext: TGroupBox BEntschluesseln: TButton EQuelltext: TEdit GBSchluessel: TGroupBox ESchluessel: TEdit GBChiffre: TGroupBox EGeheimtext: TEdit GBGeheimtext: TGroupBox BEntschluesseln: TButton

Datenmodell / Datenverarbeitung type tSchluessel = 0..25; var Quelltext : string; // z. B.: 'ASTERIX' Geheimtext : string; // z. B.: 'DVWHULA' Schluessel : tSchluessel; // z. B.: 3 procedure verschluesseln erzeugt bei gegebenem Quelltext und Schlüssel den zugehörigen Geheimtext nach der Caesar-Methode (Voraussetzung: Der Quelltext besteht nur aus den Großbuchstaben A ... Z.) procedure entschluesseln erzeugt bei gegebenem Geheimtext und Schlüssel den zugehörigen Quelltext nach der Caesar-Methode

Exkurs: Zeichen Zeichen werden in Delphi / Pascal mit Hilfe des Datentyps char beschrieben. Die zulässigen Zeichen werden durch den ASCII-Code festgelegt. Code Zeichen 0 NUL ... 65 A 66 B ... 90 Z ... 97 a 98 b ... 122 z ... (De)Kodieroperationen: ord: char  {0; ...; 255} ord(´A´)  65 chr: {0; ...; 255}  char chr(65)  ´A´

Exkurs: Zeichenketten Zeichenketten werden in Delphi / Pascal mit Hilfe des Datentyps string beschrieben. Ein Delphi-String kann (je nach Compilereinstellung) max. 255 Zeichen enthalten. Ein String wird in Delphi / Pascal in Apostrophe eingeschlossen (Bsp.: 'Hallo!'). Auch ein leere String '' ohne Zeichen ist möglich. Im Programmtext darf ein String nur in einer Zeile stehen. Zugriff auf einzelne Zeichen: Auf einzelne Zeichen kann man über einen Index zugreifen. Quelltext := 'Hallo!'; c := Quelltext[1]; // c  'H' Länge einer Zeichenkette: Die Länge einer Zeichenkette bestimmt man mit der length-Funktion. Quelltext := 'Hallo!'; n := length(Quelltext); // n  6

Verschlüsselungsalgorithmus

Übungen – Aufgabe 1 Ergänzen Sie zunächst das Programm zur Caesar-Chiffrierung. Das Programm soll anschließend wie folgt verbessert werden: - Im Quelltext sollen alle Leerzeichen entfernt werden. - Im Quelltext sollen alle Kleinbuchstaben in Großbuchstaben umgewandelt werden. - Im Quelltext sollen alle Umlaute durch Vokalkombinationen ersetzt werden. Beispiel: Ich würde gerne dösen.  ICHWUERDEGERNEDOESEN Überlegen Sie sich zunächst, wie Sie die Benutzungsoberfläche ergänzen wollen. Entwickeln und implementieren Sie anschließend einen passenden Algorithmus zur Umwandlung des Quelltextes. Caesar0 – Grundprogramm Caesar1 – mit Textvorbereitung

Aufgabe 1 - Lösungsvorschlag Hilfstext := ''; for i := 1 to length(Quelltext) do begin c := Quelltext[i]; case c of 'A'..'Z': Hilfstext := Hilfstext + c; 'a'..'z': Hilfstext := Hilfstext + chr(ord(c)-32); 'ß': Hilfstext := Hilfstext + 'SS'; 'ä': Hilfstext := Hilfstext + 'AE'; 'ö': Hilfstext := Hilfstext + 'OE'; 'ü': Hilfstext := Hilfstext + 'UE'; 'Ä': Hilfstext := Hilfstext + 'AE'; 'Ö': Hilfstext := Hilfstext + 'OE'; 'Ü': Hilfstext := Hilfstext + 'UE'; end; end; Geheimtext := Hilfstext; Caesar1 – mit Textvorbereitung

Stringverarbeitung Zielsetzung: Es soll eine alternative Methode zur Vorbereitung des Quelltextes mit Hilfe von String-Operationen (Length, Pos, Delete, Insert) vorgestellt werden. Im Vordergrund steht hierbei die Wiederholung des Parameterkonzepts.

String-Verarbeitung function Length(S: string): integer; Beschreibung: Length gibt die Anzahl der im angegebenen String vorhandenen Zeichen zurück. Beispiel: Anzahl := Length('Delphi') // Anzahl  6 function Pos(Substr: string; S: string): integer; Beschreibung: Pos sucht in dem String S nach dem Teilstring Substr. Wird der Teilstring gefunden, gibt Pos den Integer-Index des ersten Zeichens von Substr in S zurück. Die Groß/Kleinschreibung wird von Pos nicht berücksichtigt. Ist Substr nicht vorhanden, wird der Wert 0 zurückgegeben. Beispiele: Position := Pos('hi', 'Delphibuch') // Position  5 Position := Pos('Hi', 'Delphibuch') // Position  5 Position := Pos('ihi', 'Delphibuch') // Position  0

String-Verarbeitung procedure Delete(var S: string; Index, Count: integer) Beschreibung: Delete entfernt, beginnend mit S[Index], Count Zeichen aus dem String S. Ist der Wert von Index größer als die Länge von S, werden keine Zeichen gelöscht. Werden mit Count mehr Zeichen angegeben, als beginnend bei S[Index] im String vorhanden sind, wird der Rest des Strings gelöscht. Beispiel: {Wort: 'Delphibuch'} Delete(Wort, 4, 3); {Wort: 'Delbuch'} procedure Insert(Source: string; var S: string; i: integer) Beschreibung: Insert fügt Source in S an der Position S[i] ein. Beispiel: {Wort: 'Delbuch'} Insert('phi', Wort, 4); {Wort: 'Delphibuch'}

Parameter procedure Delete(var S: string; Index, Count: integer); Beispiel: {Z: ['Baumschule']} Delete(Z, 5, 6) {Z: ['Baum']} Delete Z var S: string Import/Export-Situation 5 Index: integer Import-Situation 6 Count: integer Import-Situation

Parameterübergabemechanismen {Z: ['Baumschule']} Delete(Z, 5, 6) Delete Adresse Z: ['Baumschule'] [ ]:S Referenzbildung Wert 5 [5]:Index Wertübergabe Wert 6 [6]:Count Wertübergabe Delete Z: ['Baum'] [ ]:S 5 [ ]:Index 6 [ ]:Count {Z: ['Baum']}

Parameterübergabemechanismen Prozeduraufruf: Delete(Z, 5, 6) aktuelle Parameter Übergabesituation: Delete Referenzparameter Adresse Z: ['Baumschule'] [ ]:S Referenzbildung Wert 5 [5]:Index Wertübergabe Wert 6 [6]:Count Wertübergabe Werteparameter Übergabemechanismen: call-by-value: Der Wert des aktuellen Parameters wird an den Werteparameter übergeben. call-by-reference: Es wird eine Referenz zwischen dem aktuellen Parameter und dem Referenzparameter erzeugt.

Datenaustauschsituationen Daten-Import: Der aktuelle Parameter kann ein Term sein. Der Wert des Terms wird durch call-by-value an den Werteparameter übergeben. P t x Daten-Export: Der aktuelle Parameter muss eine Variable sein. Der Referenzparameter wird durch call-by-reference an den aktuellen Parameter gebunden. P y var x Daten-Transport: Der aktuelle Parameter muss eine Variable sein. Der Referenzparameter wird durch call-by-reference an den aktuellen Parameter gebunden. P y var x

Übungen – Aufgabe 2 Erstellen Sie eine Prozedur, mit der man innerhalb einer Zeichenkette ein Zeichen durch eine neue Zeichenkette ersetzen kann. Bsp.: Ersetze `ä` durch `AE` innerhalb von `Juha Vätäänen‘ Spezifizieren Sie zunächst den Datenaustausch / die Parameter der Prozedur. Erstellen Sie dann einen Algorithmus mit Hilfe der Stringverarbeitungs-operationen (Delete, Insert, ...). Gehen Sie davon aus, dass das zu ersetzende Zeichen nicht in der neuen Zeichenkette vorkommt. Welche Schwierigkeiten könnten Sich andernfalls ergeben?

Übungen – Aufgabe 3 Die Prozeduren zum Ver- und Entschlüsseln von Texten sollen so modifiziert werden, dass der Datenaustausch transparent wird. Spezifizieren Sie zunächst den Datenaustausch (Black-box-Diagramm). Ändern Sie anschließend die Prozedurdeklarationen und die Prozeduraufrufe geeignet ab.

Aufgabe 2 - Lösungsvorschlag Datenaustausch: Ersetze 'ß' c: char 'SS' neu: string Hilf var Text: string Deklaration: procedure Ersetze(c: char; neu: string; var Text: string); Verhaltensbeschreibung: Die Prozedur „Ersetze“ ersetzt innerhalb der Zeichenkette „Text“ das Zeichen „c“ durch die neue Zeichenkette „neu“. Beispiel: {hilf: ['Juha Vätäänen']} Ersetze('ä', 'AE', hilf); {hilf: ['Juha VAEtAEAEnen']}

Aufgabe 2 - Lösungsvorschlag Implementierung 1: procedure Ersetze(c: char; neu: string; var Text: string); var stelle: integer; begin stelle := pos(c, Text); while stelle > 0 do Delete(Text, stelle, length(c)); Insert(neu, Text, stelle); end; Bemerkungen: Der Algorithmus ist ausbaufähig: c: char  s: string. Er ist allerdings nur korrekt, falls c nicht in neu vorkommt.

Aufgabe 2 - Lösungsvorschlag Implementierung 2: procedure Ersetze(c: char; neu: string; var Text: string); var i: integer; Hilfstext: string; begin Hilfstext := ''; for i := 1 to length(Text) do if Text[i] = c then Hilfstext := Hilfstext + neu else Hilfstext := Hilfstext + Text[i]; Text := Hilfstext; end; Bemerkungen: Der Algorithmus ist effizienter als der in Implementierung 1.

Aufgabe 3 - Lösungsvorschlag Datenaustausch: verschluesseln Quelltext QText: string Schluessel S: integer Geheimtext var GText: string entschluesseln Quelltext var QText: string Schluessel S: integer Geheimtext GText: string Caesar1 – mit Parameterübergabe

Schnittstellen Ersetze c: char neu: string Text: string Signatur: procedure Ersetze ( char; string; string) Verhaltensbeschreibung: Die Prozedur „Ersetze“ ersetzt innerhalb der Zeichenkette „Text“ das Zeichen „c“ durch die neue Zeichenkette „neu“. Für die Benutzung einer Prozedur muss man nur die Signatur und das Verhalten der Prozedur kennen. Diese legen die sog. Schnittstelle der Prozedur fest.

Teil 2 Komponenten

Laufzeitfehler Problem: Bei der Eingabe des Schlüssels muss der Benutzer darauf achten, eine ganze Zahl einzutippen. Ansonsten kommt es bei der Ereignisbearbeitung zu einem Laufzeitfehler. Ziel: Vermeidung solcher Laufzeitfehler

TSpinEdit-Komponente SpEdSchluessel: TSpinEdit Attribute MinValue : 0 MaxValue : 25 Value : 3 ... Ereignisse OnChange: SpEdSchluesselChange Methoden Caesar3 – Grundprogramm mit ... procedure TForm1.SpEdSchluesselChange(Sender: TObject); begin Schluessel := SpEdSchluessel.Value; end;

Alternative: try-except-Anweisung Syntax: try [Anweisung] except [Fehleranweisung] end Semantik: Delphi versucht zunächst, die Anweisung durchzuführen. Führt dies zu einem Fehler, so bricht Delphi diese Ausführung ab und führt stattdessen die Fehleranweisung durch. Voraussetzung: <Tools> <Debugger-Optionen> <Sprach-Exceptions> Bei Delphi-Exceptions stoppen [] Beispiel: try Schluessel := StrToInt(ESchluessel.Text); except Schluessel := 0; end; Caesar2 – Grundprogramm mit ...

TMemo-Komponente Problem: Bisher bestand die Eingabe nur aus einer Zeichenkettenzeile. Zur Darstellung und Bearbeitung längerer Texte wäre es zweckmäßig, ein mehrzeiliges Eingabefeld zu benutzen.

Klasse TMemo TMemo ... property Lines: TStrings; Attribute property Lines: TStrings; property ScrollBars: TScrollStyle; ... Ereignisse Methoden type TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth)

Klasse TStrings TStrings ... property Strings[Index: Integer]: string; Attribute property Strings[Index: Integer]: string; property Count: Integer; ... Ereignisse Methoden procedure Add(S: string); procedure Clear; procedure Delete(Index: Integer); procedure Insert(Index: Integer; S: string); procedure LoadFromFile(FileName: string); procedure SaveToFile(FileName: string);

Stringlisten 'Hallo Inger' 1 'Wie geht es Dir?' 2 'Ich hoffe gut.' 3 'Hallo Inger' 1 'Wie geht es Dir?' 2 'Ich hoffe gut.' 3 'Viele Grüße von ...' var L: TStrings; i: integer; ... L.Strings[0] := L.Strings[0] + '!'; for i := 0 to L.Count-1 do L.Strings[i] := 'Hallo';

Verarbeitung von Stringlisten 'Hallo Inger' 1 'Wie geht es Dir?' 2 'Ich hoffe gut.' 3 'Viele Grüße von ...' procedure Add(S: string); - fügt die Zeichenkette S am Ende der Liste an procedure Clear; - löscht die gesamte Liste procedure Delete(Index: Integer); - löscht nur den Eintrag mit dem übegebenen Index procedure Insert(Index: Integer; S: string); - fügt die Zeichenkette S an die durch Index beschriebenen Zeile in der Liste ein procedure LoadFromFile(FileName: string); procedure SaveToFile(FileName: string); - lädt eine Liste aus einer Datei / speichert eine Liste in eine Datei

Verarbeitung von Memo-Komponenten MQuelltext, MGeheimText: TMemo; ... begin MGeheimtext.Lines.Clear; for i := 0 to MQuelltext.Lines.Count-1 do Quelltext := MQuelltext.Lines.Strings[i]; verschluesseln(Quelltext, Schluessel, Geheimtext); MGeheimtext.Lines.Add(Geheimtext); end; Caesar4 – Texteingabe über Memofeld

Laden und Speichern Problem: Quell- und Geheimtext sollen aus einer Datei geladen bzw. in einer Datei gespeichert werden können.

Komponente: TOpenDialog Attribute property FileName: TFileName; ... Ereignisse Methoden function Execute: Boolean; Execute öffnet das Dialogfeld zur Auswahl von Dateien und gibt True zurück, wenn der Benutzer eine Datei ausgewählt und auf OK geklickt hat. Klickt der Benutzer auf Abbrechen, liefert Execute False zurück.

Memo-Stringliste laden TOpenDialog Attribute property FileName: TFileName; ... Ereignisse Methoden function Execute: Boolean; procedure TForm1.BLadenQClick(Sender: TObject); begin if OpenDialog1.Execute then MQuelltext.Lines.LoadFromFile(OpenDialog1.Filename); end; Caesar4 – mit Laden und Speichern

Übungen – Aufgabe 4 Bauen Sie das Grundprogramm zur Caesar-Verschlüsselung schrittweise aus: - Schlüsseleingabe über eine SpinEdit-Komponente - Textein- und Ausgabe über Memofelder - Vorbereitung des eingegebenen Textes (Sonderzeichen; Umlaute) - Laden und Speichern von Texten. Caesar4 – mit Laden und Speichern

Übungen – Aufgabe 5 Um einen mit der Caesar-Methode kodierten Text zu entschlüsseln, kann man auch wie folgt vorgehen: Man ermittelt, welcher Buchstabe im Geheimtext am häufigsten vorkommt. Dieser Buchstabe ist mit großer Wahrscheinlichkeit die Kodierung von ‚E‘. Erweitern Sie das Caesar-Programm um die Möglichkeit, im Geheimtext die Buchstabenhäufigkeiten zu bestimmen. Caesar5 – mit Statistik

Arbeiten mit Komponenten Teil 3 Zusammenfassung: Arbeiten mit Komponenten

Delphi-Hilfe TLabel Hierarchie Eigenschaften Methoden Ereignisse TLabel ist ein nicht fensterorientiertes Steuerelement, mit dem Text in einem Formular angezeigt werden kann. Sie können diesen Text als Beschriftung für ein anderes Steuerelement verwenden und den Fokus an dieses Steuerelement übergeben, sobald der Benutzer ein im Text enthaltenes Tastenkürzel eingibt. Unit stdctrls Beschreibung Da die Komponente TLabel kein Nachkomme von TWinControl ist, besitzt sie kein eigenes Fenster und kann keine direkten Eingaben von der Tastatur empfangen. Wenn Sie in einem Formular ein Objekt benötigen, das nicht nur aufgrund der Eingabe eines Tastenkürzels den Fokus an ein anderes Steuerelement übergibt, sondern selbst auf Tastatureingaben antworten kann, müssen Sie TStaticText verwenden. Soll der Benutzer in einem Textanzeigeobjekt einen Bildlauf durchführen und Änderungen vornehmen können, verwenden Sie eine TEdit-Komponente.

Struktur von Komponenten erbt von ... TLabel Attribute ... Ereignisse Methoden

Komponentenbeschreibung TLabel Attribute property Caption: TCaption // type TCaption = string; ... Ereignisse property OnClick: TNotifyEvent Methoden procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer)

Schnittstellenbeschreibung TControl.SetBounds Die Methode SetBounds setzt die Eigenschaften Left, Top, Width und Height gleichzeitig. procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; Beschreibung Mit der Methode SetBounds können Sie alle Eigenschaften des umgebenden Rechtecks der Komponente gleichzeitig ändern. Sie können dazu auch die Eigenschaften Left, Top, Width und Height einzeln setzen. Jedoch ist durch SetBounds sichergestellt, daß das Steuerelement nicht nach jeder Wertzuweisung neu gezeichnet werden muß. Die Werte für die Eigenschaften Left, Top, Width und Height werden in den Parametern ALeft, ATop, AWidth und AHeight übergeben. Durch den Aufruf von SetBounds erhalten die Eigenschaften Left, Top, Width und Height nicht notwendigerweise die angegebenen Werte. Die neuen Werte können vor der Zuweisung durch AutoSize oder Constraints eingeschränkt und durch eine Ereignisbehandlungsroutine für OnCanResize (oder OnConstrainedResize) angepaßt werden. Nachdem die Eigenschaften Left, Top, Width und Height des Steuerelements geändert wurden, generiert SetBounds ein OnResize-Ereignis.