Wolf-Gert Matthäus Grundkurs Programmieren mit Delphi
Wolf-Gert Matthäus
Grundkurs Programmieren mit Delphi Systemat...
247 downloads
1393 Views
5MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Wolf-Gert Matthäus Grundkurs Programmieren mit Delphi
Wolf-Gert Matthäus
Grundkurs Programmieren mit Delphi Systematisch programmieren lernen mit Turbo Delphi 2006, Delphi 7 und vielen anderen Delphi-Versionen 3., neu bearbeitete Auflage Mit 303 Abbildungen STUDIUM
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.
Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor übernimmt infolgedessen keine Verantwortung und wird keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Höchste inhaltliche und technische Qualität unserer Produkte ist unser Ziel. Bei der Produktion und Auslieferung unserer Bücher wollen wir die Umwelt schonen: Dieses Buch ist auf säurefreiem und chlorfrei gebleichtem Papier gedruckt. Die Einschweißfolie besteht aus Polyäthylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen.
1. Auflage 2004 2. Auflage 2006 3., neu bearbeitete Auflage 2010 Alle Rechte vorbehalten © Vieweg +Teubner | GWV Fachverlage GmbH, Wiesbaden 2010 Lektorat: Christel Roß | Walburga Himmel Vieweg+Teubner ist Teil der Fachverlagsgruppe Springer Science+Business Media. www.viewegteubner.de Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: KünkelLopka Medienentwicklung, Heidelberg Druck und buchbinderische Verarbeitung: STRAUSS GMBH, Mörlenbach Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Printed in Germany ISBN 978-3-8348-0892-9
Vorwort
1
ȱ ȱ ȱ ȱ ȱ ȱ £ȱ DZȱ §ȱ ǻȱ ȱ ǰȱȱȱȱȱȱǼȱȱȱȱȱȱȱ https://downloads.embarcadero.com/free/delphi ȱȱȬȱȱȱȱȱȱȱȱȱȬ ȱŘŖŖŜȱ£ȱȱ ǯȱȱ ȱȱȱȱȱǰȱ§ȱȱȱ ǰȱȱ ȱȱȱȱ£ȱȱȱȱȱ£ȱ ǯȱȱȱ ȱ ȱȮȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱȮȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ ȱ Řȱ ȱ ŗŚȱ ȱ ûȱ ȱ ȱ£ ȱ ȱ ǰȱ ȱ ûȱ ȱ ãȱ ȱ ȱ ŗȱ ȱ ûȱ ȱ ȱ £ãȬ ǰȱȱȱȱȱȱȱȱȱȱ ȱȱȱŘŖŖŜȱǯȱȱ §ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȬȱȱŝǰȱȱŞǰȱȱŘŖŖśȱȱȱŘŖŖşȱȱȱ£ȱ£ǰȱȱ ȱȱǰȱȱ ȱȱȬȱȱȱ£ȱȱȬ ȱ ǰȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱȱ ǯȱȱ ȱȱȱȱȱȱ£ȱûǰȱȱȱȬ ȱ£ȱǰȱȱȱȱȱȱȱȱȬŝȬȬ ȱȱǯȱȱ ǰȱȱȱŘŖŖşȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ!Ȭ ȱ§ȱ ȱ
Aus dem Vorwort zur zweiten Auflage ȱȱ ȱȱȱȱǰȱȱȱȱȱȱȬ ȱȱǰȱȱ£ ǰȱ ȱ ȱȱȱȬ ȱ£ǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱ£ȱȬ ȱ ȱŞȱ£ȱȱ ȱȱ Ȭȱȱǯȱȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ
ȱȱȱ ȱ ȱ§ȱȱûȱǰȱ ȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ãǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱãǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ¢ȱ ȱ ȱŘŖŖśȱ£ȱȱȱȱȬȱ£ȱ ȱǯȱ ȱȱ§đȱûȱȱȱȬû£ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ǯ ȬȬǯȱ ȱ ȱ Ȭ ȱ ȱ Leser-Service ȱ ȱ ȱ Ȭȱ £ȱ ȱ Ȭ ȱȱǰȱȱȱ ȱûȱȱȱ ȱȬ ȱȱȱŝȱȱȱûȱȱȱȱȱŞȦŘŖŖśǯȱȱȱȱȱ
Aus dem Vorwort zur ersten Auflage ǮȱȬȱûȱȱǯȬȃǯȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ Şǯȱ ȱ ǯȱ ãȱ ȱ ȱȱ ǰȱ ȱ ȱ £ȱ ǰȱ ȱ Ȭ ǰȱǰȱ¢ȱȱ §ȱȱǯȱȱ ȱ Şȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ ȱ ǯȬȬ ǯȱȱȱȱ ȱ§ȱȱȱȱȱȱǯȱ ȱ £ȱ ȱ đȱ ȱ ȱ §ȱ Ȭ ȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ǯȱ £ȱ ȱ ǯȱ ȱ ȱȱǰȱȱȱȱȱȱȱȱȬȬ ǰȱȱȱȱ ȱȱȱ£§ȱȱȱ ȱ£ȱȱ£ȱ ȱûǯȱȱ ȱ ȱȱȱȱȱ ȱûȱȱ ûȱȬ §ǰȱȱûȱȱ§ȱȱ§ȱȱȱ ȱǯȱȱ ȱ ȱ ŘŝŖȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱȱȱȱȱȱûûȱ ȱǯȱȱ ȱ ȱ ȱ ûȱ ȱ ȱ Ȭȱ ȱ ǰȱ ȱ ȱ ȱȱȱ ȱǰȱȱȱ§ȱȬȱ ȱ ǯȱȱȱ ȱǰȱ ȱȱȱȱȱȱȱ §ȱȬȱȱȱŞȱ ǯȱȱ ȱȱȱ£ȱȱȱȱȱȱȱȬ ǯȱ ȱ ȱ ȱȱ £ȱ ȱ ȱ ȱ ȱ £ȱ ȱȱ£ȱȱȱǯȱȱ
Inhaltsverzeichnis
1
ȱ
ŗȱ
ȱ£§ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗȱ
ŗǯŗȱ ȱȱ DZȱȱȱŘŖŖŜǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗȱ ŗǯŘȱ ȱȱ ȱȱȱȱŘŖŖŜȱȱȱŝ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śȱ ŗǯŘǯŗȱȱȱ ȱ ȱȱŘŖŖŜ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śȱ ŗǯŘǯŘȱȱȱ ȱ ȱŝȱȱ§ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Şȱ ŗǯřȱ ȱȱ ȱȱȱŞǰȱȱŘŖŖśȱȱȱŘŖŖş ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şȱ ŗǯŚȱ ȱȱ Ȭȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗȱ ŗǯśȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘȱ ŗǯśǯŗȱȱȱ ȱ ȱȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘȱ ŗǯśǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗśȱ ŗǯśǯřȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝȱ ŗǯŜȱ ȱȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşȱ ŗǯŜǯŗȱȱȱ ȱ ȱȱȱȱŘŖŖŜȱȱȱŞȦŘŖŖśȦŘŖŖşǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşȱ ŗǯŜǯŘȱȱȱ ȱ ȱȱ§ȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖȱ ŗǯŜǯřȱȱȱ ȱ ȱ ȱ£ ǯȱ§ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖȱ ŗǯŝȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗȱ ŗǯŝǯŗȱȱȱ ȱ ȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗȱ ŗǯŝǯŘȱȱȱ ȱ ǰȱǰȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘȱ ŗǯŝǯřȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řřȱ ȱ ȱ
Řȱ
ȱǰȱǰȱ£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝȱ
Řǯŗȱ ȱȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝȱ Řǯŗǯŗȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝȱ ŘǯŗǯŘȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řşȱ Řǯŗǯřȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ£ȱ
ŘǯŘȱ ȱȱ ȱ£ȱ£ȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘȱ ŘǯŘǯŗȱȱ
ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řřȱ
ŘǯŘǯŘȱȱȱ ȱ ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řśȱ ŘǯŘǯřȱȱȱ ȱ ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŜȱ ŘǯŘǯŚȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŜȱ ŘǯŘǯśȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŝȱ ŘǯŘǯŜȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŝȱ ŘǯŘǯŝȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŝȱ Řǯřȱ ȱȱ ȱ£ȱ£ȱȬȬ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŞȱ Řǯřǯŗȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŞȱ ŘǯřǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Śŗȱ Řǯřǯřȱȱȱ ȱ Ȭǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŚŘȱ ȱ
řȱ
ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Śŝȱ
řǯŗȱ ȱȱ ȱȱǻListBoxǼǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŚŞȱ řǯŘȱ ȱȱ ȱ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śŖȱ řǯřȱ ȱȱ ȱȱǻRadioGroupǼǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śŘȱ řǯŚȱ ȱȱ ȱûȱǻMainMenuǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śŚȱ ȱ
Śȱ
ȱ£DZȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śşȱ
Śǯŗȱ ȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śşȱ ŚǯŘȱ ȱȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ śşȱ ŚǯŘǯŗȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŜŖȱ ŚǯŘǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŜŚȱ Śǯřȱ ȱȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŜŜȱ Śǯřǯŗȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŜŜȱ ŚǯřǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Ŝŝȱ ŚǯŚȱ ȱȱ ȱȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝřȱ
£ȱ
ȱ
Śǯśȱ ȱȱ ȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝŜȱ Śǯśǯŗȱȱȱ ȱ ¢ȱEnabled ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝŝȱ ŚǯśǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝŞȱ Śǯśǯřȱȱȱ ȱ ȱûȬ§ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝşȱ ŚǯŜȱ ȱȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝşȱ ŚǯŜǯŗȱȱȱ ȱ ¢ȱVisible ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŝşȱ ŚǯŜǯŘȱȱȱ ȱ ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŞŖȱ Śǯŝȱ ȱȱ ȱûȱȱ¢ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŞŖȱ Śǯŝǯŗȱȱȱ ȱ ¢Ȭȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Şŗȱ ŚǯŝǯŘȱȱȱ ȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Şřȱ Śǯŝǯřȱȱȱ ȱ ȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŞŚȱ ŚǯŝǯŚȱȱȱ ȱ ȱûȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Şśȱ Śǯŝǯśȱȱȱ ȱ Ȭȱȱȱ£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŞŜȱ ŚǯŝǯŜȱȱȱ ȱ ȱȱȱȱȱȱȱȱ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŞŜȱ Śǯŝǯŝȱȱȱ ȱ ȱȱû£ȱ¢ȱItems[...]ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şŖȱ ȱ ȱ
śȱ
ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şřȱ
śǯŗȱ ȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şŚȱ śǯŗǯŗȱȱȱ ȱ ȱȦȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şŚȱ śǯŗǯŘȱȱȱ ȱ ȱȱǵǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ şŞȱ śǯŗǯřȱȱȱ ȱ ȬȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖŖȱ śǯŗǯŚȱȱȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖŗȱ śǯŘȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖŚȱ śǯŘǯŗȱȱȱ ȱ ȱȬ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖŚȱ śǯŘǯŘȱȱȱ ȱ Ȭȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖŜȱ ȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ£ȱ
Ŝȱ
ȱȱȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖşȱ
Ŝǯŗȱ ȱȱ DZȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖşȱ Ŝǯŗǯŗȱȱȱ ȱ ȱãȱȱ £ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŖşȱ ŜǯŗǯŘȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŗȱ ŜǯŘȱ ȱȱ ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŘȱ ŜǯŘǯŗȱȱȱ ȱ £ȱȱȬ¢ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŘȱ ŜǯŘǯŘȱȱȱ ȱ ȱ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŚȱ Ŝǯřȱ ȱȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŜȱ Ŝǯřǯŗȱȱȱ ȱ ȱȱȬ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŜȱ ŜǯřǯŘȱȱȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗŝȱ Ŝǯřǯřȱȱȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŗşȱ ŜǯŚȱ ȱȱ ȱûȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘŖȱ Ŝǯśȱ ȱȱ Ȭ Ȭ ûDZȱȱȱȱȱ £ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘŘȱ Ŝǯśǯŗȱȱȱ ȱ £ȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘŘȱ ŜǯśǯŘȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘŚȱ ŜǯŜȱ ȱȱ ȱ£¢Ȭ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘŝȱ Ŝǯŝȱ ȱȱ §Ȭ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŘşȱ ŜǯŞȱ ȱȱ ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗřŘȱ ȱ ȱ
ŝȱ
ȱ £ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗřśȱ
ŝǯŗȱ ȱȱȱ ȱȱIntToStrȱȱStrToInt ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗřŜȱ ŝǯŗǯŗȱȱȱ ȱ ££ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗřŜȱ ŝǯŗǯŘȱȱȱ ȱ ££ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗřŝȱ ŝǯŗǯřȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚŖȱ ŝǯŘȱ ȱȱ §£ȱûȱ£ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚŚȱ ŝǯŘǯŗȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚŚȱ ŝǯŘǯŘȱȱȱ ȱ ȱȱ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚśȱ
£ȱ
ȱ
ŝǯřȱ ȱȱ ȱȱ££ȱ§£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚŝȱ ŝǯřǯŗȱȱȱ ȱ ȱȱ¢ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚŝȱ ŝǯřǯŘȱȱȱ ȱ IntegerȬ¢ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚşȱ ŝǯŚȱ ȱȱ ȱȱ££ȱ§£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚşȱ ŝǯŚǯŗȱȱȱ ȱ §£ǰȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŚşȱ ŝǯŚǯŘȱȱȱ ȱ ãȱȱt ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗśŖȱ ŝǯŚǯřȱȱȱ ȱ £ȱ£ǰȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗśŗȱ ŝǯŚǯŚȱȱȱ ȱ Ȭȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗśŚȱ ŝǯŚǯśȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗśŝȱ ȱ ȱ
Şȱ
ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŗȱ
Şǯŗȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŗȱ ŞǯŘȱ ȱȱ ȱ ȱ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŘȱ ŞǯŘǯŗȱȱȱ ȱ ȱ ¢ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŘȱ ŞǯŘǯŘȱȱȱ ȱ £ȱ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŚȱ ŞǯŘǯřȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜśȱ ŞǯŘǯŚȱȱȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜśȱ ŞǯŘǯśȱȱȱ ȱ § ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŜȱ ŞǯŘǯŜȱȱȱ ȱ § ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŝȱ ŞǯŘǯŝȱȱȱ ȱ Ȭ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŝȱ ŞǯŘǯŞȱȱȱ ȱ Ȭ§ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŞȱ ŞǯŘǯşȱȱȱ ȱ § ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜŞȱ ŞǯŘǯŗŖȱ ȱ ¡ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜşȱ ŞǯŘǯŗŗȱ ȱ ã ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŜşȱ ŞǯŘǯŗŘȱ ȱ £ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝŖȱ Şǯřȱ ȱȱ ¡ȱ§ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝŘȱ ŞǯŚȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝŚȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ£ȱ
Şǯśȱ ȱȱ ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝŝȱ Şǯśǯŗȱȱȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝŝȱ ŞǯśǯŘȱȱȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŝşȱ Şǯśǯřȱȱȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŞŗȱ ŞǯŜȱ ȱȱ ȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗŞśȱ ȱ ȱ
şȱ
ȱ§ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşŗȱ
şǯŗȱ ȱȱ £§ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşŗȱ şǯŘȱ ȱȱ ¡Ȭǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşŜȱ şǯŘǯŗȱȱȱ ȱ ãđȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşŜȱ şǯŘǯŘȱȱȱ ȱ ȱȱãđȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşŝȱ şǯřȱ ȱȱ ȱûȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŗşşȱ ȱ ȱ
ŗŖȱȱ§£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖŗȱ ŗŖǯŗȱ ȱȱ §£ȱûȱ ȱǻ¢ȱBooleanǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖŗȱ ŗŖǯŗǯŗȱ ȱ ȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖŗȱ ŗŖǯŗǯŘȱ ȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖřȱ ŗŖǯŘȱ ȱȱ §£ȱûȱ£ȱȱǻ¢ȱCharǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŖŝȱ ŗŖǯřȱ ȱȱ §£ȱûȱȱǻ¢ȱStringǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗŗȱ ȱ ȱ ȱ
ŗŗȱȱȱȱǻǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗřȱ ŗŗǯŗȱ ȱȱ StringȬȱȱȬ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗřȱ ŗŗǯŗǯŗȱ ȱ ȱStringȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗřȱ ŗŗǯŗǯŘȱ ȱ ȱStringȬ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗśȱ ŗŗǯŘȱ ȱȱ ǰȱ§ȱȱãȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗśȱ ŗŗǯŘǯŗȱ ȱ ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗśȱ
£ȱ
ȱ
ŗŗǯŘǯŘȱ ȱ §ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŗŝȱ ŗŗǯŘǯřȱ ȱ ãȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘŖȱ ŗŗǯřȱ ȱȱ £ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘřȱ ŗŗǯřǯŗȱ ȱ ǰȱãȱȱûǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘŚȱ ŗŗǯřǯŘȱ ȱ ȱȱ£ ȱString ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘŜȱ ŗŗǯŚȱ ȱȱ Ȭ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘşȱ ŗŗǯśȱ ȱȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘşȱ ŗŗǯśǯŗȱ ȱ ¡ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŘşȱ ŗŗǯśǯŘȱ ȱ ¡ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řřŗȱ ŗŗǯśǯřȱ ȱ £ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘřŚȱ ŗŗǯŜȱ ȱȱ £ȱȱȱ£ȱ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘřŞȱ ŗŗǯŝȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řřşȱ ŗŗǯŝǯŗȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řřşȱ ŗŗǯŝǯŘȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚŖȱ ȱ ȱ ȱ
ŗŘȱ§£ȱûȱ£ûǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚřȱ ŗŘǯŗȱ ȱȱ ¢ȱSingleǰȱDoubleǰȱExtended ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚřȱ ŗŘǯŗǯŗȱ ȱ £ȱȱȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚřȱ ŗŘǯŗǯŘȱ ȱ ¢ȱSingle ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚŚȱ ŗŘǯŗǯřȱ ȱ ¢ȱDouble ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚŚȱ ŗŘǯŗǯŚȱ ȱ ¢ȱExtended ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚśȱ ŗŘǯŘȱ ȱȱ ȱȱǵ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚśȱ ŗŘǯřȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚśȱ ŗŘǯřǯŗȱ ȱ £ȱStr ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚŜȱ ŗŘǯřǯŘȱ ȱ ȱȱȱȱȱȬ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŚŞȱ ŗŘǯřǯřȱ ȱ ȱȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘśŖȱ ŗŘǯŚȱ ȱȱ ȱȱ£û ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řśřȱ ŗŘǯŚǯŗȱ ȱ £ȱVal ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řśřȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ£ȱ
ŗŘǯŚǯŘȱ ȱ ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řśśȱ ŗŘǯŚǯřȱ ȱ £û£ȱŗDZȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘśŜȱ ŗŘǯŚǯŚȱ ȱ £û£ȱŘDZȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řśŝȱ ŗŘǯśȱ ȱȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŜŘȱ ŗŘǯśǯŗȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŜŘȱ ŗŘǯśǯŘȱ ȱ ȱ Ȭ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŜŚȱ ȱ ȱ
ŗřȱ£ȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŜşȱ ŗřǯŗȱ ȱȱ §£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŜşȱ ŗřǯŘȱ ȱȱ £ȱȱȱȱȬǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŝŖȱ ŗřǯŘǯŗȱ ȱ ȱȱ ȱ£ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŝŖȱ ŗřǯŘǯŘȱ ȱ Ȭȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝŗȱ ŗřǯŘǯřȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŝŚȱ ŗřǯřȱ ȱȱ £ȱȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝŝȱ ŗřǯřǯŗȱ ȱ DZȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝŝȱ ŗřǯřǯŘȱ ȱ ȱȱȱDZȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŝŞȱ ŗřǯřǯřȱ ȱ ȱȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řŝşȱ ŗřǯřǯŚȱ ȱ £ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞŗȱ ŗřǯřǯśȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞřȱ ŗřǯřǯŜȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞŚȱ ŗřǯŚȱ ȱȱ ȱȱȬ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞŜȱ ŗřǯŚǯŗȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞŜȱ ŗřǯŚǯŘȱ ȱ ȱȱ£§ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘŞşȱ ŗřǯŚǯřȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘşŖȱ ŗřǯŚǯŚȱ ȱ £ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řşŗȱ ŗřǯŚǯśȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ Řşśȱ ŗřǯśȱ ȱȱ ȱ£ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ ŘşŜȱ ȱ
ȱ
£ȱ
ȱ
ŗŚȱȱDZȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŗȱ ŗŚǯŗȱ ȱȱ ȱȬȱûȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŘȱ ŗŚǯŘȱ ȱȱ Ȭȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŚȱ ŗŚǯŘǯŗȱ ȱ ȬȱȱȱȱȱǻStringǼǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖśȱ ŗŚǯŘǯŘȱ ȱ ȱȱ£ȱȱǻIntegerǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŜȱ ŗŚǯŘǯřȱ ȱ ȱȱ£ûȱǻSingleǰȱDoubleǰȱExtendedǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŜȱ ŗŚǯŘǯŚȱ ȱ ȱȱ£ȱȱȱ£û ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖŝȱ ŗŚǯřȱ ȱȱ ȱȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖşȱ ŗŚǯřǯŗȱ ȱ ȱȱȱ£ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŖşȱ ŗŚǯřǯŘȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗŘȱ ŗŚǯřǯřȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗŘȱ ŗŚǯřǯŚȱ ȱ Ȭȱȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗřȱ ŗŚǯŚȱ ȱȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗřȱ ŗŚǯŚǯŗȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗřȱ ŗŚǯŚǯŘȱ ȱ ȱ ȱǻȱǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗŚȱ ŗŚǯŚǯřȱ ȱ ȱ ȱǻđȱǼ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗśȱ ŗŚǯŚǯŚȱ ȱ ȱǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŗŜȱ ŗŚǯŚǯśȱ ȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘŗȱ ŗŚǯŚǯŜȱ ȱ ȱ§ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘřȱ ŗŚǯśȱ ȱȱ ǰȱ£ǰȱ£ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘśȱ ŗŚǯśǯŗȱ ȱ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘśȱ ŗŚǯśǯŘȱ ȱ £ ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘśȱ ȱ ȱ £ǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯǯ řŘŝȱ ȱ
1
Benutzeroberflächen Wer heutzutage ein Programm schreibt, der orientiert sich an Windows. Ob gewollt oder nicht, ob bewusst oder nicht: Die gängige Form der Mensch-RechnerKommunikation besteht in der Arbeit mit Maus und Tastatur, im vielfältigen Umgang mit diversen Bedienelementen (manchmal auch Steuerelemente genannt), die in einem Fenster auf einer Arbeitsfläche angeordnet sind und die Benutzeroberfläche (engl.: user interface) bilden. Das Ziel dieses Buches besteht darin, allen Anfängern und Einsteigern die Möglichkeiten aufzuzeigen, wie sie mit Hilfe von Delphi derartige Benutzeroberflächen herstellen und mit Leben erfüllen können. Delphi-Programmiersysteme gibt es inzwischen seit mehr als einem Dutzend Jahren, es begann mit Delphi!!3, dann gab es Weiterentwicklungen bis hin zu Delphi!!7, danach folgten Delphi!!8 und – neu nummeriert – Delphi!!2005 bis inzwischen Delphi!!2009. Weil viele dieser Versionen in Computerpools von Schulen, Hochschulen und anderen Bildungseinrichtungen genutzt werden, wird versucht, auf Wesentliches aller Versionen grundsätzlich einzugehen. Wer allerdings neu anfängt und noch keinen Zugang zu einem der genannten Delphi-Systeme hat, der sollte mit Turbo Delphi 2006 beginnen. Denn diese „Beginner-Version“ ist erstens kostenlos verfügbar und zweitens problemlos nutzbar sowohl unter dem noch weit verbreiteten Betriebssystem Windows XP als auch unter Windows Vista. Deshalb wird im folgenden Abschnitt zuerst beschrieben, wie Turbo Delphi 2006 beschafft werden kann. Anschließend wird in diesem Kapitel nach einer Übersicht über die Startbilder der Delphi-Versionen einleitend beschrieben, wie erste einfache Benutzeroberflächen vorbereitet und getestet werden können.
1.1
Kostenlos: Turbo Delphi 2006 Natürlich – ein Zugang zum Internet muss vorhanden sein. Dann findet sich unter der Adresse http://www.codegear.com/downloads/free/turbo
das Angebot von Embarcadero!/!CodeGear zum kostenlosen Herunterladen von Turbo- Versionen (Bild 1.1). Nach dem Klick auf Turbo Delphi Explorer wird eine weitere Seite geöffnet, die zuerst viele 3rdRail Downloads anbietet, darunter alle C++Builder Downloads und darunter dann schließlich für vier Sprachen die Delphi Downloads (Bild 1.2).
2
1 Benutzeroberflächen
Bild 1.1: Seite http://www.codegear.com/downloads/free/turbo (Stand Juli 2009)
Bild 1.2: Download-Angebot in vier Sprachen Nach Klick auf die Schaltfläche !!!DOWNLOAD!!! (später werden wir Button dazu sagen) müssen die Lizenzbedingungen akzeptiert werden, und dann beginnt schon das Herunterladen der ca. 330 Megabyte umfassenden Installationsdatei TurboDelphi_DE.exe
Bei Windows XP wird diese Datei im allgemeinen auf dem Desktop abgelegt, Windows Vista bringt sie in einen gesonderten Ordner mit dem Namen download.
1.1 Kostenlos: Turbo Delphi 2006
3
Nach dem Herunterladen dieser Installationsdatei wird vom Hersteller darum gebeten, dass man sich registrieren lasse (Bild 1.3).
Bild 1.3: Formular zur Registration Nach dem Absenden des ausgefüllten Fragebogens durch Klick auf den Button !!!Submit! erhält man schon wenige Minuten später an die angegebene Email-Adresse eine Mail mit dem Absender Embarcadero-licensing und dem Betreff Embarcadero Produkt-Registrierung.
Diese Mail enthält als Anhang eine einfache Textdatei mit dem Namen reg...!!!.txt, wobei anstelle der drei Punkte hinter reg... drei konkrete Ziffern stehen. Im Anschreiben wird dazu erklärt, in welchem Ordner diese Datei abzulegen ist, damit bei erstmaligem Start von Turbo Delphi 2006 festgestellt werden kann, ob es sich um legal erworbene Software handelt. Doch soweit ist es noch nicht, erst muss die Installationsdatei TurboDelphi_DE.exe ausgeführt werden. Das wird durch Doppelklick auf diesen Dateinamen veranlasst. Während der Installationsvorbereitungen wird darauf hingewiesen, dass Turbo-Delphi nur erfolgreich arbeiten kann, wenn einige Microsoft-Produkte auf dem Rechner vorhanden sind (Bild 1.4):
Bild 1.4 Erforderliche Microsoft-Produkte Da es durchaus möglich sein kann, dass diese Programme bereits vorhanden sind, sollte doch zuerst die Turbo-Delphi-Installation gestartet werden (Bild 1.5).
4
1 Benutzeroberflächen
Noch einmal ist dabei zu bestätigen, dass die Lizenzbedingungen akzeptiert werden. Anschließend sollten durch Klick auf !!Weiter!!!>!! die jeweiligen Vorschläge bestätigt werden.
Bild 1.5 Start der Installation Nach erfolgreicher Installation von Turbo Delphi 2006 findet man nach START!!Æ PROGRAMME die Gruppe BORLAND DEVELOPER STUDIO und dort das Entwicklungssystem TURBO DELPHI 2006 (Bild 1.6).
Bild 1.6: Starten von Turbo Delphi 2006 Ist die eingangs erwähnte, mit der Bestätigungs-Mail erhaltene Textdatei in dem richtigen Ordner abgelegt und sind alle in Bild 1.4 erwähnten Programm vorhanden, dann kann Turbo Delphi 2006 starten und man erfährt in der eingeblendeten Lizenzinformation, dass dieses Produkt über hundert Jahre (genau 35506 Tage) genutzt werden darf. Und immer kostenlos. Fehlt dagegen eines der in Bild 1.4 verlangten Microsoft-Programme, dann wird das mitgeteilt.
1.2 Startbilder von Turbo Delphi 2006 und Delphi 7
5
Mittels http://www.microsoft.com/downloads/search.aspx?displaylang=de
kann das Download-Center von Microsoft geöffnet werden, durch Eintragen der Bezeichnung der fehlenden Software in das Suchfenster kann diese zum Herunterladen angefordert werden (Bild 1.7).
Bild 1.7: Anfordern fehlender Microsoft-Komponenten
1.2
Startbilder von Turbo Delphi 2006 und Delphi 7 Für Einsteiger und Anfänger sind – sofern sie selber auswählen können – die Delphi-Versionen Turbo Delphi 2006 (wegen der kostenlosen Bereitstellung) oder Delphi 7 (wegen der einfachen Bedienbarkeit) zu empfehlen. Deswegen werden die Startbilder dieser beiden Versionen zuerst ausführlich erklärt.
1.2.1
Turbo Delphi 2006 Wenn nicht anders eingestellt, begrüßt uns Turbo Delphi 2006 mit einem Startbild, in dessen Zentrum sich eine Willkommens-Seite befindet, die uns über die zuletzt bearbeiteten Projekte informiert und weitere Leistungen anbietet (Bild 1.8). Die Willkommens-Seite kann genutzt werden, um unmittelbar mit der Arbeit an den zuletzt behandelten Projekten fortzufahren, denn diese werden übersichtlich aufgelistet. Außerdem werden umfangreiche Angebote zum weiteren Lernen oder zu spezieller Information unterbreitet. Nach dem Schließen der Willkommens-Seite von Turbo Delphi 2006, wie üblich mit der Maus an dem kleinen Schließ-Kreuz x , müssen wir uns nach DATEIÆNEU entscheiden, welche der vielen Anwendungen, die mit Turbo Delphi 2006 herstellbar sind, angestrebt wird.
6
1 Benutzeroberflächen
Für dieses Buch sollten wir grundsätzlich VCL-Formularanwendungen auswählen (Bild 1.9).
Bild 1.8: Startbild von Turbo Delphi 2006
Bild 1.9: Auswahl der vorgesehenen Anwendung: VCL-Formular Nach Auswahl der VCL-Formularanwendung erscheint das entsprechende VCLAnwendungs-Startbild (Bild 1.10). Sehen wir uns dessen Bestandteile im Einzelnen an:
7
1.2 Startbilder von Turbo Delphi 2006 und Delphi 7
Links unten ist in Bild 1.10 ein Fenster zu sehen, das die Überschrift Objektinspektor trägt und die beiden Registerblätter EIGENSCHAFTEN und EREIGNISSE enthält. Mit Hilfe des Objektinspektors, eines sehr wichtigen DelphiBestandteils, können wir im Entwurf einstellen, wie die Bedienelemente später aussehen sollen, wenn sie dem Nutzer auf dem Bildschirm präsentiert werden.
Tool-Palette
Objektinspektor
Bild 1.10: Startbild für die Turbo-Delphi-2006-VCL-Programmierung Wenn das Fenster mit dem Objektinspektor fehlt, kann es über ANSICHTÆOBJEKTINSPEKTOR wieder besorgt werden. In der Mitte des Startbildes befindet sich eine graue, gerasterte Fläche mit der Beschriftung Form1. Das ist der Entwurf des Formulars, das ist bereits der Grundbaustein für jede Anwendung, das wird die Arbeitsfläche, der Hintergrund jeder Benutzeroberfläche. Rechts oben ist das Fenster der Projektverwaltung zu sehen; für unsere Einstiegs-Anwendungen hat es noch keine große Bedeutung. Wenn dieses Fenster fehlt, kann es über ANSICHTÆPROJEKTVERWALTUNG geöffnet werden. Für uns aber bereits anfangs außerordentlich wichtig wird das Fenster sein, das rechts unten zu sehen ist und die Beschriftung Tool-Palette trägt. Sollte
8
1 Benutzeroberflächen
dieses Fenster nicht zu sehen sein kann es über ANSICHTÆTOOL-PALETTE geöffnet werden.
1.2.2
Delphi 7 und ältere Versionen Das Startbild von Delphi 7 und älteren Versionen von Delphi (Bild 1.9) ist im Wesentlichen wie das Startbild der Turbo-Delphi-2006-VCL-Formularanwendung (Bild 1.10) strukturiert; aber einige Bezeichnungen sind doch anders.
Komponentenleiste
Objektinspektor
Bild 1.11: Startbild von Delphi 7 Auffällig ist im Zentrum des Fensters die sofort vorhandene, grau gerasterte Fläche mit der Beschriftung Form1. Das ist wieder der Entwurf des Formulars, das ist bereits der Grundbaustein für jede Anwendung. Das kleine Fenster links oben trägt die Beschriftung Objekt-Hierarchie; es entspricht der Projektverwaltung von Turbo Delphi 2006; es ist für unsere Anwendungen einstweilen nicht wichtig. Links darunter ist jedoch wieder das wichtige Fenster zu sehen, das die Überschrift Objektinspektor trägt. Mit Hilfe des Objektinspektors können wir einstellen, wie die Bedienelemente später aussehen sollen, wenn sie dem Nutzer anfangs auf dem Bildschirm präsentiert werden. Anstelle des Tool-Paletten-Fensters, das sich im VCL-Startbild von Turbo Delphi rechts unten befindet, besitzen die älteren Versionen von Delphi rechts oben eine Komponentenleiste (Bild 1.12) mit verschiedenen Registerblättern mit den Bezeichnungen STANDARD, ZUSÄTZLICH, SYSTEM usw.
1.3 Startbilder von Delphi 8, Delphi 2005 und Delphi 2009
9
Bild 1.12: Komponentenleiste älterer Delphi-Versionen bis Delphi 7
1.3
Startbilder von Delphi 8, Delphi 2005 und Delphi 2009 Bild 1.4 zeigt die Oberfläche von Delphi 8, nachdem das Willkommens-Fenster geschlossen wurde und anschließend mittels DATEIÆNEUÆVCL-FORMULARANWENDUNG die Voraussetzung für die Arbeit auf dem Einsteigerniveau geschaffen wurde (Bild 1.13). Es ist grundsätzlich genau so aufgebaut wie das entsprechende Startbild von Turbo-Delphi. In Bild 1.10 ist lediglich links das Fenster des Objektinspektors nach oben vergrößert worden.
Tool-Palette
Objektinspektor
Bild 1.13: Startbild für die Delphi-8-VCL-Programmierung Auch die Startbilder für die Delphi-2005-VCL-Programmierung (Bild 1.14) und die Delphi-2009-VCL-Programmierung (Bild 1.15), die jeweils nach Beseitigung der Willkommens-Seite und anschließender Bedienhandlung DATEIÆNEUÆVCL-FORMULARANWENDUNG entstehen, gleichen in ihrem Aufbau grundsätzlich dem Startbild für die Turbo-Delphi-VCL-Formularanwendung aus Bild 1.10. Folglich brauchen wir uns im Weiteren nur mit Turbo Delphi 2006 sowie – für die Besitzer der älteren Delphi-Versionen – mit Turbo 7 zu beschäftigen.
10
1 Benutzeroberflächen
Tool-Palette
Objektinspektor
Bild 1.14: Startbild für die Delphi-2005-VCL-Programmierung
Tool-Palette
Objektinspektor
Bild 1.15: Startbild für die Delphi-2009-VCL-Programmierung
1.4
Tool-Palette und Komponentenleiste Ȭ !" # $ # # % & # Tool-Palette'*+/
ŗǯŗŜ> festgelegt werden.
Bild 1.24: Farb-Voreinstellung
1.5.2
Test des Formulars Die meisten Eigenschaften, die wir mit Hilfe des Objektinspektors voreinstellen, werden uns, wie in einer Vorschau, auch schon sichtbar angezeigt. Allerdings nicht alle – würde uns beispielsweise das maximale Fenster während der Entwurfstätigkeit schon eingestellt, könnten wir nichts Anderes mehr sehen. Die endgültige Kontrolle, wie sich das Formular schließlich dem Nutzer darstellen wird, liefert die Herstellung des Formulars, indem die so genannte Laufzeit gestartet wird – man sagt auch, es „wird ausgeführt“ oder „die Ausführung wird gestartet“. Dazu wird entweder die Taste F9 betätigt, oder es wird mit der linken Maustaste auf das nach rechts gerichtete grüne Dreieck (Bilder 1.25, 1.26) geklickt.
Bild 1.25: Herstellung der Benutzeroberfläche
16
1 Benutzeroberflächen
Start der Laufzeit
Bild 1.26: Start der Laufzeit
Ende der Laufzeit
Bild 1.27: Beendigung der Laufzeit, Rückkehr zum Entwurf Für die Rückkehr zum Entwurfsmodus (auch als Entwurfsphase oder kurz als Entwurf bezeichnet) muss die Laufzeit beendet werden – in der Sprache von Turbo Delphi und Delphi 8/2005/2009 heißt das, dass wir uns den Designer wieder anzeigen lassen.
17
1.5 Formular
Die Laufzeit lässt sich beenden, indem am Formular das Schließkreuz rechts oben angeklickt wird (Bild 1.27) oder die Tastenkombination Alt + F4 gewählt wird. Sollte dann anstelle der gerasterten Entwurfsform des Formulars ein anderes Fenster (z. B. mit Programmtext) zu sehen sein, kann mit F12 oder mit einer Schaltfläche (s. Bild 1.28) zum Entwurf des Formulars gewechselt werden.
Bild 1.28: Rückkehr zum Formular in Turbo Delphi bzw. Delphi 7 Im Entwurf kann dann weiter an der Vorbereitung des Formulars gearbeitet werden: Erscheinungsmerkmale, die nicht gefallen haben, können korrigiert werden, und es sollte vor allem durch Speicherung der bisherige Bearbeitungsstand gesichert werden.
1.5.3
Speicherung Die älteren Versionen von Delphi und vor allem dann Turbo Delphi und Delphi 8/2005/2009 sind leistungsfähige Entwicklungssysteme, folglich wird eine einzige Datei zum Speichern keinesfalls ausreichen. Grundsätzlich sollte stets veranlasst werden, dass das Delphi-System stets alles speichert.
Alles speichern
Bild 1.29: Turbo Delphi-Menü DATEI mit Speichermöglichkeiten Dazu gibt es im Menü DATEI aller Delphi-Versionen speziell das Angebot ALLES SPEICHERN.
18
1 Benutzeroberflächen
Bild 1.29 zeigt das Menü DATEI von Turbo Delphi und Delphi 8/2005/2009. In älteren Delphi-Versionen gibt es dazu keinen wesentlichen Unterschied. Man beachte aber: Beim ersten Mal von ALLES SPEICHERN müssen wir stets zwei verschiedene Dateinamen selber vorgeben: Zuerst verlangt Delphi nämlich noch nicht den Namen für das ganze Projekt, sondern erst einmal nur den Namen für die Datei, die das Formular speichert. Da die programmtechnische Bezeichnung für den Text, der innerhalb des Projekts die Angaben zum Formular speichert, mit der Vokabel Unit beginnt, sollte sich zweckmäßig der Name der Formular-Datei vom später verlangten Projektnamen durch ein angehängtes „u“ unterscheiden. Soll zum Beispiel das gesamte erste Projekt unter dem Namen kap01 gesichert werden, empfiehlt sich für die Formular-Datei der Name kap01u. Erst anschließend verlangt Delphi den Namen für das ganze Projekt. Hier wäre in unserem Fall kap01 sinnvoll. Die jeweiligen Endungen ergänzt Delphi selbsttätig. Bild 1.30 lässt erkennen, dass Delphi 7 und erst recht Turbo Delphi 2006 mit den zwei vergebenen Namen sofort eine Fülle an Dateien angelegt hat – auch wenn das Projekt bisher lediglich ein einziges Formular enthält.
Bild 1.28: Dateien des Projekts, von Delphi 7 bzw. Turbo Delphi 2006 angelegt Die älteren Versionen von Delphi vor Delphi 7 legen, ebenso wie in Bild 1.30 links zu sehen, pro Projekt auch mehrere Dateien an. für sie gilt das Gesagte ebenso. Allerdings - die bdsproj-Dateien (das sind die Dateien mit der Endung bdsproj) gibt es in den älteren Delphi-Versionen nicht. Deshalb müssen wir unterscheiden: Die entscheidende Datei für ein Delphi-7-Projekt (oder ein Projekt einer noch älteren Delphi-Version) ist immer die Projekt-Datei mit der Endung .dpr. Die entscheidende Datei für ein Turbo-Delphi-Projekt (und für Delphi 8/2005-Projekte) ist immer die Projekt-Datei mit der Endung .bdsproj. Die entscheidende Datei für ein Delphi-2009-Projekt ist immer die ProjektDatei mit der Endung .dproj!.
19
1.6 Bedienelemente auf dem Formular
Wenn später mittels DATEI Æ PROJEKT ÖFFNEN ein vorhandenes Projekt geöffnet werden soll, werden in dem entsprechenden Auswahl-Fenster (Bild 1.31) von den vielen Dateien des Projektes ohnehin nur die passenden Projektdateien zur Auswahl angeboten. Die Versionen Turbo Delphi 2006 und Delphi 2009 bieten jedoch bei der Projektöffnung sowohl die .dpr- als auch die .bdsproj- bzw. .dproj-Dateien zum Öffnen an.
Bild 1.31: Turbo Delphi und Delphi 2009: Angebot bei DATEIÆPROJEKT!!ÖFFNEN Das heißt, man kann mit diesen beiden neuen Delphi-Versionen auch ältere Projekte (Delphi 7 und älter) öffnen und bearbeiten. Allerdings werden danach, wenn die Ergebnisse der Überarbeitung der älteren Projekte gespeichert werden sollen, neue Projektdateien mit den neuen Endungen .bdsproj- bzw. .dproj erzeugt
1.6
Bedienelemente auf dem Formular
1.6.1
Auswahl mit Turbo Delphi 2006 und Delphi 8/2005/2009 Wie bekommt man zum Beispiel einen Button (Schaltfläche), eine Scrollbar (Schieberegler), ein Textfenster oder all die anderen Bedienelemente, an die wir inzwischen gewöhnt sind und mit denen wir eine attraktive Benutzeroberfläche gestalten wollen, im Entwurf auf das Formular?
Öffnen der Kategorie durch Klick auf das Pluszeichen
Bild 1.32: Tool-Palette von Turbo Delphi 2006
20
1 Benutzeroberflächen
Wenn wir mit Turbo Delphi oder mit Delphi 8/2005/2009 arbeiten, benötigen wir hierzu die Tool-Palette, die in mehreren Kategorien (s. Bild 1.16) alle Arten von Bedienelemente zur Verfügung stellt, die man sich für heutige Anwendungen wünschen kann. Eine Kategorie wird durch Klick auf das Pluszeichen links neben dem KategorieNamen geöffnet.
1.6.2
Auswahl mit älteren Delphi-Versionen Wie schon mitgeteilt, sind in Delphi 7 und früheren Versionen dagegen die Symbole für die Bedienelemente in Registerblättern auf der Komponentenleiste (Bild 1.33) angeordnet.
Bild 1.33: Komponentenleiste von Delphi 7 und älteren Versionen
1.6.3
Wichtige Kategorien bzw. Registerblätter In Turbo Delphi und in Delphi 8/2005/2009 wird von Kategorien in der Tool-Palette gesprochen, in älteren Delphi-Versionen dagegen von Registerblättern der Komponentenleiste. Inhaltlich gibt es aber keine Unterschiede. Für uns wird hauptsächlich die Kategorie bzw. das Registerblatt STANDARD bedeutsam sein (Bilder 1.34 und 1.35). Dort befinden sich, wie wir gleich sehen werden, die grundsätzlichen Bedienungselemente. Während bei Turbo Delphi und Delphi 8/2005/2009 neben dem jeweiligen Sinnbild eine erklärende Beschriftung angebracht wurde, muss man bei früheren Delphi-Versionen bis Delphi 7 ca. eine Sekunde warten, bis ein kleines gelbes Fenster aufblendet und uns über die Bedeutung des jeweiligen Symbols informiert.
Bild 1.34: Kategorie STANDARD in Turbo Delphi und Delphi 8/2005/2009
1.7 Basiselemente
21
Bild 1.35: Registerblatt STANDARD in Delphi 7 und früheren Versionen Aus der Kategorie bzw. aus dem Registerblatt SYSTEM werden wir ab Kapitel 6 den wichtigen Timer benötigen. Aus der Kategorie bzw. dem Registerblatt ZUSÄTZLICH entnehmen wir im Abschnitt 7.4.4 das Element Image und im Abschnitt 10.1.2 das Element Shape.
1.7
Basiselemente
1.7.1
Von Button bis Scrollbar Im Bild 1.35 sind bereits die Sinnbilder aus der Kategorie STANDARD aller Delphi-Versionen hervorgehoben, mit denen wir die sechs grundlegenden Bedienungselemente Schaltfläche (Button), Textfenster (Edit), Ja-Nein-Option (Checkbox), exklusive Ja-Nein-Option (RadioButton), Textanzeige (Label) und Schieberegler (Scrollbar) auswählen können. Per Mausklick kann ein Sinnbild ausgewählt werden, anschließend wird – ebenfalls mit der Maus – auf dem Formular das damit beabsichtigte Bedienelement platziert und in seiner Größe eingerichtet. Bild 1.36 zeigt eine so entstandene Benutzeroberfläche mit sechs verschiedenen Bedienelementen im Entwurf, Bild 1.37 zeigt sie zur Laufzeit.
Bild 1.36: Entwurf: Sechs Bedienelemente, auf dem Formular platziert
22
1 Benutzeroberflächen
Für den weiteren Sprachgebrauch folgen wir dem Trend: Nur für das Textfenster werden wir weiterhin die deutsche Bezeichnung verwenden (manchmal wird sich auch Textbox einschleichen). Ansonsten sprechen wir von einem Label, einer Checkbox, einem Button, einer Scrollbar und einem Radiobutton. Dann bleiben wir mit unserer Sprache auch gleich nahe bei den Standard-Namen, die Delphi sowieso für diese Bedienungselemente vergibt.
Bild 1.37: Laufzeit: Sechs Bedienelemente, auf dem Formular platziert Die Platzierung auf dem Formular ist, wie schon gesagt, denkbar einfach: Mit der Maus wird das Symbol aus der Kategorie bzw. vom Registerblatt an die gewünschte Stelle gezogen, die Größe wird eingerichtet, fertig. Im selben Moment stellt sich auch bereits der Objektinspektor auf das soeben platzierte Bedienungselement ein, teilt dessen vom Delphi-System vorgeschlagenen Namen mit und bietet den Katalog aller Eigenschaften an, die für die Laufzeit anfangs voreingestellt werden können.
1.7.2
Name, Beschriftung, Inhalt In dem Augenblick, in dem wir im Entwurf ein Bedienelement auf dem Formular platzieren, muss es einen Namen bekommen. Dieser Name ist Bestandteil der internen Organisation des gesamten Delphi-Projekts. Delphi schlägt uns für jedes Bedienelement sofort automatisch einen Namen vor. Für die Buttons (Schaltflächen) wird Button1, Button2 usw. vorgeschlagen, für die Textfenster lesen wir Edit1, Edit2 usw., für Checkboxen wird uns Checkbox1, Checkbox2 usw. vorgeschlagen, für Radiobuttons lautet der Delphi-Vorschlag Radiobutton1, Radiobutton2 usw., und jede Scrollbar wird erst einmal mit dem entsprechenden Namen Scrollbar1 usw. versehen.
1.7 Basiselemente
23
Den Delphi-Namensvorschlag können wir sowohl fettgedruckt in der Kopfzeile des zugehörigen Objektinspektors als auch in der Zeile Name lesen (Bild 1.36). Natürlich muss der Delphi-Namensvorschlag nicht akzeptiert werden; wir könnten unverzüglich im Objektinspektor die Eigenschaft Name anders, individuell belegen. Delphi würde auch den von uns vergebenen Namen akzeptieren – sofern sein Aufbau gewissen Regeln genügt. Doch für den Einsteiger ergibt sich damit eine weitere Schwierigkeit und Fehlerquelle, außerdem kann leicht die Übersicht verloren werden. Deswegen wird in diesem Buch (mit Ausnahme einer einzigen Stelle im Abschnitt 13.4.3) generell empfohlen, die Namensvorschläge von Delphi zu akzeptieren und mit den Delphi-Namen zu arbeiten. Auf eine Besonderheit muss jedoch unbedingt hingewiesen werden: Wenn Delphi einen Namen für ein Bedienelement vorschlägt und in die Zeile Name des Objektinspektors dieses Bedienelements einträgt, trägt Delphi diese Vokabel automatisch auch als Start-Beschriftung von Formular, Button, Checkbox, Label oder Radiobutton in die Zeile Caption von deren Objektinspektor oder als Start-Inhalt eines Textfensters in die Zeile Text seines Objektinspektors ein.
Bild 1.38: Delphi schlägt einen Namen für ein Bedienelement vor Das führt bei Anfängern gern dazu, dass sie die Aufgabe „Ändere die Start-Beschriftung oder den Start-Inhalt“ falsch dadurch lösen, dass sie den Namen ändern.
1.7.3
Voreinstellungen Der Objektinspektor eines Buttons (Bild 1.39) bietet all das an, was in der Entwurfsphase als Eigenschaft entsprechend dem gewünschten Erscheinungsbild beim Start eingestellt werden kann:
24
1 Benutzeroberflächen
Die beiden meistgebrauchten Eigenschaften jedes Buttons sind im Bild hervorgehoben: Die Beschriftung des Buttons über Caption und die Einstellung von Schriftgröße und –stil über Font.
Bild 1.39: Objektinspektor eines Buttons in Turbo Delphi, Delphi 8/2005/2009 Die drei wichtigsten Zeilen des Objektinspektors eines Textfensters sind: Text zur Voreinstellung des Inhalts für den Start der Laufzeit, Color zur Voreinstellung der Fensterfarbe und Font zur Voreinstellung der Schrift. Im Objektinspektor einer Checkbox sind besonders hervorzuheben: die Möglichkeit der Farb-Vorwahl über Color, die Wahl der Start-Beschriftung über Caption einschließlich der Schriftauswahl mittels Font, die Möglichkeit, die Checkbox mit oder ohne gesetzten Haken (Eigenschaft Checked) auf der Benutzeroberfläche beim Start der Laufzeit erscheinen zu lassen. Ein Label ist ein reines Ausgabemedium; es wird zuerst einmal dafür benutzt, um Informations-Texte auf das Formular zu schreiben. Deshalb kann über die Eigenschaft Transparent eingestellt werden, ob das Label durchscheinend ist oder einen eigenen Hintergrund haben soll, mit Caption die Startbeschriftung gewählt werden, mit Font die Schriftart, mit Color die Farbe voreingestellt werden. Weiterhin wird – im Gegensatz zum Textfenster – ein Label immer dann benutzt, wenn ein Nutzer ein Ergebnis ohne Änderungsmöglichkeit zur Kenntnis nehmen soll. In diesem Fall kann über die Eigenschaft AutoSize eingestellt werden, ob sich das Label dem auszugebenden Inhalt in der Größe anpassen soll oder immer dieselbe, im Entwurf voreingestellte Größe besitzt.
1.7 Basiselemente
25
Ein Schieberegler, allgemein als Scrollbar bezeichnet, manchmal von Kennern auch Potentiometer genannt, ist ein sehr wirksames Bedienungselement. Denn mit seiner Hilfe kann man ein Mittel auf dem Formular platzieren, bei dem eine Fehlbedienung durch den Nutzer absolut ausgeschlossen ist. Wir brauchen uns zum Beispiel nur eine Anwendung vorzustellen, bei der ein Nutzer nur ganzzahlige Werte zwischen 0 und 255 (s. Abschnitt 7.1.3) eingeben darf. Lassen wir den Nutzer (auch mit entsprechendem Hinweis) seinen Wert in ein Textfenster eintragen, können wir mit an Sicherheit grenzender Wahrscheinlichkeit davon ausgehen, dass er aus Unkonzentriertheit oder Müdigkeit oder Bösartigkeit doch bisweilen etwas Sinnloses einträgt. Eine Fehlermeldung, wenn nicht sogar ein Programmabsturz sind die Folgen. Fordern wir den Nutzer dagegen auf, in einer Scrollbar, deren Minimum auf 0 und deren Maximum auf 255 voreingestellt wurde, den Regler einzustellen – da kann er absolut nichts falsch machen. Der Objektinspektor der Scrollbar liefert wieder die wichtigsten Möglichkeiten der Voreinstellung. Die Ausrichtung der Scrollbar wird mit der Eigenschaft Kind gewählt. Minimum, Maximum und Startposition des Reglers werden im Objektinspektor in den Zeilen mit den Beschriftungen Min, Max bzw. Position eingetragen. SmallChange legt fest, ob der Regler in kleinen oder großen Schritten „springt“, wenn der Nutzer die Griffe an den Seiten der Scrollbar mit der Maus betätigt. Ein Radiobutton allein ist eigentlich sinnlos. Denn der Nutzer kann ihn zwar „einschalten“ (falls er nicht sogar schon diese Starteigenschaft über Checked bekommen hatte), aber er kann ihn nie wieder „ausschalten“. Aus Windows ist es uns allgemein bekannt: Radiobuttons treten eigentlich immer in Gruppen auf. Innerhalb der Gruppen kann der Nutzer dann umschalten.
Bild 1.40 Symbol zur Gruppierung von Radiobuttons in Turbo Delphi
Bild 1.41 Symbol zur Gruppierung von Radiobuttons in Delphi 7
26
1 Benutzeroberflächen
Um solche Gruppen von Radiobuttons auf dem Formular zu platzieren, benötigt man zuerst aus der Kategorie bzw. dem Registerblatt STANDARD einen Rahmen (Bilder 1.40 und 1.41). An einem solchen Rahmen, der von Delphi mit dem Namen GroupBox1 usw. versehen wird, kann natürlich auch über seinen Objektinspektor die Beschriftung mit Caption und Font sowie die Hintergrundfarbe mit Color voreingestellt werden. Anschließend werden dann die Radiobuttons in den/die Rahmen hineingezogen. Umgekehrt geht es nicht. Bild 1.42 zeigt uns eine Gruppe von Radiobuttons, die mit ihren Beschriftungen in dem Rahmen angeordnet wurden. Der oberste Radiobutton trägt beim Start die Markierung.
Bild 1.42 Gruppierte Radiobuttons mit Startmarkierung Bild 1.43 erklärt, wie die gesetzte Start-Markierung des ersten Radiobuttons, der den Namen RadioButton1 erhielt, im Objektinspektor dieses Bedienelements eingestellt wird.
Bild 1.43 Die Markierung für Radiobutton1 wird gesetzt
ȱ
2
Objekt, Ereignis, Ereignisprozedur ȱȱ ȱ ȱǰȱ ȱȱȱ ǰȱ ȱȱȬ ȱ ȱ ȱ §ǰȱ ȱ ǰȱ ȱ ǰȱ ȱȱ£ §đȱǯȱȱ ȱ§ǰȱ ȱȱȱȬ ȱ £ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ §ȱ ȱ Ȭ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȱȱȱ ȱ ûȱ£ȱȱǯȱȱ ȱđȱȱȱǰȱ ȱ ȱ ȱȱ ȱ ȱ £ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ãDZȱ ȱ ȱ ǻ§Ǽǰȱ ȱ ǻǼǰȱ ȱ ǻ¡ǰȱ ¡Ǽǰȱ ¡ȱ ǻ ȬȬǼǰȱ ȱ ǻȬ Ǽȱ ȱȱȱ ¡ȱǻȱ Ǽǯȱȱȱ ȱ ȱ đȱ ȱ ȱ ãȱ ǰȱ Ǯȱ ȃǰȱ ǯȱ ȱ ǰȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ
ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱǰȱ ȱȱãȱȱȱȱȱȬ ȱǯȱȱ ȱ ȱ ȱȱȱ ǰȱ ȱ§ȱȱȱȬȬ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ¢ȱ ȱ ȱ ȱ ȱ ȱ ȱ ãȬ ǰȱûȱ ȱȱ§ȱȱȱȱȱȱǯȱȱ ȱđȱ ȱ ȱȱȱȱȱȱȱȱ Ȯȱȱǯȱȱûȱ ȱ ȱ ȱãǰȱȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ǰȱȱȱ£ǯȱȱ
2.1
Der Objektbegriff
2.1.1
Datenobjekte ȱȱȱ£ȱȱȱû£ȱǯȱȱȱ ǰȱȱȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ đȱ ȱ ȱ Ȭ ǰȱȱȱȱ ȱȱȱǯȱ
ŘŞ
Řȱȱǰȱǰȱ£ȱ
ȱ ȱ ȱ ȱ ǻȱ ȱ ȱ ȱ ȱ Ȭ ȱ Ǽǰȱȱãȱȱȱȱȱǯȱȱ ȱ ȱ £ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ £ȬȬ ȱ £ǯȱ ȱ £Ȭȱ ȱ ȱ ȱ ȱ ȱȱȱȱ£ǯȱȱ
§ȱȱȱȱȱû£ȱǰȱȱ §ȱȱȱȬ ǯȱǰȱȱ£Ȭǰȱãȱȱȱȱǯȱȱ ȱ§ȱȱȱ£§£ȱ ȱǰȱȱȱ ȱ ȱ£Ȭȱȱȱȱȱǯȱȱ
ȱȱ ȱŘǯŗDZȱȱȱȱ ȱȱŘǯŗȱȱȱȱȱ£ǰȱȱ£ȱȱȬȬ ȱãȱãDZȱȱ ȱ¢ȱǻǼȱȱȱȱȱȱȱȱ ȱ£ȱȱȱǯȱ ȱȱ£ȬȬ ȱȱ¢ȱǰȱ§ȱȱȱȱ ȱȱ£ȱȱȱ ǯȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ Ȭ ȱȱǰȱȱȱ£ȱ§ǯȱȱ ȱ £ǯȱ ǯȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ãȱûȱ£ ȱȱ ȱȱ£ ȱȱȱȱ§Ȭ ȱ ǯȱȱ ȱ ǯȱ ȱ ȱ ǻǼȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ǰȱ ȱȱȱȱȱȱȱȱǯȱȱ ȱ£ǯȱǯȱȱȱȱ¡ȱ ǰȱȱãȱȱȱȱȬ ȱ£ȱȱȱǯȱȱ ȱȱȱȱȬ ǯȱ ȱ ãȱ ȱ ȱ ȱ §ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ȱ ȱ Addǰȱ ȱ ŗřǯřǯŜǼǯȱȱ ȱȱȱ ȱǯȱȱ ȱȱǻ£ǼȱȱȱȱȱȱDZȱȱȱȱ ȱ§ǰȱȱȱȱȱǰȱ£ǰȱȱȱȱȱ ǯȱ£ȱ ȱǯȱȱ
Řǯŗȱȱȱȱ
2.1.2
Řş
Visuelle Objekte ȱ §ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ
ȱ ȱ ȱ ȱ ȱ Ȯȱ ȱ Ȯȱ ȱ ǯȱ ȱ ȱ §ȱ ȱ ǰȱ ȱȱ ȱ ȱ £ȱ ǰȱ ȱ Ȭ ȱȱȱ£ȱ£ȱ£ȱǯȱȱ
ȱȱ ȱŘǯŘDZȱȱȱȱȱ ȱȱ£ȱ£§£ȱȱ ȱǰȱȱ ȱȱȬ ȱȱȱȱǯȱȱȱȱȱȱȱȱȱ ȱȱȱȱȱȱǯȱȱǰȱȱ£ȱ ȱȱãǰȱȱȱȱǯȱȱ £ȱ ãȱ £ȱ ȱ ǰȱ ãđȱ ȱ ȱ ȱ ǰȱ ȱȱȬȱ ȱ ǰȱȱȱ ȱ ȱ ȱ ȱ ¡ǰȱ£ȱãȱȱȱȱȱ¡ȱȱȱȬ ǰȱȱȱȱȱȱȱȱ ǯȱ ȱȱȱȱȱȱȱȱȱ§ǰȱȱȱ ȱȱȱȱ£ȱǰȱȱ ȱȱȱ ȱȱȱȬ ǯȱȱ ȱȱ§ȱȱȱ§ǰȱ ȱ ȱȱǰȱȱ ȱȱȬ £ȱȱȱ ȱȱȱȱȱȱŗǯŘǯŗȱ ȱŗǯŚǯřȱ ȱȱȱûȱȱȱȱǯȱ ȱŘǯřȱ£ȱDZȱȱȱǰȱȱȱȱȱûǰȱãȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱȱȱ £ǰȱ ȱȱȱȱȱ§ȱȬ £ȱ ǰȱȱȱȱȱȱûȱȱȱȱ ȱǯȱȱ ȱȱȱȱûȱȱȱȱǰȱȱ ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ §ȱ ȱ ȱ ǰȱȱ¡ȱȱȱǰȱȱȱȱȬ ȱǰȱȱȱȱȱȱȱȱ ǯȱȱ ȱǰȱȱȱȱ ȱȱȱȱȱȱ ȱȱȱȱ ȱȱȱǯȱȱ
řŖ
Řȱȱǰȱǰȱ£ȱ
ȱ ȱ ŚǯŝǯŘȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱãǯȱ
ȱȱ ȱŘǯřDZȱȱȱȱȱȱ ȱ ǰȱ ȱ ǯȱ ȱ ȱ ȱ £ȱ £ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ǵȱ ȱ ȱ ȱ ȱ £ȱ ȱȱ£ȱǻȱȱȱȱȱȱ£ȱȱȱ£ȱ ȱ Ǽǯȱȱ ûȱȱȱ£ǰȱȱ ȱȱǰȱȱȱȱ DZȱȱ ȱȱȱȱǰȱȱȱ¡ȱǰȱȱȱ¡ȱȱ
ȱ£ȱȱ ǰȱȱȱȱȱȱȱ ǯȱȱ
ȱȱȱ ȱŘǯŚDZȱ£ ȱȱȱȱ ȱȱȱȱǰȱȱȱȱǯȱđȱ ȱȱ£§Ȭ ȱȱ£ȱȱȱȱȱǰȱȱ£ȱ ȱȱ£ ǯȱȱ ȱȱŘǯŚȱȱ ȱȱȱȱȱȱȬȱ Ȭ ȱ ȱ ȱ £ȱ ȱ ȱ ãǰȱ ȱ ȱ ȱ £ Ȭ ǯȱ ȱ£ ȱ ȱȱȱȱ£ǯȱȱ
Řǯŗȱȱȱȱ
řŗ
ȱãȱ ȱȱȱȱDZȱȱ ȱȱȱȱǰȱȱ£ȱȱ ȱãǰȱ §ǰȱ§ȱȱȱȱȱǰȱȱǯȱ ȱ ȱ ȱ §ȱ £ ȱ ȱ ȱ ǰȱ §ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱ ȱȱȱ£ ȱ§ȱ ȱȮȱȱȱȱ£ȱȱȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ǯȱȱ ȱȱȱǰȱ ȱ£ ȱȱȬ §ȱȱ£ȱȱǯȱȱ ȱȱȱûȱǰȱȱȱȱȱȱǯȱȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱǯȱ ȱȱȱãȱ£§£ȱȱ ȱȱȱȬ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ȱȱȱûǯȱȱ
2.1.3
Ereignisbehandlung
ȱȱ£ȱȱȱȱ ȱǰȱȱ ȱǰȱȱȱȱ ǯȱ ȱ ȱ ȱ ȱȱ Ȯȱȱ ȱ §ȱȱ ȱ ûȱ ȱ ȱǵȱ ȱȱŘǯśȱȱ£ǰȱ ȱȱûȱ£ȱȱǰȱȱ ȱȱȱ£ȱãȱȱđȱȱȱǯȱȱ ȱ ȱȱȱȱȱ ȱȱȱȱ£Ȭ ǰȱȱ ȱȱȱȱȱǯȱȱȱȱ ȱȬ ȱȱȱȱǯȱȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ §ȱ ȱ Ȯȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱȱȱǯȱȱȱ ȱ £ǰȱ ȱ ȱ £§ȱ ǻȱ ȱ ȱ Ȭ ȱǼȱ§ȱȱǰȱ ȱȱ§ȱ ȱȱȱȱȱǯȱȱ ãȱȱ£ȱȱȱȱȱȱȱȱȱ ȱǰȱ§ȱȱ§ȱȱȱǯȱ ȱ§ȱûǰȱȱȱ£ȱȱȱȱȱȱȬ ȱȱȱ£ȱǯȱȱ ȱȱȱȱ£ȱûȱȱȱȱȱ ȱȱǰȱ ȱȱǯȱȱ
řŘ
Řȱȱǰȱǰȱ£ȱ
ȱDZȱȱ ǰȱȱȱȱȱȱȱ£ȱȱ ȱȱȱȱȱȱȱǰȱûȱ ȱûȱȬ ǰȱȱûȱȱ£ȱ¡ǯȱȱ
ȱȱȱ ȱŘǯśDZȱǰȱ§ȱȱ£ȱ ȱǰȱȱ ȱȱȱȱȱȱ§ȱûǰȱ ȱ ȱȬ £ȱȱãǯȱȱ
2.2
Einfache Ereignisprozeduren zum Standard-Ereignis ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱ£ȱûǰȱȱ ȱȱȱȱǮȬ ȃǯȱȱ ȱȱȱȱȱȱ£ ȱȱȱDZȱȱȬȬ ȱȱȱȱǯȱȱȱȱȱȬȬǯȱȱ ȱ Ȭȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ ȱ ȱûȱȱȱȱ ǯȱȱȱȱ §ȱȱ £ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻ ȬǼȱ ȱ ȱȬȱȱ ûǯȱȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ Ȭ ȱȱȱȱȱ£ȱǯȱ
ŘǯŘȱȱȱ£ȱ£ȱȬȱ
řř
ȱȱûȱ£ȱ£ȱȬȱȱ ȱȱȱ ȱ£ȱDZȱȱȱȱ ȱȱȱȱȱȱȬ ȱǯȱȱ ȱ ȱ ȱ ȱ ȱ £ȱ ûȱ ȱ ȱ ȱ ȱ Ȭ ȱǰȱǯȱǯȱûȱȱȱȱȱȱǯȱȱ ȱ
2.2.1 Button ȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 2!ȱȱzipȬȱ DKap02.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱǰȱȱȱ ȱ[ȱȱȱ D7Kap02 ȱȱȬȱ proj_221.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap02 ȱȱȱproj_221.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱȱȱǻȱȱȱȱȱȱȱ£ȱȬ ȱûǼȱ£ȱ ȱȱȱȱȱ§ȱȱȱ ȱCaptionȱȱȱȱStartȱǻȱȱŘǯŜǼǯȱȱ§ȱûȱ ȱȱȱȱButton1ȱǯȱ
ȱȱ ȱŘǯŜDZȱȱ§ȱǻǼȱȱȱ ȱ ȱ£ȱȱȱDZȱȱȱ ȱȱȱȱȱ ȱ£ȱȱȱǮȱȱ ȱȃȱǯȱȱȱ ǯȱȱ ȱȱ ȱȱȱȬȱûȱȱȱǯȱȱ ȱ ȱȱȱȱûȱȱ£ǰȱȱ ȱȱȱȱ ȱȱȱȱȱDZȱȱ
ȱ ȱŘǯŝDZȱȱûȱȱ£ȱǮ ȱȱButton1ȃȱȱ
řŚ
Řȱȱǰȱǰȱ£ȱ
ȱãȱȱȱȱȱȱ¡ȱǻȱŘǯŝǼǰȱȱȱȱȱȬ ȱǰȱȱȱ£ȱǯȱȱ ȱ procedureȬȱȱȱȱȱ beginȱȱȱȱ £ȱȱȬ ǯȱ ȱ ȱ ȱ end;ȱ ȱ ȱ ȱ ȱ ȱ đ£ȱ ȱ ǯȱ ȱ £ȱ end.ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ£ȱȱȮȱȱȱȱȱãȱ ǯȱȱȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Button1ClickȱȮȱȱȱ ȱ£ȱ ǰȱȱ ȱ§ȱȱȱ ȱ£ȱûȱȱȱ ȱȱButton1ȱȱȱǯȱȱ ȱ ȱ£ ȱ beginȱȱ end;ȱȱȱȱȱȱȱȱȬ £ȱ £ȱ ûǯȱ ȱ ûȱ ȱ ǰȱ ǯȱ ǯȱ ȱ ûȱ ȱ ȱȱȱȱȱȱǰȱ ȱ ȱȱȱȱȬ ȱȱȱȱȱûDZȱȱ procedure TForm1.Button1Click(Sender: TObject);
//1. Kopfzeile
begin
//2. Kopfzeile
Showmessage('Der Buttopn wurde geklickt') end;
//Inhalt //Fußzeile
ȱ ȱ ȱ £ȱ ȱ ȱ Ȭȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱŘǯŞȱDZȱȱ ȱȱȱȱ£ȱ£ȱȱȬ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻShowMessageǼȱȱȱȱǯȱ
ȱȱ ȱŘǯŞDZȱȱûȱȱ£ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱȱȱ£ȱȱȮȱȱǰȱȱ ȱȱȱ§ǯȱȱ ȱ £ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȮȱȱȱȱȱȱǻ Ǽȱǯȱȱ đȬȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ Ȭ £ȱãȱ ȱȱȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject)
// 1. Kopfzeile
begin showmessage('Der Button wurde geklickt') end;
//Inhalt
ŘǯŘȱȱȱ£ȱ£ȱȬȱ
řś
ȱ ȱ ȱ ȱ ȱ ȱ ȱ tDzȱ ȱ £ȱ ¡ȱ ȱûȱ£ȱȱȱȱȱȱûǯȱȱtȬ ȱȱȱǰȱ ȱ ȱȱ£ȱ ûǰȱûȱ£ȱ ǯȱȱ procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(‘Der Button wurde geklickt‘)
//Inhalt
end;
ȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ Ȭû ãȱ beginȱȱend;ȱȱȱȱȱȱ£ȱDZȱ procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(‘Der Button wurde geklickt‘) end;
ȱȱȱȱȱȱȱ£ǯȱȱȱȱȱȬ £ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ Ȭ ǰȱ ȱ ȱ £ȱ £ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ȱȱȱȱǯȱ ȱ ȱ ShowMessage(‘Der Button wurde geklickt‘)ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ShowMessageȱ ǯȱ ȱ ȱ ȱ ¡ǰȱ ȱ ȱ ȱ Ȭ ȱȱǰȱȱȱ ȱ‘ ‘ȱ£ȱǻȱȱȱ ȱȱȱȱȱȱ#ȱȱ£ȱǼǯȱ ȱ
2.2.2
Textfenster ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱ!Dateien für Kapitel 2!!ȱȱzipȬȱ DKap02.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap02 ȱȱȬȱ proj_222.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap02 ȱȱȱproj_222.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱ¡ȱȱȱȱ£ȱǻȱȱȱȱ ȱȱȱ Edit1Ǽǰȱȱȱȱȱ ȱȱȱȬ ȱ Textȱ ûȱ ȱ Ȭȱ ȱ ǰȱ £ȱ ȱ ǰȱ Ȭ ȱ ǻȱ ŘǯşǼǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡Ȭ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ £ȱ £ȱ Ȭȱȱ¡ǯȱȱȱ ȱȱ ȱǵȱȱȱ ȱȱȱȱǮȃȱȱãȱ ȱȱȱȱ ȱȱEdit1Changeȱǯȱ
řŜ
Řȱȱǰȱǰȱ£ȱ
ȱ đǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ §ȱ£ ǰȱǯȱǯȱȱȱChangeȱǻ Ǽȱȱȱ¡Ȭ ǰȱ ȱȱ§ȱȱȱûȱȱȱȱ ǯȱȱ
ȱȱ ȱŘǯşDZȱȱ¡ȱǻEditǼȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ûȱ ȱ ȱ £ȱ DZȱ procedure TForm1.Edit1Change(Sender: TObject); begin ShowMessage('Es wurde geändert')
// Inhalt
end;
ȱ ȱûǰȱȱȱ ȱ§ȱǰȱȱȱȱ Ȭ ȱ ȱ ȱ ¡¡ȱ ȱ ȱ £ȱ ûȱ ȱ £ȱ ûǯȱȱȱ ȱȱȱȱȱȱȱ ǯȱ
2.2.3
Checkbox DZȱȱ£ ȱ ȱ ȱȱȱȱȬ ¡ȱȱ§ȱȱȱȱ£ȱȱȱȱǵȱȱ procedure TForm1.CheckBox1Click(Sender: TObject); begin ShowMessage('Es wurde geklickt')
// Inhalt
end;
ûȱȮȱȱȱȱ £ȱȱȱDZȱȱȱȱȬ ȱ ¡ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ûȱ Ȭ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ¡ȱ £ǰȱ ȱ ǰȱ ȱȱȱ ȱ ǯȱ ȱȱ ǯȱ
2.2.4
Scrollbar ûȱȱȱȱȱȱȬȱȱȱ ȱȱ ȱȱǯȱȱȱȱȱȱȱ Ȭ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ ȱ £ ȱȱãDZȱ
ŘǯŘȱȱȱ£ȱ£ȱȬȱ
řŝ
procedure TForm1.ScrollBar1Change(Sender: TObject); begin ShowMessage('Es wurde am Regler geschoben')
// Inhalt
end;
2.2.5
Radiobutton ûȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǰȱ Ȭ ȱȱȱȱ£ȱȱȱ ȱǻGroupBoxǼǰȱȱȱȱ ȱ ȱȱȬǯȱȱ ȱ§ȱȱȱȱ£ãȱȱȱ£DZȱȱ procedure TForm1.RadioButton1Click(Sender: TObject); begin ShowMessage('Es wurde geklickt')
// Inhalt
end;
2.2.6
Label ȱ ȱȱ ȱǰȱ ȱ ȱȱȱȬȱ£ȱ ȱȱȱ ǵȱȱȮȱȱȱȮȱ ȱ£Ȭ ȱȱȱȱȱȱ ȱȱȱ£ȱȱȱ ûǵȱȱ ȱȱ ȱȱȱȱ£ǰȱȱ ȱ£ǯȱȱȬ ȱȱȱ DZȱ ǯȱȱ£ȱȱȱȱȱǵȱȬ ȱȱȱȱǵȱȱ £ȱȱȱ ȱȱȱȱûȱȱȱȱȬȬ ȱǯȱȱ ȱȱûDZȱ Label1Clickȱȱȱȱ £ȱ ȱȱûȱȱ£ǯȱȱȱȱȬȬȬ ǯȱȱ ȱȱ£ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ǰȱ ȱ ȱ ǰȱ ȱ ȱ ȱȱȬȱȱȱǯȱȱȱ
2.2.7
Formular ȱ ȱȱ ȱȱȱȱȱȱȱȱ ȱȱ ȱ£ȬDZȱȱ procedure TForm1.FormCreate(Sender: TObject); begin // Inhalt end;
řŞ
Řȱȱǰȱǰȱ£ȱ
ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ǰȱ ȱ £ȱ ǻCreateǼȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ £ȱ Ȭ ȱ§ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ Ȭ ǰȱ ȱ ȱ ûȱ ǰȱ ȱ ȱ ȱ ȱ ǯȱȱ ȱȱǰȱ§ȱȱȱŚǯŝǯśǰȱ ȱǯȱȱ
2.3
Einfache Ereignisprozeduren zu Nicht-Standard-Ereignissen ȱ§ȱȱûǰȱûȱ ȱȱȱȱȱ£Ȭ ȱȱǵȱȱ ȱ ȱ DZȱ ûȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱǵȱȱ ȱ ȱ ȱȱǰȱ ȱ ȱȱȱȱ ȱȬȬ ȱ£ȱãǯȱ
2.3.1
Reaktionen auf Mausbewegungen ȱȱ£ȱǰȱ ȱ ȱ ȱȱȱȱ ǰȱ ȱǰȱ ȱȱ£ȱȱȱȱûȱȱȱ ǵȱȱ ȱȱûȱ£ȱ ȱ DZȱ ȱ DZȱ ȱ ȱ ûȱ ȱ ãȱ ȱ ǰȱ £ȱ ȱ ȱûȱȱȱȱ£ȱȱ£ȱãȬ ǵȱȱ ȱDZȱȱ§ȱȱȱȱȱûȱȱ£ǵȱȱ ȱ ȱȱȱ ȱ£ȱDZȱȱ ȱ ȱȱȱȱȱȱ£ȱȱǻ£ǯȱǯȱȱȱȬ ȱ NORD ȱǼǰȱ §ȱ ȱȱȱȱȱȱȱȱ tȱ ȱǯȱȱ ȱȱȱȱǰȱȱȱȱȱȱȱȬǰȱǯ!!ǯȱ ȱȱȱȱȱ£ ȱȱǰȱûȱȱ ȱȱȱȬ ȱ ȱ ãǯȱ tȱ ȱ ȱ ȱ §ȱ ȱ ȱ Ȭ ȱ ȱȱȱȱ ȱȱ£ȱǻȱȱ ŘǯŗŖǼǯȱȱ ȱ ȱ ȱ ȱ ãȱ ȱ DZȱ ȱ ȱ ȱ ȱ £ȱ Ȭ ȱ ȱ ȱ ȱ Dzȱ ûȱ ȱ ãȱ ȱ ȱ £Ȭ ȱǯȱȱȱȱȱȱȬȱ ǰȱȱȱ ûȱȱȱȱȱǯȱȱ
Řǯřȱȱȱ£ȱ£ȱȬȬȱ
řş
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ Ȭ Ȭǯȱȱ DZȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ¢ȱȱ§ȱȱȱȱȱ ȱȱ ȱȱȱǯȱȱãȱûȱȬȱ ȱȱ§ȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ £ ȱ ȱ Onȱ Ȯȱ ȱ ȱ ȱ ȱ û£ȱȱbeiǯȱ ȱȱȱȱȱ ȱȱȱ OnMouseMoveǯȱȱDZȱȬȬ ǯȱȱȱ ȱȱǰȱ ȱ ȱǯȱȱ ȱȱȱȱȱ DZȱȱãȱȱȱ£ȱȬ ȱ ȱûȱȱȱȱ£ȱǯȱȱ
ȱȱȱ ȱŘǯŗŖDZȱȱȱǰȱȱ ȱ £ȱ §ȱ ȱȱȱȱȱȱȱȱȱOnMouseMoveȱǯȱȱãȱȱȱȱȱ đȱȱǻȱŘǯŗŗǼǯȱȱ
ȱȱȱ ȱŘǯŗŗDZȱ ȱȱ ûȱȬȬȱȱ
ŚŖ
Řȱȱǰȱǰȱ£ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 2ȱȱȱzipȬȱ DKap02.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap02 ȱȱȬȱ proj_231.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap02 ȱȱȱproj_231.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ đȱȱ ȱ ȱ ȱ ȱ ȱ ȱ đȱ ȱ Ȯȱ ȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ ¡ȱȱȱȱȱ£ǯȱȱȱȱȱ£ ȱ ȱ ǯȱ ȱȱȱ £ȱȱȱȱ£ȱȱȱȱȱ ȱ ȱ ȱ ŗǰȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱûȱȱ£ȱ£ȱȱ ȱûȱȱǯȱ ûȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ǯȱȱ procedure TForm1.Button1MouseMove( Sender:TObject; Shift:TShiftState; X,Y:Integer ); begin ShowMessage('Der Mauszeiger bewegt sich über dem Button NORD') //Inhalt end;
ȱȱȱȱ £ȱȱȱȱ ûȱ£ȱ Ȭ Dzȱ ȱ ȱ Ȭ¡ȱ ȱ ȱ ȱ ãǯȱ ȱ tȱ ãȱ ȱȱȱȱȱȱȱ OST ǰȱȱ WEST ȱȱȱ SÜD ȱȱ ȱ ȱ ǰȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱȱȱ£ãȱ£ȱǰȱȱđȱ ȱȬ ȱȱȱȱǯȱȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ ûȱ ȱ ȱ ȱ ǵȱ ȱȮȱȱȮȱȱȱȱûȱȱǯȱȱȱȱȬȬ ǰȱ £ȱ ȱ ȱ £ȱ ȱ ȱ ǰȱ ȱ ǰȱ ȱ ǯȱ ȱ ȱ đȱ §ȱ ȱ Dzȱ ûȱ ȱ ȱ ȱ ȱȱOnMouseMoveȱȱȱǯȱȱȱȱȱȱȱǰȱ ȱ ȱ ûȱ £ȱ £ȱ ȱ ȱ ûȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǯȱ Ȭ ǵȱȱ
Řǯřȱȱȱ£ȱ£ȱȬȬȱ
Śŗ
ǰȱȱǰȱȱȱȱȱȱ£ȱShowMessageȱȬ ȱ ǰȱȱ ȱȱȱȱȱȱȱȱȱãǰȱȱ ûȱȱǯȱȱ ȱȱȱȱȱ OK ȱ§ȱȱȱȱȬ ȱ Ȯȱ ȱ ȱ ȱ ȱ ȱ £ǵȱ ûȱ Ȯȱ ȱ ûȱ ȱ ǯȱ ȱ ȱ ȱ £ûȱ ȱ ȱ ȱ ǯȱȱ ȱȱȱȱȱȱǰȱ ȱȱȱȱ ȱ đȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǯȱȱãȱǰȱȱȱȱȱȱǯȱ ûȱȱȱȱȱȱȱȱ£ȱ OnMouseDownȱ ȱ OnMouseUpȱ ãȱ ȱ ȱ ȱ ȱ Ȭ ǯȱȱ t£ȱ ȱȱȱȱȱȱȱȱDZȱȱ OnMouseDownȱ ƽȱ ȱ ûȱ ȱ ȱ ǰȱ §ȱ ȱ ȱ £ȱûȱȱȱȱȱȱǯȱȱ OnMouseUpȱƽȱȱȱȱȱǰȱ §ȱȱȱ£ȱ ûȱȱȱȱȱȱǯȱȱȱȱ ȱ
2.3.2
Reaktionen auf Tastendruck ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱ!!!!Dateien für Kapitel 2ȱȱȱzipȬȱ DKap02.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap02 ȱȱȬȱ proj_232.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap02 ȱȱȱproj_232.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱȱȱȱȱȱȱ¡ȱǻEditǼǰȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ§ȱǯȱȱȱ ȱȱȱȬȱȱ ȱ¡ǰȱ ȱȱȱȱȱŘǯŘǯŘȱȱȱǯȱȱ ȱȱȱȱDZȱûȱ ȱȱȱ ȱȬȬȱȱ ¡ȱãȱ ȱȱǵȱȱ ȱȱȱ ȱȱ ȱȱ§ȱǯȱûȱȱ £ ȱ ȱ ȱ ûǰȱ ȱ ȱ OnKeyPressǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ Ȯȱ ȱ ȱ ŘǯŗŘȱ ȱ ȱ ȱȱȱȱ đȱȱȱOnKeyPressǯȱ
ŚŘ
Řȱȱǰȱǰȱ£ȱ
ȱȱȱ£ȱȱ ȱȱȱȱȱȱ ȱ ȱ £ȱ ShowMessageǰȱ ȱ ȱ ȱ £ȱ ûȱ ȱ ȱ ȱ ȱȱ ǯȱȱ procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin ShowMessage('Eine Taste wurde gedrückt') end;
ȱȱ£ȱǰȱ ȱȱǰȱȱȱȱ ȱȱȱȱǯȱȱ
ȱȱ ȱŘǯŗŘDZȱȱȱ¡ȱ ȱȱȱȱShiftȱȬȱȱȱȱȱȱ StrgȱȱȱȱȱȬ ȱȱF1ȱȱȱ F12 ȱȱȱȱǯȱȱ ȱȱǵȱȱǰȱȱȱãȱȱȱȱȬ ȱ £ȱ ȱ ȱ ǰȱ ȱ ûȱ ȱ ȱ ȱ ¢Ȭ ȱ £ȱ ǰȱ ȱ đȱ ȱ ȱ ȱ ȱ ȱ ȱ §ǯȱ ûȱȱȱȱȬȱȱ OnKeyDownȱƽȱȱûȱȱ OnKeyUpȱƽȱȱȱȱ ȱ ȱ §ȱ ȱ ȱ ȱ Dzȱ ȱ £ȱ ȱȱȱȱ£ȱShowMessageȱȱȱûǯȱȱ ȱ
2.3.3
Fokus-Ereignisse ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 2ȱȱȱzipȬȱ DKap02.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap02 ȱȱȬȱ proj_233.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
ȱ
D8Kap02 ȱȱȱproj_233.bdsprojȱ£ §ǯȱȱ
Řǯřȱȱȱ£ȱ£ȱȬȬȱ
Śř
ȱ ȱ ȱ ȱ ȱ ȬȬȱ OnEnterȱ ȱ OnExitȱ £Ȭ ǰȱȱûȱȱȱȱǰȱûȱ ȱȱȱ ȱ ȱȱȱȱ§ǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ûȱ ǰȱ ȱ §ȱǰȱȱ§ȱȱȱȱȱȱȱ£ȱãǰȱȬ ȱ£ȱȱDZȱȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ Button1ǯȱ ȱ ȱ ȱ ȱ ¡ȱEdit1ȱǯȱȱ ȱ ȱȱȱȱȱǰȱȱȱȱ ȱ ȱȱ ȱ Scrollbar1ȱǯȱȱȱ ȱȱȱ Button2ȱȬ £ǰȱȱ£ȱȱȱ ȱȱȱȱ Checkbox1ȱǯȱȱ Ȭ ȱ ȱ ǰȱ ȱ ȱ Unitȱ ȱ Projektȱ ȱ ǰȱ ȱ ȱ ȱ ȱŗǯŘǯřȱȱ ǯȱȱ ȱ ȱȱȱ§ȱȱȱȱȱȱȱȱȱ ȱȱȱȱ F9 ȱȮȱȱ£ȱǯȱȱ ȱ ȱȱȱŘǯŗřȱȱDZȱȱȱȱȱButton1ȱ£ȱȱȬ ȱȱǯȱȱDZȱȱȱȱ£ȱȱǯȱȱ ȱȱ ȱȱȱ ȱȱȱȬȱȱȱȱȬ ǯȱȱȱȱ£ȱȱȱȱȱȱ£ ȱûȱȬ ǰȱ£ȱǯȱȱ ȱŘǯŗŚȱ£ȱǰȱ ȱȱȱȱȱȱȱ§DZȱȱȱ ȱȱȱȱ Button1ȱȱ ǰȱȱȱȱ Edit1ȱȱȬ ûȱȱǯȱ
ȱȱ ȱŘǯŗřDZȱȱȱȱȱ£ȱȱȱ
ȱȱ ȱŘǯŗŚDZȱȱ¡ȱ£ȱȱȱ ȱ
ŚŚ
Řȱȱǰȱǰȱ£ȱ
ȱ ȱŘǯŗśDZȱȱȱȱȱȱ
ȱȱ ȱŘǯŗŜDZȱȱȱȱȱȱȱȱȱ
ȱȱ ȱŘǯŗŝDZȱȱ¡ȱ ȱȱȱȱŘǯŗŚȱ§ȱDZȱȱǰȱǯȱǯȱȱȱȬ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ Ȭ ȱǰȱȱ£ȱ¡¡ȱ ǯȱȱ ȱ ȱȱȱȱ§ȱȱȱȱǵȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǵȱ ȱ ȱ Řǯŗśȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ǯȱ ǵȱ Ȭ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ£ǯȱ ȱ£ȱȱǯȱ ȱ ȱ ȱ §ǵȱ ȱ ȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ £ ȱ ȱȱȱȱ£ǯȱȱȱȱȱȱȬ ȱȱȱ£ ȱȱȱȱǻȱȱŘǯŗŜǼǯȱȱ ȱ £ȱ ȱ ȱ ȱ ¡ȱ ǰȱ ȱ §ȱ ǰȱ ȱ ȱ Řǯŗŝȱ £ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ǰȱȱȱûȱȱǰȱȱȱȱȱȱȱȬ ȱȱȱ ȱȱ ǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ Ȭ đȱǯȱȱ
Řǯřȱȱȱ£ȱ£ȱȬȬȱ
Śś
ȱȱ ȱȱȱȱ¡ǯȱȱ ȱȱȮȱȱȬ ȱȱȱ ȱǰȱȱȱ§ȱȱãǯȱȱ ȱȱ£ȱȱȱǰȱȱȱȱȱȱ£ȱȱȱ ȱȱȱDZȱȱȱȱȱȱ£ȱȱȱȱȬ ȱǰȱ£ȱȱȱȱ ǯȱȱȱȱȱȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭȱ ȱ ãȱ ȱ ȱ ȱ ȱȬȱȱ ȱǯȱȱ
ȱ ȱŘǯŗŞDZȱȱǮȱȃȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱȱ£ǯȱȱȱđȱȱȱ OnEnterȱȮȱȱȱȬ ȱȱȱȱȱȬȬȱ£ȱǯȱȱ ȱ ȱȱ£ȱȱȱȱ£ȱǰȱ ȱȱ ȱȱȱȱȱButton1ȱȱȱ§ǯȱȱȱ£ȱǵȱȱ ȱ ȱ ȱ Button1ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ȱȱȱOnEnterȱ §ȱǻȱŘǯŗŞǼǯȱ ȱȱȱȱȱ đȱǰȱȱȱȱ ȱȱȱûȱ ȱȱ£ǰȱȱ ȱ ȱȱȱȱȱȱȱ £ȱShowMessageȱûDZȱȱ procedure TForm1.Button1Enter(Sender: TObject); begin ShowMessage('Button1 hat den Fokus') end;
ȱ ȱ ȱ ãȱ ȱ ȱ ûȱ ȱ ȱ £ȱ £ȱ Ȭ ȱ OnExitȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǯȱ Ȭ ȱ ȱȱȱȱ£ȱȱ£ȱǯȱȱ procedure TForm1.Button2Exit(Sender: TObject); begin ShowMessage('Button 2 verlor den Fokus') end;
ŚŜ
Řȱȱǰȱǰȱ£ȱ
§ǰȱȱȱŚǯŚǰȱ ȱ ȱȱ£ȱ£ǰȱȱ ȱ£ȱȱȱ£ȱǰȱȱ¡¡ȱ£ȱǰȱȱȱȱ ȱȱ ûȱȱȱǯȱȱ ȱȱȱ£ȱȱȱȱȱȱȱ ȱ ȱȱ¡ȱȱȮȱȱȱãȱ ȱȱǯȱȱ Ȭ ȱȱȱ£ȱ£ȱȱȱ£ ǰȱȱ ȱȱȱȬ ȱȱ£ȱȱȱȱȱȱ£û£ǯȱ
ȱ ȱ£ȱȱȱȱȱȱ£ȱȱȱȬ ȱ£ûǯȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ Ȭ ȱ ǰȱȱȱǰȱ ȱȱȱȱ¡ȱǰȱȱ ȱ ȱ£ȱȱȱȱȱ§ȱ£ȱ§ȱǯȱȱ ȱȱȱȱȱȱ ȱȱȱȱ ȱȱȱ ȱȱȱȱȱȱ£ǯȱȱ ȱ ȱȱȱȱȱȱȱǰȱ ȱȱȬ ȱȱȱȱ£ȱ ǯȱȱ ȱ ǰȱ ȱ ȱ ££ȱ ûȱ ȱ ȱ ££ȱ ȱ ǰȱȱ ȱȱȱȱȱǯȱ ȱȱȱ ȱ§ȱȱȱȱȱ§Ȭ ǰȱ ȱȱȱŘǯŗşȱȱǯȱ
ȱȱȱȱ ȱŘǯŗşDZȱȱȱȱ§ȱ ȱȱ
ȱ
3
Weitere Bedienelemente ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱǰȱ ȱ ȱȱ£ȱȱȱǯȱȱ ȱ ȱȱȱ ȱȱǵȱȱȱ£§ȱ ȱ ȱ ãȱ ȱ ǰȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ Ȭ ǰȱȱȱȱ£§ȱȱȱûǯȱȱđǰȱȱȱȱ ûǰȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱ ȱȱȱȮȱȱȮȱȱȱȱȱȱȱDZȱȱ DZȱ ȱ ȱ ȱ ûȱ ȱ ûȱ ȱ ȱ ǵȱȱ ȱǰȱ ȱȱ£ȱȱȱȱȱ§ȱ ȱ ȱȱȱ¡ȱ§ȱȱ ȱȱȱȱ£ȱȱ ȱȱȱǯǯǯȱȱǯǯǯȱȱǵȱȱ DZȱȱ£ ȱȱȱȱǵȱȱȱȱûȬ ȱȬǰȱȱȱ ȱȱ ȱȱǰȱȱ ǰȱȱ ȱȮȱȱ ȱ ǰȱȱȱ¡ȱȬȬȱ ǻ£ǯȱǯȱ ǰȱǰȱȱȱǼȱ ȱǵȱ DZȱ ȱ ȱ ȱ ȱ ȱ ǵȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱãȱ ȱȱ£ȱȱȱȱ ShowMessageȬ£ȱȬ ǯȱȱ ȱ ȱ ȱȱȱ ȱ ǯȱ ȱ ȱȱȱȱǰȱȱȱȱȱȬ ȱ ǰȱȱ£ȱȱûȱȱ ȱǰȱȬ ȱ ȱȱȱȱȱȱȱãȱȱȱȱȬ ȱȱȱȱȱǯȱȱ ȱȱ ȱǰȱȱȱȱȱȱȱȱȱ ȱ£ȱǯȱ£ȱȱȱȱȱȬ ǯȱȱȱȱȮȱȱȱȱȮȱȱ ȱȱǯȱȱ ȱ ȱȱȱȱ£ȱǰȱ ȱȱȱ ȱDZȱȱ ȱȱȱȱȱǯȱǰȱ ȱȱ ȱȱ ǵȱȱȱ ȱ ǰȱ ȱ ûǰȱ £ȱ ȱ ȱ ȱ ȱ Ȭ DZȱȱ ȱ£ȱȱȱȱûȱȱȱȱȱȱȱȬ ȱǵȱȱ
ŚŞ
řȱȱȱȱ
3.1
Bedienelement Liste (ListBox) ȱ ȱȱǻ ȬǼȱǻListBoxǼȱȱȱȱȱ ǰȱûȬ ȱ ȱȱȱŝȱȱȱȱȱ ȱȱȬ ȱ §ȱ §ȱ ǻȱ řǯŗǼǰȱ ȱ ȱ ȱ ȱ ȱ ŞȦŘŖŖśȦŘŖŖşȱȱ ȱ ȱ ȱ ¢ȱȱ ȱ ȱ ȱ ȬDZȱȱȱ ȱȱȱ ȱřǯŗDZȱȱȱȱȱŝȱ£ ǯȱȱȱȦȱŞȦŘŖŖśȦŘŖŖşȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £Dzȱ ȱ ȱ ȱȱȱȱ ListBox1ǯȱȱ ãđȱ ȱȱǰȱđȱȱ§ȱ ûȱ£ȱȱ§ȱȱȱ ǯȱȱ ȱȱřǯŘȱȱ§ǰȱȱȱûȱȱȱȱȱȬ ȱȱȱȱǯȱ
ȱȱ ȱřǯŘDZȱȱȱListboxȱȱȱǻǼȱ £ȱãȱûȱȱ ȱǻColorǼȱȱȱȱǻFontǼǯȱȱ ȱãȱ ȱȱȱûȱȱ ȱǵȱȱ ȱřǯŘȱȱřǯřȱ£ȱȱDZȱȱȱȱȱItemsȱ£ §ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻTStringsǼȱ ǯȱ ȱ ãȱ ȱ ȱ Ȭȱ ǻȱ řǯřǼǰȱ ȱ ȱ ȱ Ȭ ȱȱȱȱ£ȱ§ȱȱ ȱãǯȱȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ENTERȬȱ ǯȱ
£ȱ §ȱ ȱ OK ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱǻȱřǯŚǼǯȱȱ
řǯŗȱȱȱȱǻ¡Ǽȱ
Śş
ǰȱȱȱȱ£ȱ§DZȱȱȱȱȱȱ ȱȱ ȱ ãȱ ǰȱ ûȱ£ȱǰȱ ȱ ȱȱ ȱ£ȱ ȱ ȱ £ȱ ȱ ȱ ǰȱ £ǯȱ ǯȱ Ȭǰȱ ȱ §ȱǯȱǯȱȱ ȱȱȱȱŚǯŝǯśǯȱ
ȱȱ ȱřǯřDZȱȬȱ ȱ ȱȱ ȱ ȱȱDZȱȱȱŘǯŘȱ ȱ ǰȱ ȱȱȱȱȱȱȱȱȱȱûȱȱȬ £ȱ£ȱȬȱDZȱȱ procedure TForm1.ListBox1Click(Sender: TObject); begin ShowMessage('Klick in der Listbox') end;
ȱDZȱȱȱ ȱȱ ǰȱȱȱȱȱ
ȱ ȱȱȬȱȱȱǯȱȱ
ȱ
t£ȱ ȱDZȱȱȱȱ£ȱȱȱ §ȱȮȱȱãȱ ȱȱǯȱ ȱ ȱȬȱDZȱȱȱ ȱȱȱ¡ȱ ǰȱȱȬȱȱȱȱȱȱǻȱřǯŚǼǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 3ȱȱȱzipȬȱ DKap03.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap03 ȱȱȬȱ proj_31.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
ȱ
D8Kap03 ȱȱȱproj_31.bdsprojȱ£ §ǯȱȱ
śŖ
řȱȱȱȱ
ȱ ȱȱȱȱȬDZȱȱ§ȱȱȱȱȬ ȱȱȱ ǰȱ§ȱǯȱ§ǰȱȱȱ ȱȱ ȱ¡ȱȱ ǯȱȱ ȱ ǰȱ ȱ ȱ ȱ §ȱ ȱ ûȱ ȱ ûǰȱ ȱ ȱ ȱûȱȱ ȱȱ ȱȱȱȱ ǯȱ
ȱȱȱ ȱřǯŚDZȱ ȱȱ ȱȱǮȬȃȱȱ tȱ ȱ ȱ ȱ ȱ ȱ ȬȬȱ ȱ ȱ ȱ ListBox1ȱȱ OnChangeǯȱȱ ȱȱǰȱȱȱãȱȱȬ ȱȱȱȱ ȱȱȱ ǯǯǯȱ
3.2
Bedienelement Combobox ȱ ȱȱȱ ȱǻComboBoxǼȱȱȱȱȱ Ȭ ǰȱûȱ ȱȱȱŝȱȱȱȱȱ ȱ £ ǯȱ ȱ ȱ Ȧȱ ŞȦŘŖŖśȦŘŖŖşȱ ȱ ȱ ȱ Standardȱ ȱȬȱȱȱ§ȱ §ȱǻȱřǯśǼǯȱ ȱȱȱ ȱřǯśDZȱ§ȱûȱȱȱ ȱǻComboBoxǼȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ǯȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ãǰȱȱȱȱřǯŜȱǯȱ
ȱȱ ȱřǯŜDZȱ ȱȱȱ£¡ȱȱȱ§ȱȱ
řǯŘȱȱȱ¡ȱ
ȱ
śŗ
ȱ ȱ ȱ Textȱ ȱ ȱ ȱ ǰȱ ȱ ȱ Ȭ ȱ DropDownCountȱ ǰȱ ȱ ȱ ȱ §ȱ §ȱ ǯȱ ȱ ȱȱȱ ȱ ȱȱ ȱȱȱûȱȱȬ ȱItemsȱȱȱȱȱȬȱǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 3ȱȱȱzipȬȱ DKap03.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap03 ȱȱȬȱ proj_32.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap03 ȱȱȱproj_32.bdsprojȱ£ §ǯȱȱ
ȱ ȱřǯŝȱ£ȱȱǰȱȱȱȱȱȱ ComboBox1ȱǰȱ £ȱ£ȱȱđȱȱ ȱȱȱǯȱȱ
ȱȱȱ ȱřǯŝDZȱȱ¡ȱ£ȱ£ȱ ȱ ȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ £ ȱ ȱ ãȱȱȱȱȱȬȱǯȱȱ ȱȱȱ ȱȱȱǰȱȱȱȱ ȱDZȱȱ procedure TForm1.ComboBox1Change(Sender: TObject); begin ShowMessage('Es wird irgendwas geändert') end;
ȱ ȱ§ȱȱȱ ȱǻChangeǼȱ£ȱȬȬ ȱ Dzȱ ȱ ȱ ȱ ȱ ȱ §ȱ ȱ ȱ £ DZȱ ȱȱ£ȱȱȱ§ȱȱȱȱȱ §Dzȱȱȱ ȱǰȱ ȱȱ£ȱȱȱȱ£ȱȱ§ȱ ǯȱȱ
śŘ
řȱȱȱȱ
3.3
Bedienelement Radiogruppe (RadioGroup) ȱ ȱȱȱȱȱŗǯŚǯřǰȱȱȱȱûȱȱȱ ¡ȱ ȬȬǰȱ ȱ ǰȱ ȱ ǯȱ ȱ Ȭ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱȱȱȱȱ ȱȱ ǯȱȱ ȱ ȱȱ ȱ £ ȱ ǰȱ ȱ ǰȱ ȱ ȱ ȱ řǯŞȱ£ȱǰȱȱȱȱȱ ǯȱ
ȱȱȱ ȱřǯŞDZȱ ȱȱȱȱ ȱ ȱãȱȱȱȱ£ȱȱȱȱȬ ȱ ȱ ȱ £ǯȱ ȱ ȱ ȱ ȱ ȱȱ ǻGroupBoxǼȱȱȱãȱȱǯȱȱȱȱ£ȱDZȱ£ȱȱ Ȭ ȱ§ȱȱȱȱȱǯȱȱ ȱȱ ȱ ȱ ǰȱ ȱȱ£ȱȱ §ȱǰȱ ȱ ȱ ȱ ȱ £ȱ DZȱ ûȱ ȱ ȱ ûȱ ȱȬȱȱȱȱȱȱ ȱŝŖȱȱûȬ ȱ ȱȱȱ procedure TForm1.RadioButton1Click(Sender: TObject); begin ShowMessage('1. Gruppe, oben, wurde ausgewählt') end;
ȱȱ ȱȱȱ procedure TForm1.RadioButton8Click(Sender: TObject); begin ShowMessage('3. Gruppe, unten, wurde ausgewählt') end;
ȱȱȱȱǯȱûȱȱȱȱȱȱȱ ǻRadioGroupǼȱ£ȱûǯȱ ȱȱȱ ȱřǯşDZȱȱǻȱŝȱ£ ǯȱȱȦȱŞȦŘŖŖśȦŘŖŖşǼȱ
řǯřȱȱȱȱǻ Ǽȱ
śř
ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱǰȱȱȱȱȱȱ ȱȱȱȱ£ȱ ȱ ȱǻȱřǯŗŖǼǯȱ
ȱȱ ȱřǯŗŖDZȱ£ȱȱȱȱȱȱ ȱȱãȱ£ȱȱûȱȱȱ Ȭ DZȱȱȱȱCaptionȱ ȱûȱȱȱȱ Ȭ ȱǰȱȱȱȱColorȱȱ ǯȱȱ ȱ ȱȱȱȱȱȱǻȱřǯŗŗǼǰȱȱ ȱȱ ȱȱȱȱȱȱȱȱ Itemsǰȱȱȱ ȱȱ ȱǻTStringsǼȱȱȱȱȱǯȱȱ
ȱȱ ȱřǯŗŗDZȱ§ȱȱȱȬȱ §ȱ ȱ ȱȮȱ£ȱȱȱȱȮȱȱ§ȱȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ §ȱ ȱ ȱ ǯȱ ȱ §đȱ ǰȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱȱȱ£ȱȱȱȱȱȱȱǰȱ ȱȱȱ ȬȬDZȱȱ procedure TForm1.RadioGroup1Click(Sender: TObject); begin ShowMessage('Innerhalb dieser Gruppe wurde irgendwie geklickt') end;
śŚ
řȱȱȱȱ
ȱȱȱ£ȱ£ȱȬǯȱȱȱŚǯŝǯŗȱ ȱ ȱ ȱǰȱ ȱȱ§ǰȱ ȱȱ §ȱ ǯȱȱ tȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ItemIndexȱ ǻȱ ȱ řǯŗŗȱȱ£ȱǼȱȱãȱǰȱûȱ£ȱǰȱȱȱȱȬ ȱȱ£ȱȱȱȱȱ ȱ §ȱǯȱȱ
ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 3ȱȱȱzipȬȱ DKap03.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap03 ȱȱȬȱ proj_33.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap03 ȱȱȱproj_33.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ §ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱŝŖȱȱȱȱȱ£ȱȱ §ȱǰȱȱȱȬ ȱ ItemIndexȱȱȱȱȱ£ȱ£ȱǻȱřǯŗŘǼǯȱȱȬ ȱȱȱȱȱȱȱûȱŗŖŖȱȱ£ȱȱȱ£ȱ §ȱǰȱ §ȱȱȱItemIndexȱȱȱȱ ȱ£ȱ £ǯȱȱ
ȱȱ ȱřǯŗŘDZȱ ȱȱȱ
3.4
Bedienelement Menü (MainMenu) ȱ ȱȱȱȱȱȱ DZȱȱȱ£Ȭ §ȱȱ£ȱȱȱûȱȱȱǯȱȱ£ȱȱȱ ãDzȱȱŝȱȱûȱȱȱȱȱȱ Ȭ ȱ£ ǯȱȱȦȱŞȦŘŖŖśȦŘŖŖşȱȱȱȱ Ȭ ȱȱȬȱȱȱ§ȱǯȱȱ
ȱȱ ȱřǯŗřDZȱ§ȱûȱȱȱǻ ȬǼûȱ
řǯŚȱȱȱûȱǻǼȱ
śś
ȱ ȱȱȱȱDZȱȱãȱȱȱ£§ȱ ȱ ȱ ûȱ ȱ ȱ ȱ Ȭûȱ ȱ ȱ ǻȱȱřǯŗŚǼǯȱȱ
ȱǰȱȱûǰȱȱȱȱȱȱûȱDZȱȱ
ȱȱ ȱřǯŗŚDZȱȱȱûȱ ȱ ŗDZȱ ȱ §ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ £Ȭ ȱǻ ȱ£ǯȱǯȱȱȱřǯŗśȱȮȱȱ ȱ ȱ£ȱ£Ǽǯȱȱ
ȱȱȱ ȱřǯŗśDZȱȱûȬ¢ȱ ȱȱ£ȱ ȱ ŘDZȱ ȱ ȱ ȱ ȱ £ãȱ ȱ ȱđȱȱȱItemsȱ §ȱǻȱřǯŗŜǼǯȱ
ȱȱȱ ȱřǯŗŜDZȱȱItemsȱȱ ȱ řDZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻMenüǼȱ ãȱ ȱ ûȬǯȱ £ȱ §ȱ ȱ ȱ ȱ ȱ ȱ Dzȱ ȱȱȱȱ đȱȱȱCaptionǯȱ ȱŚDZȱȱȱǰȱ đȱȱ ȱȱtȱûȱȱȱûȱȬ ȱȱȱEnterȱ§ǯȱȱȱȱȱȱǯȱȱ £ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ §ȱ ȱȱûȱǻȱřǯŗŞǼǯȱȱ
śŜ
řȱȱȱȱ
ȱśDZȱȱȱȱȱȱȱȱȱǮȃǰȱȱ ȱȱ ȱȱȱȱCaptionȱ ȱǰȱȱȱȱȱ§ȱȬ ȱȱûȱȱ ȱǻȱřǯŗşǼǯȱȱ
ȱȱȱ ȱřǯŗŝDZȱûȬȱ
ȱȱȱ ȱřǯŗŞDZȱȱȱû£ȱȱ
ȱȱȱ ȱřǯŗşDZȱȱȱȱûȱ
ȱȱȱ ȱřǯŘŖDZȱ§£ȱȱȱ Ȭûȱ ȱŜDZȱȱȱȱûȱȱȱȱȱȱȱȱȬ ȱ Ȭûǰȱȱȱȱ§ǰȱȱȱȱ§ȱ ǯȱȱ ȱȱȱȱȱûȱȱ ȱȱȱ£ȱȬ ȱȱȱȱȱȱȱ ȱ£ȱǯȱȱřǯŗşȱ£ǰȱȱ ȱȱȱûȱȱȱ£ȱȱǯȱȱ ȱȱ ȱ §ȱȱȱȱ ǰȱȱȱ ȱȱȱȱûȱȱǻȱřǯŘŖǼǰȱȱȱ ǯȱȱ ȱ
ȱ
řǯŚȱȱȱûȱǻǼȱ
śŝ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 3!ȱȱzipȬȱ DKap03.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap03 ȱȱȬȱ proj_34.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap03 ȱȱȱproj_34.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱȱȱȱ§£ȱ ǰȱđȱǰȱȱȱ ǯȱȱȱȱȱ ûȱ ȱ£ ȱȱ ȱȱǵȱȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ ǯǰȱ ǯȱ ǯȱ ȱ ȱ Ȭ ȱ ȱ ǰȱ ȱ ûǰȱ ȱ ȱ §ȱ ȱ Ȭ ȱûȱ£ȱȱȱȱȮȱȱȱȱȱȱûȱǯȱȱ ȱ ȱûȱ£ȱȱûǰȱȱûȱȱ ȱ ȱȱȱ§ȱ§ȱȱȱ Ȭûǯȱȱ£Ȭ ȱ ȱȱȱȱȬȱȱǯȱ ȱ ȱȱǰȱȱ ȱȱ ȱȱȱǯȱȱȬ ȱ ȱȱȱûȱȱ£ãȱ£ȱDZȱȱ procedure TForm1.Frankreich1Click(Sender: TObject); begin ShowMessage('Der Nutzer hat >Frankreich< ausgewählt’) end;
ȱȱǵȱûȱȮȱȱ ȱǯȱȱ §ȱ ȱ ȱ ȱ ȱ ȱ ¢ȱ ûȱ ȱ ûȱ ȱ ȱ ȱ ȱȱȱȱûȬǯȱȱ§ȱ ȱȱȱȱȬ û£ȱȱȱȱDZȱȱ Europa
&Europa,
Afrika
A&frika,
Asien
A&sien,
Amerika
A&merika
Australien
A&ustralien.
ȱȱȱ ȱȱǻȱȱřǯŘŗǼǯȱȱ ȱȱûȱȱ Alt ȱƸȱ ȱãȱȱ ûȱȱȱȱȱ §ȱȱ§ȱ ǯȱ ȱ
śŞ
řȱȱȱȱ
ȱ ȱřǯŘŗDZȱ ȱ ȱ
ȱ
4
Ereignisprozeduren: Verwendung von properties ȱȱȱȱǯȱȱ ȱȱ ǰȱȱȱȱȱȱȬ £ȱȱȱȱ ShowMessage(‘dies oder das ist passiert‘)
£ȱǯȱȱȱûȱȱȱǮȃǵȱȱ ûȱ ȱȱȱȱȱǵȱȱ ȱǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ û ǯȱȱãȱȱȱȱǰȱǰȱ¡Ȭ ǰȱ¡ǰȱǰȱ ȱȱȱȱȱȱ£ȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱȱǯȱȱ ȱãȱȱȱȱȱǰȱ¡ǰȱȬ ȱȱȱȱûȱȱȱ£§ȱǯȱ ȱ ȱ ȱȱǰȱ ȱ ȱûȱǰȱ ȱȱ£ȱȱȱȱ ȱǰȱȱȱ£ȱãDZȱȱȱûȱȱȱȬ £ȱȱ£ȱǰȱȱȱȱ£ȱǯȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ǯȱ ȱ ȱ ȱ ȱ ǯȱȱ ȱȱȱȱȱȱȱ ȱŘǯȱȱ
4.1
Einfache Mitteilungen ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱǯȱȱȱ ȱȱûȱǯȱȱ ȱŚǯŗȱ§ȱȱȱDZȱȱ£ȱȱȱȱȬ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ûȱ ȱ Ȭ ǯȱȱǯȱ
4.2
Passiver Zugriff auf Datenkerne ȱ¢ȱǻǼȱȱȱȱǰȱȱȱ ȱ ȱȱȱȱȱ£ȱȱȱȱ£ȱ Ȭ ȱǯȱȱȱȱ£ȱ ȱ ǯȱ ȱ ȱ£ȱǰȱ ȱȱ£ȱȱȱȱȱȬ ȱȱǯȱȱ ȱȱ
ŜŖ
Śȱȱ£DZȱ ȱȱȱ
ȱȱ ȱŚǯŗDZȱ£ȱȱȱ
4.2.1
Eigener Datenkern ȱȱ ȱȱȱȱȱûȱȱȬ ȱȱûȱȱȱȱ ȱDZȱȱȱȱȱȱ £ȱȱȱǯȱ ȱ ȱ ȱȱȱȬ ȱȱȱǰȱȱȱȱȱ¡ȱǻȱŚǯŘǼȱȱ ȱ¢ȱTextȱȱ ȱǯȱȱ
ȱȱ ȱŚǯŘDZȱȱȱ¢ǰȱȱȱȱ£ȱȱȱ ȱȱȱ¡ȱȱȱ ȱȱǯȱȱ ȱ ȱ ǰȱȱȱ¢ȱȱ£ ȱ ǰȱãȱ ȱȱ Textȱȱȱ ȱȱȱȱȱȱȱȱȱǯȱȱ ȱȮȱǯȱȱȱȱûȱȱȱ£ ȱȱ ȱ¡ǰȱǯȱǯȱûȱȱȬǰȱȱȱȱǻȬ ȱȱŘǯŘǼǯȱȱ
ŚǯŘȱȱȱȱȱȱ
Ŝŗ
ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ Edit1ȱ ȱ ȱ ȱȱ¢ǰȱȱȱ ȱȱȱ TextȱȱȱȱȬ ȱȱȱǰȱȱȱȱ£ȱǯȱȱ ȱȱ ǰȱ ȱȱȱ DZȱ procedure TForm1.Edit1Change(Sender: TObject); begin ShowMessage('Inhalt aktuell: '+ Edit1.Text)
ȱ
end; ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_421.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_421.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ǰȱ ãȱ ȱ ȱ ȱ Śǯřȱ ȱ ȱ §£DZȱ ȱ ȱȱȱȱȱȱ£ȱȱ£ǯȱ
ȱȱ ȱŚǯřDZȱȱȱȱȱȱȱ
ŜŘ
Śȱȱ£DZȱ ȱȱȱ
ȱ ȱȱȱȱȱ£ȱDZȱȱȱ ǰȱȱȱ £ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ Edit1ȱ ǰȱ ȱ ȱ £ȱȱȱ§ȱǯȱȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻ¢Ǽȱ Textȱȱȱȱȱ¡ȱȱȱȱȱȱȱ ȱ¡ȱȇȱDZȱȇȱȱȱǯȱȱ ȱŚǯŚȱȱȱǰȱȱȱ£ȱȱȱ£ȱȱȱ ȱ ȱ ȱ Ȭȱ ãȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ Ȭ ǯȱȱ
ȱȱȱ ȱŚǯŚDZȱûȱȱ£ȱȱ ȱ£ ȱDZȱȱȱȱǰȱȱȱ¢ǰȱ ȱȱ ȱȱȱȱȱȱȱȱȬȱ£Ȭ ȱ ȱ ǰȱ ȱ ȱ Captionȱ §ȱ Ȯȱ ȱ ȱ ȱ ȱ Ȭ ȱ £ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ Ȭ ȱȱǯȱȱ
ȱȱȱ ȱŚǯśDZȱȱûȱȱȬȱȱ t£ȱ ȱ DZȱ £ȱ ȱ £ȱ ȱ £§£ȱ £ȱ ȱ ¡Ȭ ȱ Edit1ȱȱȱǻȱȱȱȱȱȱButton1Ǽȱȱȱ ȱȱȱȱǯȱȱãȱ ȱûȱǰȱȱ ȱ ȱȱ£ȱȱȱȱǻȬǼȱȱȱȬ ȱûȱȱȱȱȱȱ DZȱȱ
ŚǯŘȱȱȱȱȱȱ
Ŝř
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Beschriftung:'+ Button1.Caption) end;
ȱŚǯśȱ§ȱǰȱȱȱȱȱǰȱ ȱ ȱȱȱȬ ȱǯȱȱ
ȱ ȱ£ȱ DZȱȱ ȱûȱ ȱȱȱȱȱȱǰȱȱȬ ȱȱ ȱ ȱȱ ǯȱȱ ȱȱãȱȱ ȱȱȱȱǻȱȱȱ £ȱȱȱȱȱǼȱȱȱȱȱȬ ȱ ŗǯŚǯŘȱ §ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱ
ȱȱ ȱŚǯŜDZȱȱȱȱȱȱ ȱȱȱȱȱȱȱȱ ȱȱȱ £ȱ ȱ£§£ȱ ȱ ȱ ȱ ȱ ǻ¢Ǽȱ Nameǰȱ ǯȱ ǯȱȱȱ ȱ ȱ ȱȱNameǰȱ£ȱǻȱŚǯŜǼǯȱ ȱȱȱȱȱȱǯȱȱãȱ£ȱ ǯȱȱ ȱȱȱȱȱȱȱȱ¢ȱǻǼǰȱȱ ȱȱȱȱȱǯȱȱ ȱ ȱ ȱ ¢ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱǰȱȱȱȱȱȱ ǯȱȱ ȱȱȱǰȱȱȱȱȱȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱǯȱȱȱȱȱ ǯȱȱ ȱȱŚǯŝǯřȱȱ ǰȱ ȱȱȱȱ ȱȱȱ ǯȱ ȱ ȱ ¢ȱ ȱ ȱ ǻȱ ¡Ǽǰȱ ȱ ȱ ȱ ȱ ShowMessageȬ£ȱȱ ȱ ǰȱȱȱȱȱȬ ȱ§ȱȱ¡ȱȮȱȱȱȱǯȱȱ ȱ£ȱȱȱȱȱ£ǯȱ
ŜŚ
Śȱȱ£DZȱ ȱȱȱ
4.2.2
Datenkerne fremder Objekte ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱǵȱȱȱ ȱǵȱ ȱ ȱŚǯŝȱ££ȱ ȱȱ ǰȱȱȱ ȱ ȱ ȱ ȱ ȱȱû£ǰȱȱ ȱûȱȱȱ£ȱûǯȱȱ
ȱ ȱŚǯŝDZȱ£DZȱȱȱȱȱȱȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱǰȱȱ¡ǰȱȱ¡ȱȱȱȱȱȬ ȱȱ£ ǯȱȱȱǻȱŚǯŞǼǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱ¡¡ȱ ȱȱ ȱ ȱ ȱ ǰȱ ¡ȱ ȱ ȱ £ȱ Ȭ ǯȱȱ
ȱȱȱ ȱŚǯŞDZȱ£§ȱ
ŚǯŘȱȱȱȱȱȱ
Ŝś
ȱ ȱ ȱ £ãȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱǵȱȱûȱȱȱȱ ȱȱȱȱȬȬ ȱȱ ȱȱ£ ǯȱȱȱȱ¡ȱȱȱȬ ȱȱ DZȱȱ procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Label1.Caption
+ Edit1.Text +
Checkbox1.Caption + RadioButton1.Caption) end;
ȱ ȱȱȱȮȱȱȱŚǯşȱȱ ȱǯȱ
ȱȱȱ ȱŚǯşDZȱ ȱȱȱȱ
ȱ
ȱȱ£ȱ ȱȱȱȱȱȱûȬ ȱǰȱȱȱȱǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4!ȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_422.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_422.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱǰȱȱȱȱȱȱȱ ǰȱ ȱȱ ȱ Śǯşȱ ȱ ȱ ǯȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ ȱǯȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ Ȭ ȱ ¡ȱ '>>',ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ǰȱ ȱǰȱ ȱȱȱŚǯŗŖȱȱ ȱǯȱȱ
ŜŜ
Śȱȱ£DZȱ ȱȱȱ
ȱprocedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Label1.Caption+'>>'+ Edit1.Text+'>>'+ Checkbox1.Caption+'>>'+ RadioButton1.Caption ) end;
tȱȮȱ ȱȱȱȱ£ȱȱ ȱȱȱȱȬ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ Ȭ ȱǰȱđȱȱȱǻȱŚǯŗŗǼǯȱȱ
ȱȱ ȱŚǯŗŖDZȱȱȱȱûȱȱ¡ȱȱ
ȱȱȱ ȱŚǯŗŗDZȱûȱûȱȱȱȱ
ȱȱ
4.3
Aktiver Zugriff auf Datenkerne
4.3.1
Eigener Datenkern ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_431.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
ȱ
D8Kap04 ȱȱȱproj_431.bdsprojȱ£ §ǯȱȱ
Śǯřȱȱȱȱȱȱ
Ŝŝ
ȱ£ȱȱȱȱȱȱȱ£ȱãȱȬ ȱ ȱ ãDZȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ §ȱȱȱȱȱStart ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Stop ȱ §ǯȱ ȱ ȱ£ȱȱȱ£ǯȱȱ procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption:='Stop' end;
ȱȱȱ£ȱȱȱȱȱȱ Button1.Caption:='Stop'
ȱȱȱ ǯȱȱȱȱǰȱȱȱȱǯȱȱȬ ȱDZƽȱ ȱȱȱȱǯȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ¡ȱ ‘Stop‘ȱ ȱ ȱ ȱ ǻ¢Ǽȱ Captionȱ ȱ ȱ ȱ ȱ ȱ ȱ Button1ȱ ȱȱ ǯȱ ȱȱȱ¡ȱȱǰȱ ȱȱȱȬ ȱȱ§ȱȮȱȱȱ ȱǻȱŚǯŗŘǼǯȱ ȱ đȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ûȱ ȱǯȱȱǵȱtȱ DZȱȱ£ ȱ ȱ ȱ ȱȱ ȱ¡ȱ ‘Stop‘ȱȱȱ£ȱȱȱȱǯȱȱ ȱȱȱǰȱ ȱȱȱȱȱȱȱ§ǯȱȬ ȱȱǰȱǰȱûȱ ȱ ǯȱȱȱȱȱȱ ǰȱ ȱȱȱȱǯȱ
ȱȱȱ ȱŚǯŗŘDZȱȱȱȱȱȱ ȱȱȱȱ
4.3.2
Datenkerne fremder Objekte £ȱ ȱ ȱȱ ǯȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ £ȱȱȱȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ £Ȭ ȱ ǯȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȯȱ ȱ Ȭ ȱȱ£ȱȱȱȱȱ££ȱȱȱŚǯŝȱ£ǯȱȱ ȱȱȱ£DZȱȱ£ȱ ȱȱȱȱȱ ȱ ȱȱǯȱȱȱȱǯȱȱ
ŜŞ
Śȱȱ£DZȱ ȱȱȱ
ȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_432.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_432.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ ǻǼȱ ȱ ȱ ȱ ȱ ȱ ȱȱãȱȱǯȱȱãDZȱ procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:='Uenglingen' end;
§ȱDZȱȱȱȱ ȱ£§£ȱȱ£ ȱȱȱ ȱ ȱ ȱ ǯȱ ȱ ȱ DZȱ ¡Ȭ ƽŗŖŖǰȱ ƽŖǰȱ ƽŖȱǻ ȱ ȱ ȱ ȱ ȱ ȱȬ ȱ Maxǰȱ Minȱȱ PositionȱǼǯȱDZȱȱ ȱȱȱȬ ȱȱȱȱȱȱȱŝśȱ ǯȱ£DZȱȱ procedure TForm1.Button2Click(Sender: TObject); begin ScrollBar1.Position:=75 end;
ȱ ȱ ȱ ȱ ȱ ǻȬǼȱȱ ȱ ȱ ȱ Dzȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ǯȱ
ȱȱ ȱŚǯŗřDZȱȱȱȱȱ ȱ ȱ§ȱȱ ȱ ȱȱȱȱȱŚǯŞȱȱãǯȱȱ ȱȱȱȱȱȱ ȱȱȱǰȱȱ¡ǰȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ ȱǻȱŚǯŞǼǯȱ
Śǯřȱȱȱȱȱȱ
Ŝş
ȱ ȱ ȱ Nordenǰȱ Westenǰȱ Ostenǰȱ ȱ ¡ȱ ȱ ȱ ȱ ȱ Südenǯȱȱ ȱȱȱȱǻȬǼȱȱȱȱ ȱȱNordǰȱWestǰȱOstȱ£ ǯȱȱȱSüdȱȱǻȱŚǯŗŚǼǯȱ
ȱȱȱ ȱŚǯŗŚDZȱȱȱȱȱ ȱȱȱȱ ȱ ȱ £ãȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ£ ȱȱ ǯȱȱ ȱȱȱȬ ȱȱȱȮȱȱȱȱȱȱȱȱȬ £ǯȱȱ procedure TForm1.Button3Click(Sender: TObject); begin Label2.Caption:='Nord';
//Trennzeichen nötig
RadioButton1.Caption:='Ost';
//Trennzeichen nötig
Edit1.Text:='Süd';
//Trennzeichen nötig
CheckBox1.Caption:='West' end;
ȱ ȱȱDZȱȱȱ£§£ȱȱ ȱȱȱȬ ȱǻǯȱǯȱȱȱǼȱȱ¡ȱȱ ȱȱȱȱȱ ȱȱǻȱŚǯŗśǼǯȱȱ
ȱȱ ȱŚǯŗśDZȱȱȱ ȱȱȱǰȱ ȱȱ
ŝŖ
Śȱȱ£DZȱ ȱȱȱ
ȱ ȱ ûȱ ȱ ûȱ ȱ ȱ ȱ £§£ȱȱȱ£ȱǵȱȱ ȱ ȱȱ£ȱȱãȱǯȱȱ procedure TForm1.Button3Click(Sender: TObject); begin Label2.Caption:='Nord';
//Trennzeichen nötig
RadioButton1.Caption:='Ost';
//Trennzeichen nötig
Edit1.Text:='Süd';
//Trennzeichen nötig
CheckBox1.Caption:='West';
//Trennzeichen nötig
Checkbox1.Checked:=True;
//Trennzeichen nötig
RadioButton1.Checked:=True end;
ȱȱ ȱȱȱ Trueȱȱȱȱȱȱȱ£Ȭ ȱ ȱǵȱȱ ȱ ȱȱȱ ǰȱ ȱǰȱȱȱ ȱ ȱȱûȱ¡ȱȱǯȱȱȱ ȱ£ǰȱȱ ȱ ȱ ȱ ǻǼǰȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ǻȱ Ǽǰȱ ȱ ȱȱ ȱ ȱ Checkedȱ ãȱ ǻȱ ŚǯŗŜDzȱ Ȭ ȱȱȱȱŘǯŚǯřǼǯȱȱȱ
ȱȱȱ ȱŚǯŗŜDZȱ¢ȱȱ¡ȱȱȱ ȱȱȱ£ȱǵȱȱ¢ȱ CheckedȱȱȱȱȬ ȱȱȱȱȱ ȱȱ FalseȱǻǼȱȱ Trueȱǻ Ǽȱȱ ǯȱȱ £ȱȱȱȱDZȱȱȱȱȱȱ ȱ ȱȱǻǯȱȱřǯřǼǰȱȱȱȱȱȱ£ȱȬ ȱ§ǯȱȱȱȱ£ȱȱȱȱ ȱȱ£ǯȱȱ
Śǯřȱȱȱȱȱȱ
ŝŗ
ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻȬǼȱ ȱ ȱ ȱȱ §ȱȱȱȱǰȱȬ ȱȱȱǰȱǯȱȱȱȱ£ȱȱȱǰȱȱ ȱ ȱȱȱǻȱȱ£ȱ ȱȱǼȱȱȱ£ȱȬ ȱȱǻȱŚǯŗŝǼǯȱȱ
ȱȱȱ ȱŚǯŗŝDZȱȱȱȱȱȱȱ ȱȱûȱȱ£ȱȱȱǰȱȱȱȱȱȱȬ Ȭȱȱȱǯȱȱ ȱ ȱȱȱ ǵȱȱđȱȱȱȱǻ¢Ǽǵȱȱ ȱ ȱȱȱȱȱȱȱǰȱȱ ȱȱȱȱȱȱ£ǯȱȱŚǯŗŞȱ£ȱȱȮȱȱȱȱȬ ȱItemIndexǯȱ
ȱȱ ȱŚǯŗŞDZȱ£ȱȱȱȱȱȱȱȱȱ ȱȱDZȱȱȱ ItemIndexȱȱȱ£ȱǯȱȱȱȱ ǰȱ ȱ ȱ ȱ ¢ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱȱȱ£ ȱ ǯȱ ȱȱȱȱǯȱȱ
ŝŘ
Śȱȱ£DZȱ ȱȱȱ
ȱȱȱǵȱǰȱ ȱȱȱȱȱǰȱȱȱȱȱ §ȱǯȱȱȱȱ procedure TForm1.RadioGroup1Click(Sender: TObject); begin RadioGroup1.ItemIndex:=0 end;
ȱ ȱ£DZȱȱ ȱ ȱ ¢ȱ ȱ ¡ȱ ǻȱ Ǽǰȱ ȱ ȱ ȱ ȱ ǻȬǼȱȱȱ ȱȱȱ¡ȱǰȱȱȱȱȬ ȱ ȱ‘ȱȱ‘ȱǯȱ ȱȱ¢ȱȱ£ȱǰȱȱȱȱȱȱȱ Ȭ ȱȱ£ȱȱǯȱ ȱȱ¢ȱȱ ǰȱȱȱȱȱȱȱȬ ȱ ȱTrueȱȱFalseȱǯȱȱ ȱ £ȱ £ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱFlensburgȱǰȱȱGarmischȱǰȱȱGörlitzȱȱȱȱAachenȱȱ£Dzȱȱ ȱȱȱButton4ȱȱButton8ǯȱȱȱȱȱȱ£ȱȱ Ȭ ȱǰȱȱȱȱȱǯȱȱȱȱȱȱȱLabel3ǯȱȱ ȱȱDZȱȱȱ£ȱûȱȱȱȱ ǰȱȱȱȬ ȱ ȱ ȱ ȱ ȱ Ǯûȃȱ ȱ Dzȱ ȱ ȱ £ȱȱûȱȱ ȱ ǰȱȱǮȃȱȱȬ ȱǯȱ ȱ§ȱȱ ȱȱȱȱŘǯřǯŗȱãǰȱȱȱȱ ȱȱȱȱȱǯȱȱȱȱǰȱȱȱ£Ȭ Ȭ ȱȱȬȱǯȱ ȱȱ ȱȱȱ ȱȱȱ ȱȱȬ ȱȱûȱȱûȱȱûȱ£ǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¢ȱ Captionǰȱȱȱ ȱȱȱȱ ȱȱȬ Ȭȱ ǰȱ §ȱ ȱ ǯȱ ȱ ȱ ȱ ǰȱ ȱ ȱãȱ ȱȱȱûȱȱ£ȱDZȱȱ procedure TForm1.Button4MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label3.caption:='Flensburg' end;
ŚǯŚȱȱȱȱȱȱȱȱ
ŝř
procedure TForm1.Button5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label3.caption:='Görlitz' end; procedure TForm1.Button6MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label3.caption:='Garmisch' end; procedure TForm1.Button7MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label3.caption:='Aachen' end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label3.Caption:='Deutschland' end;
ȱȱȱȱãȱ ȱȱǰȱȱȱȱȱȱ£Ȭ ȱ ȱ ȱ ǵȱ £ȱ ûȱ ȱ ȱ ȱ Ȭ ȱ£ ȱ beginȱȱ end;ȱǰȱȱȱȱȱ£§ȱ ȱ ȱ §ǰȱ ȱ ȱ ȱ ȱ ȱ ǯȱ tȱ Ȯȱ ȱ ȱȱȱȱ£ǰȱ ȱȱ£ȱȱ£ȱûȱȱ ȱȱ ȱ ǵȱûDZȱǮȃǯȱȱ
4.4
Aktiver und passiver Zugriff auf Datenkerne ȱ ȱ ǰȱ ȱ ȱ ȱ ǻǼȱ £ǰȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱȱ ȱǮ£ȃǰȱ ȱȱ ǰȱ ȱȱȱ£ǰȱȱȱȱȱȱȱȱȬ ȱ ȱ ȱ Ǯ£ȃȱ Ȯȱ ȱ ȱ ȱ ȱ ǰȱ ȱ £ȱ ǵȱȱ §ȱ ȱ ȱ ȱ £ûȱ £ȱ ȱ Śǯŝȱ ȱ ȱ ŚǯŘǯŘǯȱ ȱ Ȭ ȱȱȱȱȱǰȱȱȱȱȱǯȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱȱȱǷȱȱ
ȱ
ȱ ȱ £ȱ ȱ ǯȱ ȱ ȱ £ȱ £ ȱ ûȱ ȱ ǯȱȱ
ŝŚ
Śȱȱ£DZȱ ȱȱȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_44.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_44.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱ£ȱȱȱȱȱȱȱȱȱ§ȱǻȬ Ǽǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱ ȱȱ£ȱȱȱȱǰȱȱȱȱȱȱȱȬ ǯȱȱ ȱ ȱȱȱȱȱ£ȱǯȱȱȱȬ £ȱûȱȱȱȱȱȱȱȱǰȱǯȱǯȱȱ ȱ ȱȱȱȱȱScrollBar1DZȱȱ procedure TForm1.ScrollBar1Change(Sender: TObject); begin Scrollbar2.Position:=Scrollbar1.Position end;
ȱ ȱ £ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱScrollBar2DZȱȱ procedure TForm1.ScrollBar2Change(Sender: TObject); begin Scrollbar1.Position:=Scrollbar2.Position end;
ȱŚǯŗşȱȱ ȱȱDZȱ ȱ ȱȱȱ§ȱȱȱ ȱǰȱȱ ȱȱȱȱǯȱ ȱ ȱ ȱ §ȱ DZȱ ȱ ȱ £§ȱ ȱ ȱ £§£ȱȱ¡ȱȱȱȱEdit1ǰȱȱȱȱLabelȱȬ ǰȱȱȱȱȱȱLabel1ȱǯȱȱ ȱȱ ǰȱȱȱ£ȱȱ¡ȱȱǻȬǼǰȱ ȱȱȱȱȱȱ¡ȱȱȱȱȱȬ £ȱ ǯȱȱ tȱ ȱȱȱȱȱ£ȱ£ȱȱ ȱȱ ¡DZȱȱȱȱȱȱȱȱȱ¡ȱ Edit1ǰȱǻȱȱ ǼǰȱȱȱȱȱȱȱLabel1ǯȱȱ
ŚǯŚȱȱȱȱȱȱȱȱ
ŝś
ȱȱ ȱŚǯŗşDZȱȱȱȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻǼȱ £ §Ȭ DZȱ procedure TForm1.Edit1Change(Sender: TObject); begin Label1.Caption:=Edit1.Text end;
ȱȱȱŚǯŗşȱȱȱǮȱȱȱȱȱȱȬ ȃȱȱȱȱȱ§ȱȱǰȱȱȱ£ DZȱȱ ȱ ȱ ȱ £§ȱ ȱ ȱ ǯȱ ȱ Ȭ ȱ £ ȱ ¡ȱ £DZȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ Ȭ ȱ CheckBox1ǰȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ CheckBox2ǯȱȱ ȱȱ£ȱȱȱȱ¡ȱȱǻȱȱǼǰȱȱȱ ȱȱ¡ȱȱȱǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ¡ȱ ȱ ǻȱ ȱ Ǽǰȱ ȱ Ȭ ȱȱȱ¡ȱȱȱǯȱȱ ȱ£ȱãȱ ȱȱǰȱȱ ȱȱȱȱ ȱ ¢ȱ Checkedȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱ¡ȱDZȱȱ
ŝŜ
Śȱȱ£DZȱ ȱȱȱ
procedure TForm1.CheckBox1Click(Sender: TObject); begin Checkbox2.Checked:=Checkbox1.Checked end; procedure TForm1.CheckBox2Click(Sender: TObject); begin Checkbox1.Checked:=Checkbox2.Checked end;
ȱȱȱ£ȱǰȱȱȱȱ ȱȱ DZȱȱ£Ȭ §ȱ ȱ§£ȱȱȱȱȱȱȱ Weiter ǰȱȬ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ £DZȱ Ȭ ȱǰȱ¡ȱŗŖŖǰȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱScrollbar3ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ŗŖȱ ȱ ȱȱǯȱȱ procedure TForm1.Button1Click(Sender: TObject); begin ScrollBar3.Position:=ScrollBar3.Position+10 end;
ȱȱȱȱŚǯŘŖȱȱȱȱ ȱȱDZȱȱ ȱ£ȱ£ȱ ȱȱȱȱȱȱȱ¢ȱ Positionȱ£ȱȱ ûȱȱ ȱȱȱȱȱǻȬ ȱǼǯȱȱ ȱȱȱȱǰȱȱȱȱȱŗŖȱ£ȱǯȱ đȱȱȱȱȱȱ ȱȱȱ¢ȱȬ ȱ ȱ £ûȱ ȱ ȱ ȱ ȱ ȱ ǻȱ Ǽǰȱ ȱ ȱȱȱȱȱȱȱ ǯȱȱ
4.5
Aktivierung und Deaktivierung von Bedienelementen ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱȱǰȱȱȱȱȱȱǰȱȱȬ £ȱȱãȱǯȱȱ ȱ ȱ ȱ £DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ǰȱ ȱ ȱ ȱ ȱ ȱ Übernehmen ȱ ȱ ȱȱ Ȭ ȱȱǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱ¡ȱ£ȱȱ ȱȱ ǯȱȱ
Śǯśȱȱȱȱȱȱȱ
ŝŝ
ȱȱ ȱŚǯŘŖDZȱȱȱȱȱȱȱȱ £ȱȱȱȱȱûȱȱȱȱ£ȱûȱȱ Ȭȱ ȱ ȱ ȱ ȱ §ȱ Ȯȱ ȱ ȱ £ ȱ Ȭ ȱǻȱȱŚǯŚǼǯȱǰȱȱ ȱ ȱȱǰȱ ȱȱ ûȱǰȱȱȱ£ȱȱȱ¡ȱȱȱûȱȱȬ ȱǯȱȱ £ȱȱȱ£ ȱãDZȱȱȱ ȱãȱȱǰȱȬ ȱ ȱ ¡ȱ ȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ ǯȱ ȱ £ȱ Ȭ ǰȱ ȱ ȱ £ ȱ ȱ ǰȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱȱ£ȱ§ǯȱ
4.5.1
property Enabled £ȱȱȱȱȱȱȱȱȱȱEnabledǯȱȱ
ȱȱ ȱŚǯŘŗDZȱȱEnabledȱ
ŝŞ
Śȱȱ£DZȱ ȱȱȱ
ȱȱȱŚǯŘŗȱ£ȱȱǰȱȱȱ¢ȱȱȱȱȱ ȱ Falseȱ ȱ Trueȱ £ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱŚǯŘŘȱDZȱ
ȱȱȱ ȱŚǯŘŘDZȱȱȱȱȱ ȱ£ȱȱȱ£ȱȱ¡ȱȱǰȱȱ£ȱȱȱȬ £ȱȱȱȱDZȱȱȱȱȱ£ȱ §ȱ£ȱȱ ȱǯȱȱȱ ȱȱȱȱEnabledȱûȱȱȱ ȱ£ȱȱFalseȱ£ǯȱȱ ȱ
4.5.2
Aktivierung des Bedienelements ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_452.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_452.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱ ȱȱȱȱȱǵȱ DZȱȱȱ£ȱ ȱȱ¡ȱ ȱǯȱȱ
ȱđǰȱ ȱȱȱȱȱûȱȱ£ȱ£ȱȱȱ ȱȱ¡ȱǻȬǼȱȱȱȱȱ Ȭ ȱ£ȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ¢ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ
ȱ ȱȱȱǯȱȱȱEnabledǯȱȱȱȱȱ procedure TForm1.Edit1Change(Sender: TObject); begin Button1.Enabled:=True end;
ȱŚǯŘřȱ£ȱȱȱDZȱȱȱȱ£ȱȱȱȱȱ ȱ¡ȱǰȱ ȱȱȱȱȱȱȱǯȱ
ŚǯŜȱȱȱȱȱ
ŝş
ûȱûȱ ȱȱûȱǰȱȱȱȱ ȱȱ ǰȱ ȱȱ£ȱȱȱȱ¡ȱãǯȱȱ
ȱȱ ȱŚǯŘřDZȱȱȱȱȱȱȱȱ¡ȱ ȱ ȱȱȮȱ£ȱȱ ȱȱ ȱśǯŗǯŘǯȱ
4.5.3
Inaktive Menü-Einträge ȱȱŚǯŘŚȱȱ£ȱǰȱȱȱȮȱ ȱȱȱ Ȭ ȱȱ £ȱȮȱȱ§ȱȱûȱȱȱȱȱǯȱȱ
ȱ ȱ ȱ £ȱ ȱ ȱ ȱ £ ȱ ǰȱ ȱ ȱ §ȱ ûǯȱ
ȱȱȱ ȱŚǯŘŚDZȱȱ§ȱȱȱûȱ
4.6
Verstecken von Bedienelementen
4.6.1
property Visible ȱȱȱ VisibleȱǻȱŚǯŘśǼǰȱȱȱȱȱ¢ȱȱȬ £ȱ ȱ §ǰȱ ãȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ǯȱȱ
ȱȱȱ ȱŚǯŘśDZȱȱVisibleȱ
ŞŖ
Śȱȱ£DZȱ ȱȱȱ
ȱ ȱȱ£ȱȱȱûȱȱȱ£ȱ ǰȱ ȱȱ ȱ¡ȱ ȱȱǰȱûȱ ȱȱȱVisibleȱȱȬ ȱȱȱûȱȱȱȱ£ȱȱFalseȱ£ǯȱȱ ȱ
4.6.2
Bedienelement sichtbar machen ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_462.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_462.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡¡ȱ ȱ ȱ ȱ ȱȱ¢ȱ Visibleȱûǰȱȱȱȱȱ ǯȱȱŚǯŘŜȱ£ȱ ȱȱȱȱȱ£ȱȱȱȱȱȱȱȱ¡Ȭ ǯȱȱ procedure TForm1.Edit1Change(Sender: TObject); begin Button1.Visible:=True end;
ȱȱȱ ȱŚǯŘŜDZȱȱȱȱȱ ȱ ȱȱȱ£ȱȱȱȱ ȱȱ ¢ȱ Visibleȱ ȱȱȱȱ ȱȱȱ ȱ£ ǯȱ ȱȱǯȱȱȱȱȱûȱȱ£DZȱȱ ȱ ȱ đȱ ǰȱ ȱ ȱ £§ȱ ûȱ ȱ §ǰȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱǯȱȱ
4.7
Namensbeschaffung für passende property ȱ ȱȱȱŚǯŘŝǰȱȱȱȱȱȱȱȱ §ǰȱ ȱ ȱ £ȱ ȱ Ȧȱ ȱ ȱ ȱ ȱ ¢ȱȱȱȱȱȱȱȱ£ȱǰȱȱȱ ȱȱ ȱ£ȱȱ£ ǯȱȱȱȱȱ ȱ£ȱ §ǯȱȱ
Śǯŝȱȱȱûȱȱ¢ȱ
Şŗ
ȱȱȱ ȱŚǯŘŝDZȱȱȱȱȱ£ȱ ȱȱȱȱǰȱ ȱȱȱ đǰȱ ȱȱȬ ȱ ȱ ǻ¢Ǽȱ đǰȱȱ ȱ ȱ ȱ ȱ £ȱ ǯȱȱ ȱ
4.7.1
property-Namen im Objektinspektor finden ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_471.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_471.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱȱȱȱȱȱȱȱȱǯȱȱ£ ȱȬ ȱǻǯȱȱřǯřǼȱȱȱȱ RadioGroup1ȱȱ RadioGroup2ȱȱ ȱȱȱȱȱȱ§ȱȱȱ Ȭ §ȱǻȱŚǯŘŞǼǯȱȱ ȱȱȱDZȱȱȱȱȱ §ǰȱȱȱȬ ȱȱȱ£ãȱ ȱȱȱǯȱȱȱ ȱȱȱȱȱ£ȱ §ǰȱȱȱȱ£ãȬ ȱȱȱȱǯȱȱ
ŞŘ
Śȱȱ£DZȱ ȱȱȱ
ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ Ȭ ǰȱ ȱȱȱȱȱ§ȱȱȱ ȱȬȱǯȱ ûȱȱȱȱȱȱȱDZȱȱ
ȱȱ ȱŚǯŘŞDZȱȱȱ£ȱȱȱȱ ȱȱ ȱȱȱ§ȱ §ǰȱȱȱȱȱ Ȭ DZȱȱ Städte-Gruppe.Positionsproperty := Länder-Gruppe.Positionsproperty
ȱȱȱ§ȱ §ǰȱȱȱȱ ȱȬ £DZȱȱ Länder-Gruppe.Positionsproperty:= Städte-Gruppe.Positionsproperty
ȱ§Ȭ ȱđȱ RadioGroup1ǰȱȱ§Ȭ ȱđȱ RadioGroup2ǰȱȱ ȱȱȱǯȱȱ ȱđȱȱ¢ǰȱȱȱȱȱȱ ǵȱ
ȱȱȱȱ ȱŚǯŘşDZȱItemIndexȱȱȮŗȱDZȱ ȱ ȱ ȱ ȱȱȱȱȱřǯřDZȱȱȱ¢ȱđȱItemIndexǯȱ
Śǯŝȱȱȱûȱȱ¢ȱ
Şř
ȱȱȮȱ ȱȱǰȱȱȱ ȱȱȱȮȱȱǰȱȱ ȱȱȱȱ ȱȱȱǻȱŚǯŘşǼȱ£ȱȬ ȱǯȱȱȱȱȱ ItemIndexȱȱȱȱȱȱȱȱȬ ȱȱȱȱȱǯȱȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ǯȱ ǻûȱ ȱ Ȭ ȱ ȱ Ȭȱ £ ǯȱ ȱ ûȱ ȱ ȱ ȱ Ȭ ȱ Ǽǯȱ ȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ȱ ¢ȱ ȱ ǰȱȱȱȱȱȱ£ȱãȱȱ DZȱȱ procedure TForm1.RadioGroup1Click(Sender: TObject); begin RadioGroup2.ItemIndex:=RadioGroup1.ItemIndex end; procedure TForm1.RadioGroup2Click(Sender: TObject); begin RadioGroup1.ItemIndex:=RadioGroup2.ItemIndex end;ȱ
ȱ
4.7.2
Eigenschaft fehlt im Objektinspektor ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ !D7Kap04 ȱȱȬȱ proj_472.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_472.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱȱȱ ȱDZȱȱ§ȱȱȬ §ȱ ȱ ȱ £ ȱ ǰȱ ǯȱ ǯȱ ȱ £ ȱ ȱ ȱ ȱ ȱȱȱȱListBox1ȱȱListBox2ȱǻȱŚǯřŖǼǯȱȱ ȱȱ£ȱȱȱ£ȱȱȱ£ȱǰȱȱ Ȭ ȱȱȱȱȱȱȱȱȱȱȱȱȱȬ ȱȱǯȱȱ ȱȱȱ£ȱȱ ȱȱȱȱǰȱ đȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ǻȱ ȱřǯŗǼȱǯȱ ûȱȱȱȱȱȱ£ȱȱ ȱȱǯȱȱȱȱ§Ȭ ȱ §ǰȱȱȱȱ DZȱȱ
ŞŚ
Śȱȱ£DZȱ ȱȱȱ
Städte-Liste.Positionsproperty:=Länder-Liste.Positionsproperty
ȱ ȱ ȱ §ȱ §ǰȱ ȱ ȱ ȱ £Ȭ DZȱȱ Länder-Liste.Positionsproperty:=Städte-Liste.Positionsproperty
ȱȱȱȱǰȱȱ ȱȱȱDZȱȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱȱȱ ListBox1ȱȱȱȱ ȱǯȱȱãȱȬ ȱȱȱȱȱđȱȱȱû£ǰȱ ûȱ £ȱ ȱDZȱȱ ȱ ȱȱȱǰȱȱȱȱ£ȱǰȱȱȱ ȱȱȬ ȱȱȱȱȱ¡ȱȱ ȱǯȱȱȱ ¢ȱȱ£ȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱǵȱȱ
ȱȱȱ ȱŚǯřŖDZȱ ȱȱȱȱȱȱȱ ȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ȱ ȱ Ȭ ¢ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ ȦȱȱȱȬȱǯȱ ȱȱȱûǵȱȱ ȱãȱDZȱȱȱ¢ȱȱǰȱȱȱȱȱȱȱ ȱȱȱ ǯȱȱ
4.7.3
Information durch die Punktliste ȱŚǯřŗȱ£ȱDZȱȱȱȱȱȱȱȱ£ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱ ȱ Ȭ ȱ ǰȱȱȱȱȱȱȱûǯȱ ȱȱȱ£ǰȱȱ ȱ ȱȱȱ£ȱȱȱ ȱ£ȱȱȱȱ ǯȱ
Śǯŝȱȱȱûȱȱ¢ȱ
Şś
ȱȱȱȱȱ ȱȱǰȱȱȱȱȬ ȱȱȱȱȱȱȱǰȱ ȱȱȱ ǰȱ ȱǰȱ£§£ȱǯȱȱ
ȱȱ ȱŚǯřŗDZȱȱ ȱ ȱ ȱ ȱ ȱ ȱ û ȱ ¢ǯȱ DZȱ ȱ ȱ ȱ ȱȱOnȱǯȱȱ ȱ ǰȱ ǯȱ ǯȱȱȱ £ȱ ȱ Ȧȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ¢Ȭ§ȱ propertyȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱOnȱǯȱ
4.7.4
Information über die Art der Zuweisung ȱ ȱ ȱ ȱ ȱ ȱ ŚǯŘŞDZȱ ȱ ȱ ¢ȱ ȱ ȱ Ȭ ȱȱȱǰȱȱȱȱǰȱ ȱȬ ȱ¢ȱȱȱǯȱȱ ȱ ȱ§ȱǰȱ ȱȱ¢ȱȱȱǰȱ ȱȱȱȱ ȱǰȱȱȱȱȱȱǵȱȱȱȱ ȱ ȱȱȱ ȱȱȱȱȱȱŚǯřŗȱȱȱȬ ȱȱȱȱDZȱ property ItemIndex: Integer
ȱȱȱãȱ ȱȱ ȱȱǯȱ ȱ¢ȱ ItemIndexǰȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ ȱ £ ǯȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ £ ǯȱãȱȱ£ȱȱǻIntegerǼǯȱȱ £ȱȱȱȱǰȱȱ ȱ£ȱãȱȱȱãȬ DZȱȱ ȱȱȱȱđȱ ListBox1ȱȱ ListBox2ǰȱȱ¢ȱûȱȱ ȱȱȱđȱItemIndexǯȱȱ ȱãȱ ȱȱȱȱȱ£ȱȱȱȱ ȱDZȱȱ
ŞŜ
Śȱȱ£DZȱ ȱȱȱ
procedure TForm1.ListBox1Click(Sender: TObject); begin Listbox2.ItemIndex:=Listbox1.ItemIndex end; procedure TForm1.ListBox2Click(Sender: TObject); begin Listbox1.ItemIndex:=Listbox2.ItemIndex end;
4.7.5
Start-Markierung in Listen setzen ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱ ¢ȱ £ȱ ȱ ȱ Ȭȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ Ȭ ȱȱãǵȱ ǯȱ ȱ ȱ ȱ ȱ ¢ȱ ItemIndexȱ §ȱ ȱ ȱ ȱ Ȭ ȱ £ȱ ûȱ ǰȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ ǻȱŚǯřŘǼǯȱ ȱȱȱȱȱǻȱȱŘǯŘǯŝǼȱȱȱȱ ȱȱûȱȱ£ȱ£ȱȱCreateDZȱȱȱ ȱȬ £ǯȱ ȱȱ ȱȱȱȱ£ȱȱȱȬȱ £ȱ ǰȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ £ȱ£ȱȱDZȱȱ procedure TForm1.FormCreate(Sender: TObject); begin Listbox1.ItemIndex:=9; Listbox2.ItemIndex:=9 end;
ȱȱȱ ȱŚǯřŘDZȱȬȱȱȱȱ¡ȱȱ
4.7.6
Passiver und aktiver Zugriff auf Zeilen in einer Listbox ȱ ȱȱ ȱǰȱȱȱȱ ȱ£ ȱ ǰȱȱȱ ȱȱȱȱ¢ȱ£ȱǯȱȱ
ȱ
ȱȱ£§ȱȱȱ ȱȱȱȱ§ȱȱ ȱ ȱ ȱ ȱ ¡ȱ ǯȱ ȱ ȱ ȱ £ȱȱŚǯřřǯȱ
Śǯŝȱȱȱûȱȱ¢ȱ
Şŝ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_476.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
ȱ
D8Kap04 ȱȱȱproj_476.bdsprojȱ£ §ǯȱȱ
ȱ ȱŚǯřřȱȬȱȱȱȱ¡ȱ ûȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ £ȱ £ȱȬȱCreateȱȮȱ ȱȱȱDZȱ procedure TForm1.FormCreate(Sender: TObject); begin Listbox1.ItemIndex:=9; Edit1.Text:='Sachsen-Anhalt' end;
ȱ ȱ£ȱȱȱDZȱȱȱ£ȱȱȱȱȱ ȱ §ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ §ȱ ȱ ȱ¡ȱǯȱȱ ȱ ȱûȱ ȱ £ȱ ȱ ȱ ǰȱ ȱ £ȱ ȱ ȱȱȬȬȱǻǯȱȱřǯŗǼDZȱȱ procedure TForm1.ListBox1Click(Sender: TObject); begin Edit1.Text:=...???........ end;
ȱȱǰȱǯȱǯȱȱȬȱȱǰȱȱãȱDZȱȱȱ Textȱ ȱȱ¢ȱ£ȱȱȱȱȬ ȱȱȱ ȱ¡Ȭȱȱ ȱȱȱǯȱȱ
ŞŞ
Śȱȱ£DZȱ ȱȱȱ
ȱȱȱǵȱȱȱȱȱȱȱǰȱȱȱ ȱ£ȱȱȱȱ£ȱǯȱȱ ȱȱȱȱȱȱȱȱȱ¢ȱItemIndexǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱȱǵȱȱ ȱ ûȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ đȱ ȱ ȱ ǯȱȱȱ ȱȱ Listbox1ȱȱȱǰȱ ȱȱȱ ȱȱȱȱȱȱǻȱŚǯřŚǼǯȱ
ȱȱȱ ȱŚǯřŚDZȱȱȱȱ¢ȱ ȱ ȱ DZȱ ȱ ȱ Edit1.Text:=Listbox1.Itemsȱ ǯȱ ȱ ȱ Ȯȱ ȱ ȱȱǯȱȱȱ ȱȱ ȱȱ ȱȱȱǰȱȱȱItemsȱȱ Ȭ ȱȱǰȱ ȱǰȱȱȱȱ£ȱȱȱ§ȱ ȱǻȱŚǯřśǼǯȱ
ȱȱȱ ȱŚǯřśDZȱȱȱȱ§ȱȱ ȱȱ ȱȱDZȱȱȱ¢ȱ Items.Stringsȱȱ£ ǯȱãȬ ȱȱǰȱȱȱȱȱȱ ȱȱȱȱ §ǯȱȱ ȱȱȱȱ£ȱDZȱ procedure TForm1.ListBox1Click(Sender: TObject); begin Edit1.Text:=Listbox1.Items.Strings[Listbox1.ItemIndex] end;
ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ đȱȱ ǯȱȱ ȱȱȱȱŚǯřŜȱ§ȱ£ȱȱDZȱȱ ȱȱ
Śǯŝȱȱȱûȱȱ¢ȱ
Şş
ȱ ȱŚǯřŜDZȱȱȱȱȱ£ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ¢ȱItemIndexǯȱȱ ȱȱȱ ȱȱȱȱȬȱȱ ȱȱȱȱ ȱȱ¢ȱItems.String[..]ȱȱȱǻȱǼȱ ȱȱûȱȱǯȱȱ đȱ ȱ ȱ ȱ ¢ȱ Textȱ ȱ ȱ ȱ ȱ ¡ȱ ǻȱǼȱǯȱȱ ȱ ȱtȱ ȱ ȱȱǰȱȱȱ£ȱȱ ȱ ȱǰȱȱ¡ȱȱȱ§ȱ ȱ§ȱ£ȱûDZȱ ȱ ȱȱȱȱȱȱ Änderung eintragen ȱȱȱȱ Ȭ ȱȱȱȱȱȱûȱãȱǻȱŚǯřŝǼǯȱȱ ȱȱȱ£ȱ£ȱ ȱȱȱȱȱȱǰȱȱ ȱȱȱȱȬǯȱûȱȱȱȱ£ȱȱȬ ȱȱ£ȱ ȱ£ȱǯȱȱ ǰȱȱȱǰȱȱȱȱȱȱȱȱ¡Ȭ ǰȱȱȱ¢ȱTextȱȱȱȱȱǯȱ ȱȱȱ ȱȱȱ¢ȱ Items.Strings[...]ȱ£ȱ§ȱȱ Dzȱ ȱ ȱ ȱ ȱ ȱ ¢ȱ ItemIndexȱ ȱ ȱ ȱǯȱ
şŖ
Śȱȱ£DZȱ ȱȱȱ
procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.Items.Strings[Listbox1.ItemIndex]:=Edit1.Text end;
ȱ Śǯřŝȱ £ȱ ȱ ãȱ DZȱ ȱ £ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ £ ȱ ȱ §ȱ ȱ ǯȱ ȱ £ȱȱȱȱȱȱȱȱǰȱ§£ȱȱ¡ǰȱȱ ȱȱȱȱȱ ȱȱȱȱȱȱȱ£ûǯȱȱ
ȱȱȱ ȱŚǯřŝDZȱ ȱȱȱȱȱ
4.7.7
Vereinfachungen durch verkürzte property Items[...] ȱȱȱȱȱȱȱ ǰȱȱ ȱûȱȱȬ ȱ ȱ ȱ ȱ ȱ £ǯȱ ȱ ȱ ȱ ȱ ȱȱǯȱȱ ȱȱǰȱȱȱûȱ ȱ Listbox1.Items.Strings[Listbox1.ItemIndex]:=Edit1.Text
ȱȱ Edit1.Text:=Listbox1.Items.Strings[Listbox1.ItemIndex];
ȱȱû£ȱ£ȱ ǰȱȱȱȱȱȬ¢ȱ StringsȱDZȱ Listbox1.Items[Listbox1.ItemIndex]:=Edit1.Text
ȱȱ Edit1.Text:=Listbox1.Items[Listbox1.ItemIndex];
ȱ
ȱ ȱȱû£ȱ ȱȱȱ£ȱȱȱȱ Ȭ ȱǰȱȱȱ ȱ£ȱȱ ȱȱȱ ȱȱȬ §ǰȱȱȱȱȱǯȱȱȱ
Śǯŝȱȱȱûȱȱ¢ȱ
şŗ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 4ȱȱȱzipȬȱ DKap04.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap04 ȱȱȬȱ proj_477.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap04 ȱȱȱproj_477.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ §ǰȱ ȱ §ȱ ȱ Ȭ £ȱȱ §ȱȱȱ£ ȱȱȱȱȱ Voriger!! ȱ ȱ Nächster ȱǯȱȱ
ȱȱȱ£ȱȱȱȱȱȬȱ §ȱDZȱ£ȱ ȱ ȱ ȱȱ£ ȱȱȱȱ£ȱ£ȱ ȬȱCreateȱȱǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱ£ ǯȱȱȱȱȬ ȱȱ ǯȱȱȱȱ£§£ȱȱȱȱǻȱŚǯřŞǼȱ £ȱ ǯȱȱ
ȱȱȱ ȱŚǯřŞDZȱ ȱȱȱ ûȱȱ£ȱûȱȱȱȱȱȱȱȬ ȱ DZȱûȱȱȱ£ȱȱȱ ȱ ȱûȱȱȱ
Ȭȱȱǯȱȱ
şŘ
Śȱȱ£DZȱ ȱȱȱ
ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ!!Voriger!ȱ ȱ ȱȱȱȱȱȱȱ!!Nächster!ȱȬ ȱȱȱȱȱȱȱ ǯȱȱ ȱȱȱ ȱȱǰȱȱȱȱȱ¢ȱ ItemIndexȱ ȱȱȱȱ ǰȱȱȱ£ȱȱ£ûǯȱȱ ȱ ȱȱȱȱǯȱȱȱ procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.ItemIndex:=Listbox1.ItemIndex-1; Listbox2.ItemIndex:=Listbox2.ItemIndex-1; Listbox3.ItemIndex:=Listbox3.ItemIndex-1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]; Label2.Caption:=Listbox2.Items[Listbox2.ItemIndex]; Label3.Caption:=Listbox3.Items[Listbox3.ItemIndex] end;
ȱȱȱ ȱȱǰȱȱȱȱ ȱȱ¢ȱ ItemIndexȱȱȱȱȱ ǰȱȱȱãȱȱ£ûǯȱȱ ȱ ȱȱȱȱǯȱ procedure TForm1.Button2Click(Sender: TObject); begin Listbox1.ItemIndex:=Listbox1.ItemIndex+1; Listbox2.ItemIndex:=Listbox2.ItemIndex+1; Listbox3.ItemIndex:=Listbox3.ItemIndex+1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]; Label2.Caption:=Listbox2.Items[Listbox2.ItemIndex]; Label3.Caption:=Listbox3.Items[Listbox3.ItemIndex] end;
ȱ
5
Einfache Tests und Alternativen ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ûȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ǻȬ ǼȱȱȱȱȱȱȱȱȱȱȬ ȱȱ£ȱȱãǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱȬ ȱȱǰȱãȱ ȱȱȱȱȱȱȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ £ȱ ǰȱ ȱ ȱ Ȭ ȱȱǰȱȱȱȱȱȱȱȱǰȱȱȬ ȱȱȱȱ¡ȱȱǰȱȱȱȬ ȱȱȱȱȱȱȱǯȱȱ đȱȱȱȱȱȱȱȱȱȱȱãǯȱȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ
ȱãDZȱȱãȱǰȱȱȱ£ȱȱ
ȱȱ¢ȱȱ ȱ§ȱȱȱǰȱ ȱãȱȱ ȱǰȱȱȱ£ȱ ȱ ȱȱȱȱ ȱȱȱȱ§ȱǯȱȱ ȱãȱȱȱȱȱ ȱȱȱŚǯŚȱ ScrollBar1.Position:=ScrollBar1.Position+10
ûȱ ǰȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ¢ȱ Positionȱ ȱȱȱȱȱȱȱȱȱđǰȱãđȱ ȱ £ȱ ǰȱ ȱ ȱ ¢ȱ Positionȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱ DZȱȱȱȱȱŗŖȱȱȱǯȱ ǰȱȱ ȱȱǰȱ ȱȱȱ ȱŚȱȱȱȱȬ ûȱ ǯȱǰȱ ȱȱȱǵȱȱ ȱ £ȱ ûȱ ûȱ ǰȱ ȱ ȱ ȱ ãȱ Ȭ ȱȱȱȱ£ȱȱãDZȱ ȱȱȱȱȱȱȱǯȱȱȱ§ȱ£ȱȬ ȱ§ȱǰȱ§£ȱȱȱȱȱȱȬ ȱ £ȱ ǯȱ đȱ ȱ đȬȱ ȱ ǰȱ ȱ ȱȱ £ȱ£ȱûǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ãȱ ǰȱ ȱ Ȭ ȱ£ȱãǰȱ ȱȱȱ£ȱ ȱǯȱȱ
şŚ
śȱȱȱȱȱȱ
ûȱȱ ȱȱȱ ȱȱȱûȱȱȱ ȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ §ȱ ȱ ǻǼȱ §ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ ȱ ȱ £ȱ propertyȱ£ȱǯȱȱ ûȱȱǰȱȱȱȱ¢ȱȱȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ûȱ ȱ đȱ ȱ ǰȱ ȱȱ¢ȱȱȮȱȱǰȱȱȱȱȬ ȱ Trueȱȱ Falseǰȱȱ¡ǯȱȱȱȱ ȱȱȱȬ ȱȱȱȱȱȱȱȱȱǯȱ ȱȱǵȱȱ ȱ ȱȱ ȱȱȱȱȱȬ ȱȱ£ȱ§ǯȱȱ ȱ ȱȱȱǰȱȱȱȱȱȱȱȱȱ ȱǰȱȱȱȱûȱ ȱǯȱȱǰȱ ȱ ȱȱȱȱȱȱȱ§ǯȱȱ
5.1
Einfacher Test
5.1.1
Bedingtes Aktivieren/Deaktivieren von Buttons ȱ ȱȱȱ£ȱȱȱȱ ȱ£ȱǻȱśǯŗǼDZȱ ȱȱȱȱȱȱȱȱListBox1ȱȱȱȱȬ ȱȮȱȱȱȱȱ ȱȱȱȱ§ǯȱȱ
ȱ
ȱListbox1ȱ ȱ§ȱȱȱǻȱǰȱ ȱȱǼǯȱȱ ȱ§ȱ§£ȱȱûǰȱ§ȱãȱ£ȱ§ǯȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_511.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_511.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱȬȱ ȱûȱȱ£ȱ£ȱȬ ȱCreateȱȮȱ ȱȱȱǯȱȱ ȱȱȬ ȱȱȱȱȱǰȱȱȱȱȱȬ ȱǯȱȱ ȱȱǰȱ ȱûȱȱȱȱȱ£Ȭ ȱ£ȱȬ ȱ ȱ£ȱȱDZȱ
śǯŗȱȱȱȱ
şś
ȱȱȱȱ Erster !DZȱ Listbox1.ItemIndex:=0;Label1.Caption:=Listbox1.Items[0]
ȱȱȱ!!!!!!Voriger!!DZȱ Listbox1.ItemIndex:=Listbox1.ItemIndex-1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]
ȱȱȱȱ!!Nächster!!DZȱ Listbox1.ItemIndex:=Listbox1.ItemIndex+1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]
ȱȱȱȱ!!Letzter!!DZȱ Listbox1.ItemIndex:=15;Label1.Caption:=Listbox1.Items[15]
ȱȱȱ ȱśǯŗDZȱ ȱȱȱ ȱ ȱ ȱ ǵȱ §ȱ ȱ £ȱ ȱ ȱ ȱ !!!!Ersterȱ ȱ ȱ ȱ ȱȱȱȱȱȱǰȱ£ǰȱȱȱȱ ȱȱȱ Voriger ǰȱȱȱȱȱǯȱ ǯȱ
ȱȱȱ ȱśǯŘDZȱȱȱȱȱ
şŜ
śȱȱȱȱȱȱ
ȱûȱ ȱǰȱȱȱ£ǰȱ ȱȱȱȱȱȬ ȱȱ ǰȱȱȱȱȱȱȱûȱǯȱ ȱ ȱ ǵȱ ǰȱ ȱ £ȱ ȱ ȱ ¢ȱ Enabledȱ ȱ ȱ ȱ ȱȱFalseȱȱȱȱȱȱȱǯȱȱ ȱ ûȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ Ȭ §ȱ ȱ ȱȱȱȱȱȱȱȱ ǰȱûȬ ȱ ȱȱ ȱǰȱȱȱȱǯȱȱ ȱ ȱ £ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ǯȱȱûȱȱȱȱȱȱ DZȱ procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.ItemIndex:=0;Label1.Caption:=Listbox1.Items[0]; Button1.Enabled:=False; Button2.Enabled:=False; Button3.Enabled:=True; Button4.Enabled:=True end; procedure TForm1.Button4Click(Sender: TObject); begin Listbox1.ItemIndex:=15;Label1.Caption:=Listbox1.Items[15]; Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=False; Button4.Enabled:=False end;
ȱ£ȱȱȱȱȱ Vorigerȱǯȱȱȱ£ȱȱûǰȱȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ûȱ ȱ ǯȱ ȱȱȱȱǵȱ ȱ ûȱ ȱ ȱ ȱ ǰȱ ȱ ȱ DZȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻ ȱ ȱ ¢ȱ ItemIndexȱ ȱȱǼǰȱȱȱȱȱȱ£ȱǯȱȱ ȱȱȱȱ§đȱȱȬǵȱȱ if Listbox1.ItemIndex=0 then begin Button1.Enabled:=False; Button2.Enabled:=False end
ȱ ȱ ȱ ûȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱ Nächster ȱDZȱȱ
śǯŗȱȱȱȱ
şŝ
if Listbox1.ItemIndex=15 then begin Button3.Enabled:=False; Button4.Enabled:=False end
ȱ ȱ ȱ £ȱ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ £ȱȱȱ ǰȱ ȱ ȱȱȱȱȱ ȱûȱ ȱ§ȱȱ£ȱǯȱ procedure TForm1.Button2Click(Sender: TObject);
//Button „Voriger“
begin Button3.Enabled:=True; Button4.Enabled:=True; Listbox1.ItemIndex:=Listbox1.ItemIndex-1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]; if Listbox1.ItemIndex=0 then begin Button1.Enabled:=False; Button2.Enabled:=False end end; procedure TForm1.Button3Click(Sender: TObject);
//Button „Nächster“
begin Button1.Enabled:=True; Button2.Enabled:=True; Listbox1.ItemIndex:=Listbox1.ItemIndex+1; Label1.Caption:=Listbox1.Items[Listbox1.ItemIndex]; if Listbox1.ItemIndex=15 then begin Button3.Enabled:=False; Button4.Enabled:=False end end;
£DZȱȱ£ȱ§ȱȱȱ£ȱȱȱȱȱȬ ȱŗśǯȱȱȱǰȱȱȱǯȱȱ ȱȱ ǰȱ ȱ ȱȱȬ ȱ ǰȱ ȱȱ§ȱȱûȱȱȱǵȱ ȱ ȱȱ¡ȱȱȱȱȱȱ¢ȱǰȱ ȱȱȱȱ £ǵȱȱȱȱȱȱȬûȱûȱ£ȱǯȱȱ ȱ ȱûȱǻȱśǯřǼǯȱ
ȱȱ ȱśǯřDZȱ¢ȱCountȱ
şŞ
śȱȱȱȱȱȱ
ȱ¡ȱȱ£ȱ£ȱ ȱȱȱȱ Letzter ȱȱȱȱ ȱȱȱŗśȱ£ȱ ȱȱ£ȱȱ§ȱȱŗDZȱ procedure TForm1.Button4Click(Sender: TObject);
//Button „Letzter“
begin Listbox1.ItemIndex:=Listbox1.Count-1; Label1.Caption:=Listbox1.Items[Listbox1.Count-1]; Button3.Enabled:=False; Button4.Enabled:=False; Button1.Enabled:=True; Button2.Enabled:=True end;
ȱȱ£ȱ£ȱ ȱȱȱȱ Nächster ȱȱȬ đȱȱȱȱȱŗśȱȱListbox1.Count-1ȱ£ȱ£ȱ ǯȱȱ ȱãȱ ȱ£ȱǰȱȱȱȱŗřȱȱŗŝȱ ȱŗŖŖȱȱŗŖŖŖŖȱ§ȱȱȱȱȱ ǯȱȱ ȱ
5.1.2
Einklick oder Ausklick? ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_512.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_512.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱ£ȱȱ¡ȱǰȱȱȱ ȱ ȱȱȱ ȱȱȱȱǻȱśǯŚǼǰȱȱǰȱȱȱ ȱȱȱ£Ȭ ȱ£ȱȱȱ ǯȱȱ
ȱȱȱ£ȱ£ȱȱ ȱȱȱ¡ȱǰȱȱȱ ȱ£ȱȱǵȱȱ
ȱȱ ȱśǯŚDZȱȱȱȱȱ
śǯŗȱȱȱȱ
şş
ȱȱȱ ȱ£ȱǰȱđȱȱ ȱȱȬ ȱǻǯȱȱ ŘǯŘǯřǼǯȱ ûȱ ȱ ȱ £ȱ ȱ ȱȱ Ȭ ȱ ǰȱȱ ȱ£ ȱȱȱǯȱ procedure TForm1.CheckBox1Click(Sender: TObject); begin if Checkbox1.Checked=True then begin ShowMessage('Einklick') end;
// Semikolon nötig, es folgt noch ein Test
if Checkbox1.Checked=False then begin ShowMessage('Ausklick') end; end;
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Dzȱȱȱȱ ȱȱȱ£ȱȱǷȱȱ ȱ ȱȱȱȬȱDZȱȱ ȱȱûȱȱȱȱ£ȱȱ£ûȱãȱȱ Ȭ ȱbeginȱȱendȱǯȱ ȱȱȱȱȱ ȱȱ£ȱȱȬ ȱDZȱ procedure TForm1.CheckBox1Click(Sender: TObject); begin if Checkbox1.Checked=True then ShowMessage('Einklick'); if Checkbox1.Checked=False then ShowMessage('Ausklick') end;
ȱȱȱȱǰȱȱ§ǯȱȱ£ȱȱȱȱ if Listbox1.ItemIndex=0 then begin Button1.Enabled:=False; Button2.Enabled:=False end
ȱ ȱ ȱ ȱ begin...endȱ ǰȱ ãȱ ȱ ȱ ȱ ȱȱ Button1.Enabled:=Falseȱ £ȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱ ȱȱûǯȱȱȱButton2.Enabled:=Falseȱ ûȱȱȬ đȱȱûǯȱȱ§ȱȱ§ȱȱȱDZȱ if Listbox1.ItemIndex=0 then Button1.Enabled:=False; Button2.Enabled:=False
ŗŖŖȱ
ȱ
5.1.3
śȱȱȱȱȱȱ
Links-Rechts-Steuerung ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_513.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_513.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ǻGroupBoxǼǰȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ nach links ǰȱȱȱȱȱȱȱȱȱ£ ȱȬ ȱȱȱȱ nach rechts ȱǻȱśǯśǼǯȱȱȱȱ ȱȱǰȱȱǰȱ¡ȱŗŖŖǯȱȱȱȱȱȱ §ȱǯȱȱȱ§ȱȱȱȱȱǯȱ
ȱȱ ȱśǯśDZȱ ȱȱǰȱȱȱȱ §£ȱȱȱȱȱȱȱ Bewegung! ȱ¡Dzȱ ȱȱ ǰȱȱȱȱȱ£ȱȱȱȱȱȱȱ ȱȮȱ ȱȱǯȱȱȱȱȱ£DZȱ procedure TForm1.Button1Click(Sender: TObject); begin if RadioButton1.Checked=True then begin Scrollbar1.Position:=ScrollBar1.Position-10 end; if RadioButton2.Checked=True then begin Scrollbar1.Position:=ScrollBar1.Position+10 end end;
§ǰȱȱȱȱãǰȱȱȱȱȱ DZȱ procedure TForm1.Button1Click(Sender: TObject); begin if RadioButton1.Checked=True then Scrollbar1.Position:=ScrollBar1.Position-10; if RadioButton2.Checked=True then Scrollbar1.Position:=ScrollBar1.Position+10 end;
śǯŗȱȱȱȱ
ŗŖŗ
ȱ ǰȱ ȱ ȱ ȱ ûȱ ȱ ǰȱ ȱ ȱ ȱȱȱȱǮãđȃǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ǵȱ ȱ ȱ §ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱȱ£ȱȱȱȱȱȱȱȱ if Scrollbar1.Position=100 then RadioButton1.Checked:=True; if Scrollbar1.Position=0
then RadioButton2.Checked:=True;
£ȱ§£ǯȱȱȱȱȱȱđǰȱȱȱ£§ȱ£ȱ ǯȱ ȱ ȱ ȱ§ȱ ǻȱ ŜǯŜǼȱ ȱ ȱ ȱ ȱ ȱ£¢Ȭȱȱãǯȱȱ ȱ
5.1.4
Tasten wegfangen ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_514.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_514.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ǯȱ ȱ ǯȱ ȱ ȱ ¡ȱ ȱ ȱ £ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ ȱ ȱȱǯȱȱ ȱȱ ȱśǯŜDZȱȱȱ ȱǰȱȱȱ Ȃȱȱȱ ǰȱ ȱȱȱȬ ȱȱǰȱȱȱǯȱȱ ȱȱȱǰȱȱǰȱȱDZȱȱȱȱȱȬ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ £ȱ ȱ Ȭ ȱȱȱȱ£ȱǰȱȱȱȱȱȱȱȱȱȬ ££ȱ£ǵȱȱ ȱ ȱ DZȱ £ȱ ȱ ǯȱ ȱ ûȱ ǰȱ ȱ Ȭ ȱ £ȱ ȱ ǯȱ ǰȱ ȱ ǯȱ ûȱ ȱ ȱ §£ȱ£ ȱDZȱȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ¢ȱ đȱ ȱǯȱȱȱȱǰȱ ȱȱûȱȱȱȬ ǰȱȱȱ£ȱ ǯȱȱ
ŗŖŘȱ
śȱȱȱȱȱȱ
ȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱȱȱ ȱȱȮȱǰȱȱȱȱ ȱ ǯȱǰȱȱȱȱ ȱ ȱ ǰȱ ȱ §ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ £ȱȱȱãȱǯȱȱȱȱǰȱȱȱ ȱȱ ǯȱȱ ȱ ȱ ȱ ȱ ȱ ãDzȱ ȱ ȱ ȱ ȱ ȱ ŗŘǯŚǯŚȱ ȱǯȱȱ ȱȱȱ£ ȱDZȱ ȱȱ£ȱȱȱûǰȱ¢ȱ ȱȱȱȱȬ £ǰȱ ȱ ȱ ȱ ûȱ ȱ ǯȱ ȱ ǰȱ Ȭ ȱ ȱȱǯȱȱ ȱ £ ȱ ȱ ȱ ȱ £ȱ £ǯȱ ûȱ ȱ ȱ £ȱ ȱȱȱ£ȱûȱȱȱȱȱȱȱ ¡ȱEdit1ǯȱ ȱȱȱȱȱȱȬǰȱȱȱ ȱȱȱ ȱȱ £ȱ ǻǯȱ ȱ ŘǯřǯŘǼȱ ȱ ȱ ȱ ȱ Ȭ ȱ ȱȱ ȱ ¡ȱ ǻȱ śǯŝǼȱȱ ȱȱ ȱȱȱȱOnKeyPressǯȱȱ
ȱȱȱ ȱśǯŝDZȱȱȱȱȱ£ȱ ȱȱȱȱDZȱȱȱȱ£ȱȱȱȬ ûǰȱȱȱȱȱ£ȱKeyȱȱȱûȱ ǰȱȱ ȱ£ȱȱȱȱȱûȱǯȱȱ ȱ ǰȱȱȱȬ ûȱȱȱǯȱȱȱǰȱ ȱȱȱȱȱȱȱȱ ǮȱȃȱȱȱȱǮȱȃȱȱǻûȱ£ȱȱȬ ȱŗŖǯŘǼDZȱȱ if (Key < '0') or (Key > '9') then ShowMessage(‘Taste falsch!‘)
ȱ ȱȱđȱȱDZȱȱ ȱ§ȱȱȱ ȱǯȱȱȱȮȱȱ ȱ£ȱǷȱ ȱ ǰȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ûȱ ȱ ȱ ¢ȱ ȱȱȱȱȱȱȱDZȱ if (Key < '0') or (Key > '9') then Key:=' '
ǰȱȱ ȱûȱȱȱȱȱȱ£ȱȱ ǻȱśǯŞǼǯȱȱ
śǯŗȱȱȱȱ
ŗŖř
ȱȱ¡ȱȱȱȱ ȱȱȱ ȱȱ§ǯȱ ȱȱȱãǵȱȱ ȱȱ ȱśǯŞDZȱ£ȱȱȱȱ ȱ Ȃȱ £ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ŗŖǯŘDZȱ ȱ ȱȱ£ ȱȱȱ ȱȱ ȱȮȱȱ£ȱȱȬ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ Key:=''ȱ ȱ ǰȱ ȱ ȱȱȱǯȱȱǵȱ ȱãȱǰȱȱ ȱȱȬȱ£ ǰȱȱǰȱȱȬ ȱȬȱǯȱ ȱȱȬȱ Esc ǯȱ£ȱȱȱ ȱǻ§ȱ§ǼȱChrȬȱ DZȱ procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Key < '0') or (Key > '9') then Key:=Chr(27) end;
ȱȱȱãǰȱȱ ȱȱȱȱDzȱ ȱãȱȬ ȱȱǰȱȱȱ¡ǰȱȱȱȱûȱȱǰȱȱȬ ȱ §ǯȱ ȱ ȱ ȱ ãȱ ȱ ȱ ȱ ǯȱ
£ǯȱǯȱȱ ȱȱ ȱ ȱȱȱȱ ȱ£DZȱȱ ȱȱûȱȱȱȱȱû ãȱ orȱǻûȱǮȃǼȱȱ andȱ ǻûȱ ǮȃǼȱ ûȱ ǯȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ
ȱ£ȱ£ȱȱ ȱ§ȱ£ȱǯȱȱȱȱ £ȱȱȱȱDZȱȱ if (Key < '0' or > '9') then...
ûȱ£ ȱȱȱǮȃDZȱ if (...test1...) and (...test2...) then begin ... end
ûȱ£ ȱȱȱǮȃDZȱ if (...test1...) or (...test2...) then begin ... end
ŗŖŚȱ
śȱȱȱȱȱȱ
ȱ ȱ ȱ ûȱ ȱ ȱ ȱ £ȱ ȱ £ûǰȱ ȱȱȱ£ȱ DZȱȱ if (...test1...) and (...test2...) then ...genau ein Befehl... if (...test1...) or (...test2...) then ...genau ein Befehl...
5.2
Alternative ȱȱ ȱǰȱȱȱȱûȱ ȱǯȱȱȱȱ ȱûǰȱȱȱǯȱȱȱȱȱȱȬ ȱãǯȱȱȱȱȮȱȱȱ ȱ ȱȱȱȱ¢ȱȬ ȱǯȱ
ȱ
5.2.1
Ein Nachttischlampen-Schalter ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_521.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_521.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱȱȱȱDZȱȱȱȱȱǰȱȱȱȱǰȱ ȱȱȱȱȱǰȱȱȱȱǯȱȱȱ ǯȱȱ ȱ ȱûȱȱȱȱȱȬȱ Ein ǯȱȱȱȬ ǰȱȱȱȱ ȱȱ Aus ǯȱȱȱ ȱǰȱȱ Ȭ ȱȱȱȱȱȱȱȱ ǯȱǻȱśǯşǼǯȱ
ȱȱ ȱśǯşDZȱǰȱȱȱ ǰȱȱ£ ȱ ȱǻǼȱ
ȱ ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȱ ûȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption='Ein' then begin Button1.Caption:='Aus' end; if Button1.Caption='Aus' then begin Button1.Caption:='Ein' end end;
//erster Test //zweiter Test
śǯŘȱȱȱ
ŗŖś
ȱ ȱȱDZȱȱãȱǰȱ ȱȱȱȱ ȱ ȱȮȱ ȱȬ ȱȱȱȱ Aus ȱ£ȱǯȱȱ ȱȱ ȱȱǵȱ ȱ ȱȱǯȱȱ£ȱǰȱȱȱȱȱ Ein ǯȱ ȱ ǰȱȱǯȱȱȱûǰȱȱ ȱ£ȱ Aus ǯȱȱȱ £ȱȱȱȱ£ȱ §ȱDZȱȱȬȱ §ȱ ȱ §ȱ ȱ ȱ £ ǰȱ ȱ ȱ ǯȱ ȱ ȱ ȱ Ȭ ǰȱȱȱ Aus ȱȱȱȱǯȱȱȱȱȱȮȱȱ ȱȱȬ ȱ ȱȱ Ein ȱǯȱȱȱȱûȱȱ£ȱȱȬ ȱȱȱȱ£ǯȱȱ
ȱȱ ȱȱȱǯȱȱȱȱDZȱȱ ȱȱȱȱ!Ein!ȱǰȱȱȱ !!Aus!ǯȱȱȱ!Ein!ǯȱȱ ȱ ȱ ȮȮȮ ȱ ȱ ȱ ǯȱ ȱ Ȭ Ȭȱûȱȱ£ȱȱ ȱȱȱȱ£ǯȱ procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption='Ein' then begin
// Befehle des JA-Zweiges Button1.Caption:='Aus'
end else begin
// andernfalls // Befehle des NEIN-Zweiges
Button1.Caption:='Ein' end end;
ȱȱȱ elseȱãȱ£ȱȱȱȱȱǻȱȬ Ǽǰȱȱȱȱûȱȱȱȱ§DZȱ elseȱđȱȱǰȱȬ ȱǯȱȱȱȱǰȱȱǯȱȱ ȱ£ȱȱ ȬȱȱȱȬ ǯȱȱ ȱ ûȱ ȱ ȱ ȱ Ȭ ȱ ûǰȱ ȱ ȱ ûȱ ȱ ȱ Ȭ ǯȱȱ §ȱ ȱ ȱ ȱ £ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ǻȱ ȱ ǷǼȱȱ ȱȱ beginȬendȬȱȱ ȱ Ȭ ȱ DZȱȱ procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption='Ein' then Button1.Caption:='Aus' else Button1.Caption:='Ein' end;
ŗŖŜȱ
ȱ
5.2.2
śȱȱȱȱȱȱ
Zu- und Abschalten von Buttons ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 5ȱȱȱzipȬȱ DKap05.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap05 ȱȱȬȱ proj_522.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap05 ȱȱȱproj_522.bdsprojȱ£ §ǯȱȱ
ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ŚǯśǯŘȱ £Ȭ ûǰȱ ȱȱȱȱȱȱȱȱȱǯȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱȱȱ Füge zusammen ǰȱȱȱȱǯȱȱȱDZȱ ȱȱ£ȱȱȱȱ¡ȱ ȱȱǰȱȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ûȱ ȱȱȱ£ȱ ǯȱ
ȱȱ ȱśǯŗŖDZȱȱȱȱ tȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ£ȱǰȱȱȱȱDZȱ procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=Edit1.Text + '-' + Edit2.Text end;
ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ¡ȱ ȱȱȱȱȱǵȱȱ §ȱȱȱȱȱȱȬ ǯȱ ȱ ȱ ȱ ¢ȱ Enabledȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ£ȱȱFalseȱ£ȱ ȱǻȱśǯŗŗǼǯȱ
ȱȱ ȱśǯŗŗDZȱȱDZȱȱ¡ǰȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱȱûȱ ǰȱȱȱ¡ȱȱȱǯȱȱ
śǯŘȱȱȱ
ŗŖŝ
ȱǰȱ ȱȱȱ£ǯȱȱȱȱȱ ȱȬ ȱ DZȱȱ procedure TForm1.Edit1Change(Sender: TObject); begin if (Edit1.Text'') and (Edit2.Text'') then Button1.Enabled:=True else Button1.Enabled:=False end; procedure TForm1.Edit2Change(Sender: TObject); begin if (Edit1.Text'') and (Edit2.Text'') then Button1.Enabled:=True else Button1.Enabled:=False end;
ȱȱ£ȱDZȱȱ ȱȱ¡ȱȱȱǰȱ ȱȱȱ ǯȱȱȱȱȱȱãǰȱ ȱȱȱȱȱ Ȭ ȱ ǯȱ ȱ ȱ ȱ ȱ £§ȱ ǰȱ ȱ Ȭ ȱȱȱȱǻȱǼȱǰȱ ȱȱ£Ȭ ȱȱȱûȱȱǯȱ ȱȱ ȱđȱǵȱȱ ȱȱ£ȱȱȱȱȱȱǯȱȱȱ ȱȱȱȱȱȱ ȱȱǰȱȱȱ ǰȱȱ ȱȱȱȱDZȱȱȱ ȱȱȱȱ£ ȱȱȬ ȱ ȱ''ȱǯȱ §ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ£ ȱȱȱǵȱȱ ȱȱȱDZȱȱ procedure TForm1.Edit1Change(Sender: TObject); begin if (Edit1.Text'') and (Edit2.Text'') then Button1.Enabled:=True;
//Semikolon nötig, ein Test folgt
if (Edit1.Text='') or (Edit2.Text='') then Button1.Enabled:=False end;
ŗŖŞȱ
śȱȱȱȱȱȱ
procedure TForm1.Edit2Change(Sender: TObject); begin if (Edit1.Text'') and (Edit2.Text'') then Button1.Enabled:=True;
//Semikolon nötig, ein Test folgt
if (Edit1.Text='') or (Edit2.Text='') then Button1.Enabled:=False end;
ȱȱȱȱȱȱǻȱǰȱȱǼȱȱȱ ǰȱȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ if ... then ... elseȬ ȱ ȱ ȱ ȱȱǯȱ ȱȱ ȱ
ȱ
6
Timer und Timer-Ereignisse ȱȱǯȱȱȱ ȱȱ ȱȱȱif...then-ȱȱ§ȱȱ ȱ if...then...elseȬ ȱ ȱãȱǰȱȱȱ ȱȱãǰȱȱȱȱȱȱȱ£ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱȱ£ ǯȱǯȱȱ ȱǯǯǯȱǰȱȱȱȱǯȱȱȱȱȱđȱȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ đǰȱ ȱ ȱ ȱ ȱȱȱǰȱȱȱȱȱȬ ȱȱȱȱȱȱǯȱ ȱȱȱȱȱȱȱȱȱȱ ȬDzȱȱǰȱ ȱȱȬȱȱȱȱ ǰȱ ãȱ ȱ ȱ ȱ ȱ £ ȱ ȱ ȱ Ȭ ȱ ǯȱȱ ȱȱȱȱśǯŗǯŘȱȱǰȱȱȱ ȱȱȱ¡ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ §ȱ ǰȱ ȱ ȱ ȱǰȱȱȱȱȱȱǯȱ ȱ đȱȱȱȱȱ ȱȱȱ ȱȱȬ ȱǻȱśǯŗǯřǼǯȱȱ ȱãȱ ȱȱ ȱȱǰȱȱȱȱ ȱşȱȱ ȱ §ȱ ȱ §ȱ §ǰȱ ȱ ȱ ȱ ȱ ȱûȱ ȱ ǯȱȱ
6.1
Timer: Begriff und Bedeutung
6.1.1
Bisherige Möglichkeiten und Grenzen ȱãȱ ȱǵȱǯȱȱãȱȱȱǰȱȱȱȬ ȱȱǯȱȱãȱ ȱûȱȱȱȱȱûȱ ȱȱȱ ȱûȱȱ£ȱȱȱȱ ȱ ȱȱ ȱȱȱǯȱȱ ȱȱȱ£ȱ ȱȱȱȱȱȱȬ ȱȱȱȱȱȱȱȱǯȱȱȱȬ ȱȱȱȱȱȱȱȱȱǰȱ ȱ ȱ£ȱȱȱ£ȱǰȱ ȱ ȱȱȱǯȱȱ
ŗŗŖȱ
ŜȱȱȱȱȬȱ
ȱȱȱȱ ȱȱûȱȱȱȬ ȱǰȱȱȱȱ¢ȱȱȱǻ£ǯȱǯȱȱȱȱ ȱ Ǽǰȱ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ £ȱȱ£ȱȱȱȱȱ ȱȱ Ȭ ȱǰȱȱȱȱȱȱ£ȱȱȱǻǯȱȱŚǯŝǯřǼǯȱȱȱ ȱ £ȱ ȱ đȱ ǰȱ ȱ ȱ Ȭ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱ ûȱȱǯȱȱ ȱȱ ȱȱǰȱ ȱȱȱȱȱȱǯȱȱȱ ȱȱȱ ȱȱȱȱ ȱȱ ȱǯȱ
ȱȱȱ ȱŜǯŗDZȱȱDZȱȱ£ȱȱȱȱ ȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱǯȱȱ ãȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱ ãǯȱ ȱ ǯȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ DZȱ
ŜǯŗȱȱDZȱȱȱȱ
ŗŗŗ
ǯǯǯȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱ ûȱȱȱ ȱ đȱ ȱ ȱ ¡ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ Ŝǯŗȱ DZȱȱ£ȱȱǯȱȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ǰȱ ȱ ǯȱ ȱ ûȱ ȱ DZȱȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱȱ ȱ £ȱ Ȭ £ȱȱȱǯȱȱ ȱǰȱãȱȱȱ ǵȱđȱ ȱȱȱ£Ȭ §ȱȱûȱǰȱȱȱ£ȱȱȱǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ £ȱ ȱ ǰȱ ȱ £§ȱ ȱ £ Ȭ ȱ ȱ ȱ £§ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §DZȱ ȱ ȱ ȱ đȱ ȱ £ȱ ȱ ¢ȱ ǰȱ ȱ ȱ ȱ ȱ ȱȮȱ ȱȱȱȱȱȱȱ £ǯȱȱ ȱ ȱ ȱ ȱ §Ȭȱ ȱ ǯȱ ȱ ȱ Ȭ ȱ ȱ ûȱ ȱ ȱ ȱ Ȭȱ ȱ ȱ Ȭ ȱȱȱȱȱȱȱ£ȱȱ£§ȱǰȱ ȱûȱȱȱȱȱȱ§ȱǯȱȱ đȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ Ȭ ȱđȱȱȱ£ ȱã£ȱȱȱȱȬ ȱȱ£ǯȱȱȱ
6.1.2
Timer ȱȱȱȱǰȱȱȮȱȱȱȱȱȮȱȱȱ§ȱȱȬ ȱãǰȱȱȬǯȱȱ ȱ Ȭȱ ãȱ ȱ ȱ £ãȱ £ȱ §ȱ Ȭ ȱȱ ȱǻȱȱŜǯŘǼǯȱȱȱȱ ȱȱȱȱǰȱȱȱȱȱȱȱȱȬ ǯȱȱȱȱȱȱǰȱȱȱ ȱȱ ȱȱȱȱȱȱ£ȱȱ ȱǯȱȱ ȱ ȱȱȱȱȱ£ȱȱȱȱȱȬ ȱȱȱ£ȱ ǯȱȱ ãȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ£§ȱȱȱ ȱȱ£ȱȱȱǯȱ
ŗŗŘȱ
ŜȱȱȱȱȬȱ ȱȱ
ȱ ȱŜǯŘDZȱȱȱȬȱȱ ȱȱȱãǰȱȱȱ£ȱ ȱǻȱŜǯřǼǯȱûȱȱ £ȱȱȱȱȱȱȱ ǯȱȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ £ ȱ ȱ ǰȱ ȱ ȱ §£ȱ ȱ ȱ §ȱ £ȱ £ȱ ȱ Ȭ Ȭǯȱȱ
6.2
Einrichtung und Starteinstellung ȱȱȱȱȱȱǰȱȱȱȱȱ ȱȱȱ ȱȱȱȱ ǯȱȱ
6.2.1
Platzieren des Timer-Symbols ȱȬ¢ȱǻǼȱȱ ȱȱȱŝȱȱȱȱȱȱ
ǯȱ ȱ ȱ Ȧȱ ŞȦŘŖŖśȦŘŖŖşȱ ȱ ȱ ȱ Ȭ ȱ ȱ ȱ ȱ ȱ ǻǯȱ ȱ ŜǯŚǼǯȱ ȱ Ȭ¢ȱ ȱ Ȭ ȱȱȱȱ£ȱ ǯȱȱȱ£ȱ£ȱȱ£ȱDzȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǯȱ ȱ ȱ Ȭ ȱȱȱTimer1ǰȱTimer2ȱ ǯȱûȱȱ£ȱǯȱ ȱȱȱȮȱ ȱȱȮȱȱãȱ£ǰȱ ȱȱ ȱȱ£ȱȱȱ£ȱȱȱǯȱȱ ȱȱȬȱȱ£ȱȱȱȱ ȱȬ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱȱȱȱȱȱ£ȱ ȱǯȱȱ
ŜǯŘȱȱȱȱȱ
ŗŗř
ȱȱ ȱŜǯřDZȱȱȱȱȬȱ
ȱȱ ȱŜǯŚDZȱȬ¢ȱȱȱŝȱ£ ǯȱȱȦȱŞȦŘŖŖśȦŘŖŖşȱ ȱ ȱǰȱȱȬȱȱȱȱȬ ǰȱȱȱȱEnabledȱȱIntervalǯȱȱ
ȱȱȱ ȱŜǯśDZȱȱȱȬȱ ȱȱ¢ȱ Enabledȱȱ Trueȱ£ǰȱȱ§ȱȱǰȱǯȱǯȱȱȬȬ ȱȱȱȱȱȱǯȱȱ Enabled:=Falseȱ ȱȱȱ ǰȱ ȱ ȱ ȱ ȱ §ȱ ǯȱ ȱ ȱ ȱ Enabled:=Trueȱȱȱȱ ǯȱ ȱȱ¢ȱ IntervalȱǻȱȮȱȱȱȱǮȃǼȱ ȱȱȱ£ ȱ£ ȱ Ȭȱȱȱǯȱȱ
ŗŗŚȱ
ŜȱȱȱȱȬȱ
ȱ ȱ Ŝǯśȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ Timer1ȱ ȱ ǰȱȱǰȱȱȱȬȱȱȱȱȱȱǻŗŖŖŖȱȬ ȱƽȱŗȱǼǯȱ ȱ£ȱȱȱȱȱȱ£DZȱȱȱǰȱȱȬ ȱȱȱ¡ȱȱȱ£ȱ£Dzȱȱ£ȱ§ȱȱȱ ȱȱȱǰȱ£ǯȱǯȱȱ¢ǰȱǯȱ ȱȱŝȱ§ȱȱãȱȱśśȱǯȱȱ ȱ
6.2.2
Einfache Ereignisprozeduren ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 6ȱȱȱzipȬȱ DKap06.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap06 ȱȱȬȱ proj_622.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap06 ȱȱȱproj_622.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱ ȱ ȱȱȱȱȱȱȱȬ £ȱȱȱ ȱȱȱ£ȱǻȱŜǯŜǼǯȱ ȱȱ£ȱ ȱȬDZȱȱŖǰȱ¡ȱŗŖŖǰȱȱŖǯȱȱ
ȱȱȱ ȱŜǯŜDZȱȱǰȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ǻȱ ŜǯŜǼDZȱ ŗȱ ȱ ȱ ǰȱ Řȱ ȱ Řȱ ǰȱ ȱ řȱ §ȱȱȱȱDZȱȱãȱȱȱȱȱȱȬȱ ǯȱȱ
ȱȱ ȱŜǯŝDZȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȬȬǯȱȱ
ŜǯŘȱȱȱȱȱ
ŗŗś
ȱȱ ȱȱûǰȱûȱ ȱȬȱȱȱȱ £ȱȱ ȱǯȱȱ ȱȱȱȱȱȱ£ȱǰȱûȱȱȱȱȱ ȱȱȮȱȱ£ûȱȱȱȱǻȱŜǯŞǼȱȱ ȱȱȱ£ȱȱ£ǯȱȱ
ȱȱȱ ȱŜǯŞDZȱȱȱãȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ OnTimerȱ ȱ ȱ ȱ ȱ ȱ Ȭ¢ȱȱȱȱȱȱȱȱȱȱûȱȱȬ £ȱ£ȱȱȱȱǻȬǼDZȱȱ procedure TForm1.Timer1Timer(Sender: TObject); begin ............
//Inhalt der Ereignisprozedur
end;
ȱ ȱ £ȱ ȱ ȱ £ûDZȱ ȱ ȱ ȱ Ȭȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ãȱ ȱ ȱ £ȱ ȱȱȱDZȱȱ procedure TForm1.Timer1Timer(Sender: TObject); begin ScrollBar1.Position:=ScrollBar1.Position+10 end; procedure TForm1.Timer2Timer(Sender: TObject); begin ScrollBar2.Position:=ScrollBar2.Position+10 end; procedure TForm1.Timer3Timer(Sender: TObject); begin ScrollBar3.Position:=ScrollBar3.Position+10 end;
ȱȱȱŜǯşȱȱŜǯŗŘȱãȱ ȱ ȱǰȱ ȱȱ ȱ ȱDZȱ§ȱȱȱȱȱ ScrollBar1ȱȱȱȱ ûȱȱȱȱȱȱȱȱȱȱȬ ȱǰȱȱȱȱȱȱȱScrollBar3ȱȱȱȱ§Ȭ ȱDzȱȱ ûȱȱȱȱȱȱ£ȱ£ ȱȱ ǯȱ
ŗŗŜȱ
ŜȱȱȱȱȬȱ
ȱ
ȱ ȱŜǯşDZȱȱȱȱȱȱȱ
ȱ ȱŜǯŗŖDZȱȱ£ ȱȱȱȱ
ȱ ȱŜǯŗŗDZȱȱȱȱûȱȱ
ȱ ȱŜǯŗŘDZȱȱȱȱȱȱ
ȱ
6.3
Arbeit mit Timern
6.3.1
Start und Selbst-Stopp ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 6ȱȱȱzipȬȱ DKap06.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap06 ȱȱȬȱ proj_631.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap06 ȱȱȱproj_631.bdsprojȱ£ §ǯȱȱ
ȱȱȱ£ȱȱȱȱûȱȱȱûȱȱȬ ǯȱȱȱȱȱȱȬȱǰȱȱȱȱȱ ȱȱ£ȱȱȱȱǰȱđȱȱ ǯȱȱ
Ŝǯřȱȱȱȱȱ
ŗŗŝ
ãDZȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱȱ ȱȱȱȱȱȱȱȱȱȱ śŖŖŖȱȱȱǻȱŜǯŗřǼǯȱ ȱ ȱŜǯŗřDZȱȱûȱȱȱȱ£ȱȱ ȱ£ȱȱȱȱȱȱãȱȱDZȱ procedure TForm1.Timer1Timer(Sender: TObject); begin ScrollBar1.Position:=ScrollBar1.Position+10;
//Semikolon nötig
Timer1.Enabled:=False end;
ȱȱ¢ȱEnabledȱȱȱȱ£ȱȱȱȱȱ ȱ Timer1ȱ £ȱ ǯȱ ȱ ȱ ȱ £Dzȱ ȱ ȱ ȱ ȱȱǯȱȱȱȱǯȱ ȱ
6.3.2
Halt und Weitermachen ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 6ȱȱȱzipȬȱ DKap06.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap06 ȱȱȬȱ proj_632.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap06 ȱȱȱproj_632.bdsprojȱ£ §ǯȱȱ
ȱ DZȱ§£ȱ£ȱȱȱȱȱȱȱȱȱȱȱȬ ȱ Halt ȱ ȱ ȱ ȱ ȱ ǻȱ ŜǯŗŚǼǯȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ǰȱ ȱǯȱȱ
ȱȱȱ ȱŜǯŗŚDZȱ Ȭǰȱȱȱȱȱ ȱȱ ȱȱȱȱȱȱȱȱ ȱȱȱȬ ȱȱȱȱ ȱȱȱWeiterȱǯȱȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ǰȱȱȱ ȱ£ȱȱ!!!Haltȱȱȱȱ ȱǻȱŜǯŗśǼǯȱȱ
ŗŗŞȱ
ŜȱȱȱȱȬȱ
ȱ ȱȱ£ȱȱȱãȱǰȱȱȱȱȱȱ ȱȱ§ȱ ȱ ȱȱǯȱȱ
ȱȱȱ ȱŜǯŗśDZȱǰȱȱȱȱ ǰȱ ȱȱ£ ȱ ȱȱ ȱ ȱȱ£ȱȱ£ȱ£ȱȬȱDZȱ procedure TForm1.Timer1Timer(Sender: TObject); begin ScrollBar1.Position:=ScrollBar1.Position+10 end;
ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱȮȱȱȱ ȱȱȱȱȱǮȬȃȱȱ ȱśǯŘǯŗȱ ȱȱǯȱ tȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǰȱ ȱȱȱǯȱȱȱȱȱ Halt ȱǻȱ§ȱ ȱǼǰȱ ȱȱȱȱ Ȭ ȱûDZȱȱȱ Ȭ ǰȱȱȱ ȱǯȱȱ procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption='Halt' then begin
// JA-Zweig Button1.Caption:='Weiter'; Timer1.Enabled:=False
end else begin
// NEIN-Zweig Button1.Caption:='Halt'; Timer1.Enabled:=True
end end;
ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ûDZȱ ȱ Ȭ ȱ ȱǰȱȱȱ ȱ ȱǯȱȱ ȱȱȱȱȱȱȱȱ ǰȱȱ ȱ ȱ Ȭ ȱȱȱȱȬ ȱȱ£ ȱȱǯȱȱ ȱȱȱȱȱȱȱȱ£ ȱȱȱ ȱȱ ȬȱȱȬ ǯȱ
Ŝǯřȱȱȱȱȱ
ȱ
6.3.3
ŗŗş
Blinkende Schrift ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 6ȱȱȱzipȬȱ DKap06.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap06 ȱȱȬȱ proj_633.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap06 ȱȱȱproj_633.bdsprojȱ£ §ǯȱȱ
ȱ DZȱ ȱ ȱ ȱ ȱ ȱ Achtung!ȱ ȱ ȱ ȱ ȱ £ǯȱ ȱ ȱ ȱ ãȱ đȱ ǰȱ £ȱ ȱ ŘŚȱ ȱ ǯȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ǰȱ ȱ ȱ £ ȱȱ£ȱȱǰȱȱ ȱûȱȱȱ ǰȱȱ ȱ ǯȱȱȱtȱȱȱȮȱȱȱȱȱǯȱȱ ȱȱȱ ȱŜǯŗŜDZȱȱȱ£ ȱȱ ȱȱȱȱȱãǵȱȱŜǯŗŜȱ£ȱȱã£DZȱȱȬ ȱȱ£ ȱǰȱȱȱȱȬȱȱǯȱȱȱȱȱ ȱǰȱȱȱŘŖŖŖȱȱǻȱŜǯŗŝǼǯȱȱ£ ȱȱȱ ȱ Dzȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ŗŖŖŖȱǯȱȱ
ȱȱȱ ȱŜǯŗŝDZȱ ȱȱ ȱȱ£ȱȱȱȱDZȱȱ procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption:=''; Timer1.Enabled:=False;
Timer2.Enabled:=True
end; procedure TForm1.Timer2Timer(Sender: TObject); begin Label1.Caption:='Achtung!'; Timer1.Enabled:=True; Timer2.Enabled:=False end;
ŗŘŖȱ
ŜȱȱȱȱȬȱ
ȱ ȱ ȱ ȱ Timer1ǰȱ ȱ ȱ £ ȱ ǯȱ ȱ ȱ ȱ Ȭǰȱ Timer1ȱ ãȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱûȱTimer2ȱǯȱȱ ȱȱȱǰȱȱȱȱȱȱǰȱȱȱȱ Timer2ǯȱ ȱȱȱȱǰȱȱȱȱȱǰȱȱ Timer1ȱǯȱ Timer1ȱ ȱ ȱȱ£ ȱǰȱȱȱȱȱȱȱ ǯȱȱ tȱ Ȯȱ ȱ ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ãđȱȱȱǯȱȱȱȱȱȱǻȱŜǯŗŞǼǰȱȱȱȱ ¡ȱȱ ǰȱ ȱȱȱǯȱȱ ȱǵȱ ȱȱȱ ȱŜǯŗŞDZȱȱȱAutosize=Trueȱ ȱǰȱûȱ ȱȱȱȱȱȱȱǻ¢Ǽȱ AutoSizeȱȱFalseȱ£ȱȮȱȱ§ȱȱȱȱǰȱȱ ȱȱȬ ȱȱ§ǯȱȱ
6.4
Permanente Prüfung im Hintergrund ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ¡Ȭ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ Ȭ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ŜǯŗşǼǯȱ §đȱ ȱ ȱ ǯȱ ȱ ȱ ȱ£ǯȱȱ
ȱȱȱ ȱŜǯŗşDZȱȬȱ£ȱȱȱȱ ȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱ ȱȱȱȱ¡ȱȱȱȬ ȱȱȱȱ Seiten ȱȱ§ȱȱ ûȱ£ȱǯȱȱ ȱȱȱ£ǰȱ ȱȱȱǵȱȱ ȱ ȱȱȬ £ȱȱȱȱȱȱûȱȱȱȱȮȱȱ §ǰȱãȱȱȱǰȱǰȱã£ȱȱȱ£ȱȬ ȱǻȱŜǯŘŖǼǯȱȱ
ŜǯŚȱȱȱûȱȱ ȱ
ŗŘŗ
ȱȱ
ȱ ȱŜǯŘŖDZȱȱ£ȱ ȱȱȱǵȱ £ȱ ȱ ȱȱȱãȱȱȱDZȱȱ
ȱãȱ£ȱȱȱȱǰȱȱȱȱ ȱãȱȱ ¡ȱǯȱȱȱã£ȱȱȱȱ ȱȱȱȬ ȱȱ£ǯȱȱ ȱ
ûȱ ȱȱǰȱȱȱȱǯȱ£ȱ ȱ£ȱ ȱȱȱȱȱȱȱ¡ȱȱǯȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel 6ȱȱȱzipȬȱ DKap06.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap06 ȱȱȬȱ proj_64.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap06 ȱȱȱproj_64.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱȱ ȱûȱȱȱ ItemsȱȱȱȬȱûȱȱ §ȱǯȱ ȱ ȱ &ȱ £ȱ ȱ ȱ Ȭ ȱǻȱȱřǯŚǼǯȱ
ȱȱȱ ȱŜǯŘŗDZȱȱȱȬǰȱȱ ȱ ItemIndexȱȱȱȱȱȱ RadioGroup1ȱ ȱȱȱȬ £ȱȮȱȱȱȱȱûȱȱȱȱǰȱȱȱȬ ǯȱȱ ȱ Ȭ¢ȱ ȱ ȱ ȱ ȱ ȱ £Dzȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǻ£ǯǯȱ śśȱ Ǽȱ ǰȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱȱǻȱŜǯŘŘǼǯȱ
ŗŘŘȱ
ŜȱȱȱȱȬȱ
ȱȱ ȱȱȱȱ£ȱ£ȱȱȱ£ȱȬ ǰȱ§ȱȱ£ȱ£ȱȬDZȱȱ procedure TForm1.Timer1Timer(Sender: TObject); begin if Edit1.Text'' then RadioGroup1.ItemIndex:=2 end;
ȱȱ ȱŜǯŘŘDZȱȱûȱȱȱ ȱȱȱDZȱȱȱȱȱȱȱû§ǰȱȬ §ȱ£ȱȱȱǰȱã£ȱȱȱ¡¡ȱǰȱȬ ȱȱȱȱȱȱȱȱȱȱǯȱȱ ȱȱ ȱȱȱ §ȱǯȱȱ ǰȱ ȱȱ£ȱ ȱ ã£ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ãǵȱ ȱ ȱ ȱǵȱȱȱȱȱAllesȱ£ûǯȱȱãȱ ȱDZȱȱ procedure TForm1.Timer1Timer(Sender: TObject); begin if Edit1.Text'' then RadioGroup1.ItemIndex:=2 else RadioGroup1.ItemIndex:=0 end;
ȱ ȱȱûDZȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ¡ȱȱ ȱȱȱȱ Ȭ ȱȱ £ǯȱǯȱȱȱȱȱȱȱûȬȱǰȱȱȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱȱȱǯȱ
6.5
Rot-Gelb-Grün: Die Ampel an der Kreuzung
6.5.1
Ganze Zahlen in wiederholter Folge ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ȱ ȱ £ǯȱȱȱȱȱȱ Timer1ȱȱȱȱǰȱȱ£ȱ ȱȱȱȱǻȱŜǯŘřǼǯȱȱȱȱȱȱ ScrollBar1ȱ ȱȱȱȱŗǰȱ¡ȱŚǰȱȱŗǯȱȱ
ŜǯśȱȱȬ Ȭ ûDZȱȱȱȱȱ £ȱ
ŗŘř
ȱȱȬȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ ǯȱ ȱ ȱȱ ȱȱ ȱ ȱŚȱǰȱ ȱ ȱ ȱ £ûȱ ȱ ŗȱ £ȱ £ǯȱ ȱ đǰȱ ȱ £ȱ ȱ ûȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ŗŘřŚȱ ŗŘřŚŗŘǯǯǯȱ§ǯȱȱ
ȱȱȱ ȱŜǯŘřDZȱȱ ȱȱȱ£ȱȱȱȱ ȱȱȱȱȱ ȱûȱǰȱȱȱȱȱȱ DZȱ procedure TForm1.Timer1Timer(Sender: TObject); begin if Scrollbar1.Position < 4 then Scrollbar1.Position:=Scrollbar1.Position+1 else Scrollbar1.Position:=1 end;
ȱ ǰȱȱȱȱ£ ȱȱȱ£ȱ£DZȱ procedure TForm1.Timer1Timer(Sender: TObject); begin if Scrollbar1.Position vergleich then anzahl:=anzahl+1; ShowMessage('Es sind '+IntToStr(anzahl)+' Länder') end;
şǯŗȱȱ£§ȱȱȱ
ŗşř
ȱ ȱ ȱ ȱ § £ȱ anzahlȱ Dzȱ ȱ ȱ ãđȱ ȱȱãȱŗŜȱȱȱ¢ȱ Byteȱãȱǯȱȱȱ ȱȱ ȱȱ£ǰȱȱȱ ȱȱ ȱȱȱ ȱȱ ȱûǯȱȱȱȱȱȮȱȱ¢ȱIntegerǯȱȱ ȱ§ ȱ ȱȱȱ£ǯȱȱȱȱǯȱȱǻ¡ǼȬ ȱȱȱȱ ȱȱ ȱȱȱ StrToIntȱ£ȱȱȬ ȱ ȱ ȱ ȱ ȱ £ȱ wertȱ ǯȱ ȱ ȱ ȱ ȱ ãđȱ ȱ śȱ ȱ ǰȱ ȱ ȱ ȱ ȱ anzahl:=anzahl+1ȱ ȱ §Ȭ ȱǯȱȱȱȱ ǯȱȱ ûȱȱȱȱȱȱǰȱȱȱȱȱ ȱȱȬ ȱ DZȱ ȱ ȱ ȱ ǯǯǯȱ ǯȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱǷȱǯȱȱ ǰȱ ȱȱȱ£ȱǰȱȱȱȱȱ£ȱȱȬ ǯȱ ûȱ ȱ ȱ £ȱ ȱ £ȱ !!ǵȱ ȱ ȱ ȱ ǰȱ ȱȱȱȱ§ȱ ȱȱȱȱ£ȱǯȱȱ ȱãȱđȱ§ǯȱȱ ȱ ȱȱȱȱȱȱȱ£ȱ§ȱǯȱȱ ȱ ŗDZȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ǰȱ ȱ ȱ beginȱ ȱendȱ£đDZȱȱ begin wert:=StrToInt(ListBox5.Items[0]); if wert>vergleich then anzahl:=anzahl+1 end
ȱ ŘDZȱ ȱ ǰȱ ȱ ȱ ȱ ȱ £ȱ ȱ §ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ £ǰȱ ûȱ ȱ ȱ iǯȱ ȱ iȱ đȱ ȱ DZȱȱ begin wert:=StrToInt(ListBox5.Items[i]); if wert>vergleich then anzahl:=anzahl+1 end
ȱřDZȱûȱ ȱȱfor...to...doȬȱDZȱȱ for i:=... to ... do begin wert:=StrToInt(ListBox5.Items[i]); if wert>vergleich then anzahl:=anzahl+1 end
ŗşŚȱ
şȱȱ§ȱ
ȱŚDZȱȱ ȱûȱȱȱiȱ ȱDZȱ for i:=0 to ... do begin wert:=StrToInt(ListBox5.Items[i]); if wert>vergleich then anzahl:=anzahl+1 end
ȱśDZȱȱ ȱûȱȱȱiȱ ȱDZȱ for i:=0 to 15 do begin wert:=StrToInt(ListBox5.Items[i]); if wert>vergleich then anzahl:=anzahl+1 end
ȱŜDZȱȱȱ ȱȱǯȱȱȱȱByteǯȱ £ȱ ȱ ȱ £ȱǰȱ ȱ ȱ ȱȱ ȱ ȱ ǰȱ ȱ ȱûȱȱ§ȱȱȱśȱȱ ȱǯȱ procedure TForm1.Button1Click(Sender: TObject); var anzahl,i
: Byte;
//Vereinbarungen
wert, vergleich : Integer; begin
//Ausführungsteil
anzahl:=0;
//Zählwerk auf Null setzen
vergleich:=5000000;
//Vergleichswert zuweisen
for i:=0 to 15 do
//Zählschleife
begin wert:=StrToInt(ListBox5.Items[i]); if wert>vergleich then anzahl:=anzahl+1 end;
//Semikolon nötig, da noch ein Be-
fehl kommt ShowMessage('Es sind '+IntToStr(anzahl)+' Länder') end;
ȱtȱȱȱȱȱȱ§ȱȱ ȱȱŗŖŖŖȱȬ ǵȱȱȱ£ȱ ȱ ǯȱ §ȱ ȱ ȱ ¡ȱ §£ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ ȱ Ȭ §ȱǻȱȱȱ ǼDzȱȱȱȱȱȱ£ȱ vergleichȱȱ ȱȱStrToIntȬȱȱȱ¡ȱȱ ǯȱȱȱ £ȱ ȱȱȱȱȱȱȱ§ǰȱȱȱȱȬ £ȱ£ȱǻȬǼȱ£ȱȱȱûȱ£ȱȬ ǰȱȱȱ¡§ȱȱȱȱȱȱûǰȱȱ ȱȱȱȱ ãǰȱûȱȱ ǯȱȱ
şǯŗȱȱ£§ȱȱȱ
ŗşś
ȱȱ ȱǵȱȱûȱ ǰȱȱ ȱȱȱȱ ȱ ȱȱǯȱȱ ȱȱȱȱȱȱȱ£ ȱȬ £ȱDZȱȱ procedure TForm1.FormCreate(Sender: TObject); var i
: Byte;
//Vereinbarungen
wert: Integer; begin
//Ausführungsteil
for i:=0 to 15 do begin wert:=StrToInt(ListBox4.Items[i]);
//4. Liste
if wert=1000) and (wertmax then max:=wert
ȱȱȱ£ȱǵȱȱ wert:=StrToInt(ListBox5.Items[15]);if wert>max then max:=wert
ȱ ȱ£ȱȱ ǰȱȱȱȱȱȱȱ ȱȱ§ȱ£ȱǯȱȱ ȱȱȱȱ£DZȱ
şǯŘȱȱ¡Ȭȱ
ŗşŝ
procedure TForm1.Button1Click(Sender: TObject); var i
: Byte;
//Vereinbarungen
max, wert: Integer; begin
//Ausführungsteil
wert:=StrToInt(ListBox5.Items[0]); max:=wert;
//Kandidat
for i:=1 to 15 do
//Zählschleife
begin wert:=StrToInt(ListBox5.Items[i]); if wert>max then max:=wert; end;
//Ende der Zählschleife
ShowMessage('Das Maximum lautet:'+ IntToStr(max)); end;
ȱȱȱ ȱşǯřDZȱ¡Ȭȱȱ ȱ£ȱȱ ȱȱȱǰȱȱȱȱȱ£ȱDZȱ if wert<max then max:=wert;
ȱ §ȱȱȱȬȱ£ §đǰȱȱ ȬȬ £ȱminȱ£ȱǯȱȱ ȱȱȱǯȱȱ
9.2.2
Position des größten und kleinsten Wertes bestimmen ȱ ȱȱȱȱȱȱȱ ǰȱ ȱȱȱȱ £ȱǯȱȱȱȱ£ȱ ǰȱûȱ ȱȱȱ ãǯȱȱ ȱûȱ£§£ȱ£ȱȱȱȱȱ ȱȱȱȱǯȱȱ ȱȱȱãȱ ȱȱȱȱŗȱȱ§ȱǯȱȱ
ŗşŞȱ
şȱȱ§ȱ
ȱ ȱ ȱ £ ȱ Ȭ§£ǰȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ Ȭǯȱ ȱ ȱ ȱ ȱ £ȱ ȱȱûȱ£ȱȱȱȱȱȱȱȱȬ ȱDZȱȱ wert:=StrToInt(ListBox5.Items[0]); min:=wert; minpos:=0
ȱ ȱ ȱȱȱ£ ȱȱǰȱȱDZȱȱ wert:=StrToInt(ListBox5.Items[1]); if wert<min then begin min:=wert; minpos:=1 end
ȱ ȱtȱDZȱ ȱ§ȱȱȱ£ ȱȱȱ ǯȱ ȱđǰȱȱiȱȱ£ ȱȱ ǯȱ ȱ ãȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ Ȭ ã§ȱȱȱ ǰȱȱ £ȱDZȱ min:=wert;
//Kandidat
minpos:=0;
//Kandidatenposition
for i:=1 to 15 do
//Zählschleife
begin wert:=StrToInt(ListBox5.Items[i]); if wert<min then begin min:=wert; minpos:=i end end;
//Ende der Zählschleife
ShowMessage('Das Land mit den wenigsten Bewohnern heißt:' + ListBox1.Items[minpos])
ȱȱȱȱȱ£ȱminȱȱȱ £ȱȱ ȱ£ȱminposȱȱ£ãȱǯȱȱ ȱȱȱȱȱȱȱȱȱȱȱ DZȱ
şǯřȱȱȱûȱȱ
9.3
ŗşş
Summen über Listen ȱ§ȱȱ£ȱȱǰȱ ȱȱ£ ȱ¡ȱǰȱȱ ȱ ȱȱȱȱȱ£ȱȱȱ ǯȱȱ ȱ ȱ ȱ ȱ §£ȱ ȱ ȱ ǯȱ ȱ ȱ ȱȱȱȱȱ£§£ȱȱ §ȱȱȱ ȱȱ DZȱȱȱȱȱȱ§ȱȱȱȱȱ£ȱȬ ȱȱ£ǯȱȱ ȱ ȱȱȱȱȱȱǰȱȱȱûȱȱȬ £ȱ£ȱ ȱȱȱȱ£ȱ§£ȱDZȱ sum:=0; //Summenspeicher auf Null setzen for i:=0 to 15 do //Zählschleife begin zuwachs:=StrToInt(ListBox4.Items[i]); sum:=sum+zuwachs end; //Semikolon nötig, da noch ein Befehl kommt ShowMessage('Die Gesamtfläche Deutschlands beträgt '+ IntToStr(sum) + ' Quadratkilometer')
ȱǰȱ ȱȱȱ£ȱȱǰȱ ȱ ȱȱȬ £ǰȱ ȱ ȱ ûȱ sumȱ ǯȱ ȱ ȱ ȱ ǰȱ ǯȱ ǯȱȱȱ ȱȱ£ǯȱ đȱ ȱȱȱȱȱȱȱȱȱȬ ȱ ǻȱ ȱ ¡Ǽȱ ȱ ȱ ȱ ȱ Ȭȱ StrToIntȱ £ȱ £ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȬȬ £ȱzuwachsȱǯȱȱ ȱ ȱ ãȱ ȱ ȱ ȱ ȱ ǯȱ ȱ şǯŚȱ ȱ ȱȱǯȱȱ ȱȱ£ȱ ȱȱȱ£ȱȱȱ £ȱ ȱȱȱ§ȱȱȱ£ȱȱȱ ǯȱ ãDZȱ ȱ ȱ ȱ ŞŘǯŚřşǯŖŖŖȱ ȱ ǻȱ ȱ ȱ ŘŖŖŘǼǯȱ ȱȱȱȱ DZȱȱ ȱȱ ȱȱȱǰȱȱȱȱȱ£ȱȱûȱȱȬ ǵȱȱȱûȱ£§ǵȱȱ ûȱǯȱȱȱ¢ȱ Countȱãȱ ȱȱȱ§ȱȱȱȱ ǯȱȱ£ȱǰȱûȱȱ ȱȱ£ȱȱȱȱleposȱ ȱǰȱȱȱȱȱ§ȱȱDZȱ lepos:=ListBox4.Count-1;
//letzte Position in der Liste
ŘŖŖȱ
şȱȱ§ȱ
ȱ
ȱ ȱşǯŚDZȱ §ȱȱ ȱȱȱ ȱ
ȱ
10 10.1
Nichtnumerische Speicherplätze Speicherplätze für Wahrheitswerte (Typ Boolean)
ȱȱȱȱȱ£ȱȱ var p: Boolean;
ǰȱ ȱȱ pȱȱ£ȱ£ȱȱȱȱȱ ȱ TrueȱȱFalseȱǯȱȱ
10.1.1 Suchen und Finden in Listen
ȱ ȱȱȱ£ȱȱȱȱȱȱȱ ǻȱ ŗŖǯŗǼȱ £ûǰȱ ȱ ȱ ȱ £§ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ǯȱȱ
ȱȱȱ ȱŗŖǯŗDZȱȱȱ Ȭ £ȱȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱȱ£ȱ ȱǰȱȱȱ£§£ȱȱȱȱ ȱȱȱȬ
ȱȱȱ£ȱ !!ǵȱ ȱ ǯȱȱ ȱãȱȱ ȱDZȱȱȱȱ £§ǰȱ ȱȱ ȱȱ ȱȱȱȱȱǰȱȱ ȱ ȱȱȱȱşǯŗȱ ȱȱǯȱ ȱȱǰȱȱȱ ȱǰȱȱȱ ȱãđȱȱȱȱȱȱȱȱȱ £ǯȱȱ
ŘŖŘȱ
ŗŖȱȱȱ§£ȱ
ȱȱđȱ ȱȱ ȱȱ£DZȱȱ §ȱȱȬ £§ȱǰȱ ȱȱȱãȱǰȱ ȱȱȱȱȱ ûȱȱǵȱȱ ȱ ȱ ȱ ȬȬ ȱ ãȱ ȱ £ §đȱ ȱ Ȭ ȱȱBooleanȬ£ǯȱȱ ȱȱûǰȱȱ§£ȱȱȱȱȱȱȱ ȱ ȱ ȱ £ǯȱ ȱ ȱ ȱ ȱ ȱ ȱȱist_daȱȱȱȱ£ȱȱDZȱȱ var ist_da : Boolean;
ȱ ȱ ȱ ûȱ ȱ ȱ ȱ £ȱ ãȱ ȱ Ȭ ȱ£DZȱȱ lepos:=ListBox3.Count-1; ist_da:=False;
//letzte Position //Anfangs-Festlegung
for i:=0 to lepos do
//Zählschleife
begin if ListBox3.Items[i]='KS' then ist_da:=True end; if ist_da=True then
//Auswertung
ShowMessage('Mindestens einmal tritt KS auf') else ShowMessage('KS fehlt')
ȱ ȱ ȱ ȱ DZȱ ȱ £ȱ ist_daȱ ȱȱȱ ȱist_da:=Falseȱȱǯȱ ȱȱȱȱȱ ȱȱǰȱȱȱȬ ȱȱȱǯȱȱ đȱ ȱ ȱ ûȱ ȱȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱûǰȱȱ ȱȱȱȱ ist_daȱȱ Trueǯȱȱ ȱ§Ȭ ȱȱȱûǰȱ ȱ Trueȱȱ TrueȱûǯȱȬȱȱȬ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ £Dzȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱȱ£ȱist_daǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱDZȱȱ ȱ ȱ ȱ if ist_da=True then...ȱ ȱ £ȱ if ist_da then...ȱ Ȭ ȱ ǯȱ ȱ ȱ ȱ BooleanȬ£ȱ ȱ ȱ ȱ Trueȱ ǰȱ ȱȱȱȱȱȱȱȱ£ǯȱ
ŗŖǯŗȱȱ§£ȱûȱ ȱǻ¢ȱBooleanǼȱ
ȱ
ŘŖř
10.1.2 Verhalten einer Schaltung ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel!!10ȱȱzipȬȱ DKap10.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ!!!D7Kap10 ȱȱȬȱ proj_1012.dprȱ £ §ǯȱ ȱ ȱ ȱ ŞȦŘŖŖśȱ ǰȱ ȱ ȱ ȱ Ȭ ȱ[ȱȱȱ
D8Kap10 ȱȱȱproj_1012.bdsprojȱ£ §ǯȱȱ
ȱ ȱȱŗŖǯŘȱȱ ȱȱȱȱȱȱǰȱȱȱ ȱȱȱȱȱȱȱȱǯȱȱȱ
ȱȱȱ ȱŗŖǯŘDZȱȱȱȱȱ ȱȱȱ ȱȱȱȱȱȱȱȱ£ǰȱȱȱ ûȱ ȱ ȱ ȱ Einȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȱ ȱ đȱ ǰȱ ȱ ȱ ȱ Ausȱ ȱ ȱ Ȭ ȱ£ǯȱȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱȱđǰȱȱǮȃȱȱǯȱȱȱȱ£ȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ȱȱǰȱȱȱȱȱȱȱđǯȱȱ ȱ ȱ ȱ ȱ ȱ £ȱ §ǰȱ ȱ ȱ ȱ £ȱ ȱȱȱ ȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ §ȱ ȱ ȱ ȱ ûȱ ȱ Ȭ ȱ RadioGroup1ǰȱȱ ȱȱȬȱȱ ȱûȱȱȱȬ ȱȱȱȱǻȱŗŖǯřǼǯȱ
ŘŖŚȱ
ŗŖȱȱȱ§£ȱ
ȱȱȱȱȱȱȱȱȮȱȱȱ§ȱȱȬ ȱ ȱȱȱȱǰȱȱȱȱȱŗŖǯřȱȱ¢ȱ ItemIndexȱȱŗȱȱ ǯȱ
ȱȱ ȱŗŖǯřDZȱȱȱȱȱȱȱ ȱ£ȱȱ£ȱȱȱȱǯȱȱȱȱ
ȱȱȱt ȱȱ ȱȱȱȬ ȱǮȃȱ£Dzȱȱȱȱȱȱ RadioGroup2ȱȱ RadioGroup7ǯȱȱûȱȱȱȱȱȱȱȱȱ £ȱȱȱȱǻȱCaptionǼȱȱŘȱȱŝȱ§ǯȱȱ ȱȱãȱ ȱ£ §đȱȱȱ Shapeȱ£ǯȱ ȱȱȱȱŗŖǯŚȱȱȱŝȱȱȱ Shapeȱȱȱ ȱ ȱ ȱ £ ǯȱ ȱ ȱ Ȧȱ ŞȦŘŖŖśȦŘŖŖşȱȱ ȱ ȱ ȱȱȬǯȱ
ȱȱȱ ȱŗŖǯŚDZȱȱShapeȱȱȱ ȱ ȱȱ Shapeȱãȱ ȱȱ ǰȱȱǰȱȱǰȱȱȬ ȱȱȱǰȱȱȱȱȱȱȱȱ ȱ ȱȱȱ£ȱȮȱȱǰȱ ȱȱȱȱȱ ȱShapeȱȱ ȱǻȱŗŖǯśǼǯȱȱ
ȱȱȱ ȱŗŖǯśDZȱȱȱShapeȱ ûȱȱǮȃȱȱ ȱûȱȱ §ǯȱ ȱ ȱ ȱ ǰȱ ȱ £ȱ ȱ £ȱ ȱ £ȱ ȱ Ȭ ȱǮȃȱ£ȱǰȱ£ȱȱ£ȱȱûȱȱȱ Ǯȃǰȱȱȱȱȱȱȱȱ ȱ ȱȱȬ t ǯȱ
ŗŖǯŗȱȱ§£ȱûȱ ȱǻ¢ȱBooleanǼȱ
ŘŖś
ȱȱShapeȬȱȱȱȱǻȱȱȱȱȱǮȃǼȱȱȱ ȱȱȱȱȱŗŖǯŘȱ đȱȱ ǰȱȱȱȱȱȱûȱ ãǰȱȱȱȱȱȱȱȱȬȱȱȱ ȱȱtȱǻȱŗŖǯŜǼDZȱȱȱColorȱǯȱ
ȱȱȱȱ ȱŗŖǯŜDZȱȱColorȱȱ ȱȱ ȱȱȱȱȱŚǯŝǯřȱȱȱǰȱȱȱȱȱȬ ȱȱ ȱȱȱȮȱȱȱ ȱȱȬ ȱȱǯȱȱ ȱ ȱȱ ǵȱȱ£ȱȱȱȱȱȱ£ȱ£ȱ ȱ Createȱ Ȯȱ ȱ ȱ Ȯȱ ȱ ȱ Ȭ ǯȱ ȱȱȱȱǯȱȱȱȱȬûȱȱ ShapeȬȱ ȱ ȱ ȱ ȱ ¢ȱ Brush.Colorȱ ȱ ȱ RGBȬȱ ȱ ûȱ ȱȱȱȱȱǰȱ ûȱȱȱ£DZȱ procedure TForm1.FormCreate(Sender: TObject); begin Shape1.Brush.Color:=RGB(255,0,0) end;
ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ Shape1ȱ ȱ ȱ ȱ £ȱ ȱ ûȱ ǯȱ RGB(0,0,0)ȱ ȱ £ǰȱ RGB(255,255,255)ȱ ûȱ ȱ đǯȱ£ȱȱȱȱȬǰȱȱ ȱ£ǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ £ȱȱ ȱȱȱȱ§ǯȱȱȱ§ȱȱ ȱȱȱȱȬȱȱȱ ǯȱȱ ûȱȱȱȱ ȱ ȱ£ §đȱȱ BooleanȬ§£ȱ ȱ£ȱǰȱ£ǯȱǯȱp1ȱȱp7DZȱ var p1,p2,p3,p4,p5,p6,p7: Boolean;
ȱȱȱûȱȱ ȱ ȱȱ£ǰȱȱȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ £ȱȱȱȱ§£ȱ£ȱǯȱȱ
ŘŖŜȱ
ŗŖȱȱȱ§£ȱ
ȱȱȱ§ȱȱȱȱȱȱȱȱȱȬ £ȱûȱȱǯȱȱ ȱ ȱȱȱȱ£ȱȱȱp1ȱȱp7ȱDZȱ if RadioGroup1.ItemIndex=0 then p1:=True else p1:=False; p2:=RadioGroup2.ItemIndex=0; p3:=RadioGroup3.ItemIndex=0; p4:=RadioGroup4.ItemIndex=0; p5:=RadioGroup5.ItemIndex=0; p6:=RadioGroup6.ItemIndex=0; p7:=RadioGroup7.ItemIndex=0;
ȱȱȱȱ£ȱ p1ȱȱȱȱȱ£ȱ §ȱȱ ǯȱȱ ûȱȱȱȱ ȱȱ ǰȱȱȱȱȱ £ȱȱȱ p2:=RadioGroup2.ItemIndex=0
§ǯȱȱ §ȱ ȱDZȱȱȱȱȱȱȱ:=ȱȱ ȱȱȱȬ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ItemIndexȱȱȱRadioGroup2ȱȱȱȱǯȱȱ ȱȱȱûǰȱȱȱȱȱȱȱȱ Trueǯȱȱ ȱȱûǰȱȱȱȱȱȱȱFalseǯȱȱ đȱ ȱȱȱǰȱȱǰȱȱȱȱȬ ȱǰȱȱȱ£ȱp2ȱǯȱȱȱȱȱ ȱ ȱ ȱ ȱ ǵȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱȱȱȱȱȱ DZȱȱ ȱ ȱȱȱ ȱȱȱȱȱ ȱȱ Ȭ ȱȱȱȱ p1 and (p2 or p4) and p3
ȱȱȱȱȱȱȱȱorȱûȱ ǯȱ ûȱȱȱ ȱȱȱȱȱȱȱȬ ȱȱȱ p5 and (p6 or True)
ȱ ȱ ȱ p6ȱ ȱ ȱ ȱ ȱ tûǰȱ ȱ Trueǯȱ đȱ ûȱ ȱ ȱ ȱ ȱ Dzȱ ȱ ȱ Ȭ ȱđȱȱ£ȱȱp7ȱDZȱ ((p1 and (p2 or p4) and p3) or (p5 and (p6 or True))) and p7
ŗŖǯŘȱȱ§£ȱûȱ£ȱȱǻ¢ȱCharǼȱ
ŘŖŝ
ȱȱȱȱȱȱȱȱȱ Ȭ ǯȱȱȱȱ£ȱȱ Dzȱȱ ȱ ȱȱȱ ȱȱȱȬȱȱǯȱȱ ȱŗŖǯŝȱ£ȱȱȱȱãȱȱȱȱǯȱ procedure TForm1.Button1Click(Sender: TObject); var p1,p2,p3,p4,p5,p6,p7: Boolean; begin
//Vereinbarungen //Ausführungsteil
if RadioGroup1.ItemIndex=0 then p1:=True else p1:=False; p2:=RadioGroup2.ItemIndex=0; p3:=RadioGroup3.ItemIndex=0; p4:=RadioGroup4.ItemIndex=0; p5:=RadioGroup5.ItemIndex=0; p6:=RadioGroup6.ItemIndex=0; p7:=RadioGroup7.ItemIndex=0; if ((p1 and (p2 or p4) and p3) or (p5 and (p6 or True))) and p7 then Label1.Caption:='Ein';Label1.Color:=RGB(0,255,0) else Label1.Caption:='Aus';Label1.Color:=RGB(255,0,0) end;
ȱȱȱ ȱŗŖǯŝDZȱȱđȱȱȱȱ ȱ
10.2
Speicherplätze für einzelne Zeichen (Typ Char) ȱȱȱȱȱ£ȱȱ var z: Char;
ǰȱ ȱ ȱ zȱ ȱ ŗȬ¢Ȭ£ȱ £ȱ ȱ ȱ £ȱ ȱ ǯȱȱȱȱ¢ȱǻǯȱȱŝǯřǯŗǼȱȱ£ȱȱȱŖȱȱ Řśśȱȱ ȱãǰȱȱȱCharȬ£ȱŘśŜȱȱȬ ȱǯȱȱ
ŘŖŞȱ
ŗŖȱȱȱ§£ȱ
ȱȱȱȱȱȱȬDZȱȱ 32
64
@
96
`
33
!
65
A
97
a
34
"
66
B
98
b
35
#
67
C
99
c
36
$
68
D
100
d
37
%
69
E
101
e
38
&
70
F
102
f
39
'
71
G
103
g
40
(
72
H
104
h
41
)
73
I
105
i
42
*
74
J
106
j
43
+
75
K
107
k
44
,
76
L
108
l
45
-
77
M
109
m
46
.
78
N
110
n
47
/
79
O
111
o
48
0
80
P
112
p
49
1
81
Q
113
q
50
2
82
R
114
r
51
3
83
S
115
s
52
4
84
T
116
t
53
5
85
U
117
u
54
6
86
V
118
v
55
7
87
W
119
w
56
8
88
X
120
x
57
9
89
Y
121
y
58
:
90
Z
122
z
59
;
91
[
123
{
60
94
^
126
~
63
?
95
_
127
ȱ ȱřŘȱȱȱȱȱȱȱ£ǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ûǰȱ ȱȱȱȬȱŘŝȱȱȱ Esc ǯȱȱȬ ȱŗřȱȱȱ Enter ȱȬǯȱȱ
ŗŖǯŘȱȱ§£ȱûȱ£ȱȱǻ¢ȱCharǼȱ
ŘŖş
ȱ ȱŚŞȱȱśŝȱȱȱȱȱȱȱǯȱȱŜśȱȱ şŖȱȱȱȱ đǰȱȱȱȱşŝȱȱŗŘŘȱȱȱȱ
ȱȱȱǯȱȱ ȱȱȱȬȱŖȱȱŗŘŝȱȱȱȱȱȱȱȬ ǯȱûȱȱȱȱŗŘŞȱȱŘśśȱȱȱȱǰȱȱãȱȬ ȱȱ£ȱ£ȱȱ ȱȱȬ ȱȱ ǯȱȱûȱȱ ȱ£ȱȱ ȱȱȱȮȱȱȱȱȱȱȱǯȱûȱȱȱ ȱȱȱȱȱȱǮđȃǯȱȱ ȱ ȱȱȱȱȱûȱȱȬȱȱŗŘŞȱȱŘśśȱ ȱȱǰȱȱ ȱȱȱǯȱȱȱȱȱȬ ȱ§ǰȱȱȱȱȬȬȱȱǯȱȱ ȱȱȱȱȬȱ§ȱȱȱ§ǰȱ ȱȱ ȬãđȬ £ȱ £ ȱ ȱ £ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱȱǰȱ ȱȱ£ãȱȬȱȱǯȱȱ ȱȱȬȱãȱ ȱ£ȱDZȱ ‘#‘ < ‘(‘< ‘0‘< ‘A‘< ‘Z‘< ‘\‘ ‘a‘< ‘z‘< ‘~‘
ȱ ȱȱȱȱ if (Key < '0') or (Key > '9') then ...ȱȱȱ śǯŗǯŚȱ §ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ûȱǰȱȱȱȱȬȱDZȱȱȱȱûȱȱȱȱ ȬȱȱȱŚŞȱȱȱȱśŝȱûǯȱȱȱȱȱ Ȭȱ§ȱȱǰȱȱȱȱȱȱȱ ûǯȱȱ ȱȱȱȱȱȱ CharȬ£ȱȱ ǰȱȱȱ ȱȱ ȱȁȱȁȱ£ȱ£ǯȱȱ ȱ ȱ z:=‘0‘ȱȱ zȱ ȱȱȱǯȱȱȱȱȬ ȱȱȱȱȱȱ IntegerȬ§£ȱȱ ǰȱ z:=0ȱȱ var z: Char;ȱ §ȱǯȱ Ȭȱȱȱȱȱ Chrȱȱ Ordȱǰȱȱȱ Ȭ ȱ £ȱ ȱ ȱ Ȭȱ ȱ £ãȱ ȱ ȱ Ȭ ȱ £ȱ ȱ ȱ ȱ ȱ £ãȱ Ȭȱ ȱ ȱǯȱȱ var z: Char; z_asc: Byte;
//Byte reicht aus
z:=Chr(z_asc)
//ASCII-Wert Zeichen
z_asc:=Ord(z);
//Zeichen ASCII-Wert
ȱŗŖǯŞȱ£ȱȱȱ£§ǰȱȱȱ ȱ ȱȱȱ ȱCharȬ§£ǰȱȬȱ ȱȱChrȱȱOrdȱûȱãǯȱȱ ȱ
ȱ
ŘŗŖȱ
ŗŖȱȱȱ§£ȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel!!10ȱȱzipȬȱ DKap10.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap10 ȱȱȬȱ proj_102.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
ȱ
D8Kap10 ȱȱȱproj_102.bdsprojȱ£ §ǯȱȱ
ȱ ȱŗŖǯŞDZȱȱȱ£ãȱȬȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ŝśȱ ȱ ȱ ȱ ¡ȱȱşŖȱȮȱȱȱȱȬȱȱ đǯȱȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ Ȭ ȱȱ£ ȱȱȱ ǯȱ procedure TForm1.ScrollBar1Change(Sender: TObject); var z : Char; z_asc: Byte;
//Vereinbarungen
begin z_asc:=ScrollBar1.Position;
//Ausführungsteil //Transport Datenkern->Sp.-platz
z:=Chr(z_asc); Label1.Caption:=IntToStr(z_asc); Label2.Caption:=z end;
ȱ£ȱ §ȱȱ§ȱȱ§£ȱãDZȱ procedure TForm1.ScrollBar1Change(Sender: TObject); begin Label1.Caption:=IntToStr(ScrollBar1.Position); Label2.Caption:=Chr(ScrollBar1.Position) end;
ȱȱ£ȱȱǻȱȱŘǯŘȱȱȱŝǯŗǯřǼȱ£Ȭ §ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ§£ǯȱȱ
ŗŖǯŘȱȱ§£ȱûȱ£ȱȱǻ¢ȱCharǼȱ
Řŗŗ
ȱ Ȯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ§£ȱãȱȱ§£ȱȱȱȱȱȱ ȱ£DZȱȱ ȱȱȱȱȱȱȱȱȱȬ §£ȱȱ ȱȦȱȱȱȱ§£ȱǻ£ǰȱȱǼȱ ȱǻûǼȬȱȱȱȱȱȱ £ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ǰȱ ȱ £ȱ ȱ ȱ tȱ ǯȱȱ ȱ ǯȱȱ ȱȱȱȱȱȱ ǰȱȱȱȱȬ ȱȬȱȱȱ£ãȱ DzȱȱȱȱȬ ȱ đȱ ȱ ǯȱ ȱ £ãȱ £ȱ ȱ ȱ ȱǯȱȱ ȱȱ£ȱȱȱȱȱȱ£ȱȱ¡ȱȱȬ ûȱȱȱȬȱȱ DZȱ procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var z : Char; z_asc: Byte; begin z:=Key; z_asc:=Ord(z); Label7.Caption:=IntToStr(z_asc); Label8.Caption:=z end;
ȱȱȱ ȱȱȱ¡ȱȱȱȱȬȱ ȱ ǰȱȱ£ãȱȱȱ£ȱ DZȱ procedure TForm1.Edit2Change(Sender: TObject); var z : Char; z_asc: Byte; begin z_asc:=StrToInt(Edit2.Text); z:=Chr(z_asc); Label10.Caption:=IntToStr(z_asc); Label10.Caption:=z end;
10.3
Speicherplätze für Zeichenfolgen (Typ String) ȱȱ ȱȱ£ȱȱȱȱȱȱǮȃȱȱǮȃȱ ǰȱ ȱ ȱ CharȬ£ȱ £ȱ ȱ ȱ ȱ £ȱȱǯȱȱ
ŘŗŘȱ
ŗŖȱȱȱ§£ȱ
ȱãȱûȱȱ£ǰȱȱȱ¡ǰȱǯȱǯȱȱǰȱ ȱǯȱȱȱ£ȱȱȱȱ txȱ ȱȱȱ ȱȱȱȱDZȱ var tx: ShortString; var tx: String;
ȱȱȱȱȱŘśŜȱ¢ȱûȱtxȱǯȱȱȱ¢ȱ ȱȬ ǰȱ ȱ §ȱ £ȱ ǰȱ ȱ ȱ ¢ȱ §ȱ ȱ ȱ ȱ ǯȱȱȱȱȱȱǮ§¢ȃǯȱȱȱȱ£ȱ ǯȱȱ Ȋȱ ȱȱ ShortStringȬ£ȱãȱȱȱȱ£ȱȬ ¡§ȱȱŘśśȱȱȱ ǯȱȱ ȱ§ȱȱȱãǰȱȱȱȱ£ȱȱ ¢ȱ Stringȱǯȱȱȱȱȱȱȱ£ȱǰȱȱȱ £ȱûȱ £§ȱ£ǯȱȱ ȱ ȱȱ§ȱ ȱđȱȱ ShortStringȬ§£ȱ ǰȱȱȱûȱȱ ȱãȱȱǯȱȱ §ǰȱȱȱȱȱŗŘǯŚǰȱ ȱȱûȱȱȱȬ£ǰȱ ȱȱȱŞȱȱȱŘŖŖśȱǰȱ ȱ ǰȱ§£ȱ ȱ ¢ȱ Stringȱ £ȱ ǰȱ ȱ ȱ ȱ Ȭȱ ȱ Ȭ £ȱValȱȱȱShortStringȱǯȱȱȱ ûȱȱȱȱȬȱȱȱŝȱȱȱȱȬ ȱȱȱŘŖŖşȱ ȱȱShortStringȱȱStringȱȱ ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ǰȱȱȬȱûȱȱStringȬȱ£ȱûȱǯȱȱ ȱȱȱȬȱ ȱ ȱȱ£ȱ£ȱȱȱ£ǰȱ ȱ ȱȱȱȱȱȱȱȬǰȱȱȱ ShortStringȬȱȱ StringȬ§£ȱ§ǯȱȱ ȱ ȱ ȱ ȱ û£ȱ ȱ ȱ ȱ ¡ȱ ȱ ǰȱ ȱ§ȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ ûȱ Ȯȱ ȱ ȱ ȱ ãȱ ȱ ȱȱ ȱȱ£ǯȱ ȱȱ ȱ
ȱ
11 11.1
Arbeit mit Zeichenfolgen (Strings) String-Funktionen und -Prozeduren
Ȭȱ ȱ ȱ ȱ ȱ StringȬȱ ȱ StringȬ£ȱ ǰȱ ȱ ȱ ȱ ȱ £ȱ ¡ȱ ȱ ¡¢ȱ ãȱ ȱãǯȱȱ ȱȱȱȱ£ȱDzȱȱ ȱ ǰȱȱȱ ȱȱȱȱȱȱ£ȱȱȱȱȬ ȱ ǯȱȱ ȱȱãȱ ȱǰȱȱȱȱãDzȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ £ǯȱ ȱ ȱ ãȱ Dzȱ ȱ ȱ ȱ ȱ ȱ
ȱȱȱǯȱ ȱ ȱ ȱȱȱȱȱȱȱȬ ȱȱȱȱȱȱȱȱȱȱ ȱȱȱ ûǯȱ £ȱȱûǰȱȱȱȱǯȱȱȱ ȱȱȱ§ȱȱȱȱȱȱȱ§Ȭ £ȱ ǰȱ ȱ ȱ ȱ ȱ ãȱ §ȱ ȱ §£ȱ ǯȱ £ȱ ȱ ȱ ǰȱ ǯȱ ǯȱ ȱ ȱ ȱ ȱ Ȭ ȱȱ£ȱǯȱ
11.1.1 Wichtige String-Funktionen ȱ ȱȱ= CompareStr
Concat
ȱ
ȱ= ȱã= IntegerDZȱȱ StringDZȱȱȱ ǁŖǰȱȱŗǯȱ¡ǯȱȱȱȱ StringDZȱ£ ȱ= ȱȱȱãđȱȱŘǯȱȱ ƽŖǰȱȱȱȱȱ ȱȱȱȱ ǀŖǰȱȱŗǯȱȱ¡ǯȱȱ ȱȱȱȱȱŘǯȱȱ StringDZȱȱȱȱȱȱ £ ȱȱȱStringǰȱȱ ȱȱȱȱȱȱȱȱȱȱ= ûȱ ȱȱ
ŘŗŚȱ
ȱ
ŗŗȱȱȱȱȱǻǼȱ
Copy
Length
LowerCase
Pos
UpperCase
StringDZȱǰȱȱȱȱȱ StringDZȱȱȱȱȱǰȱȱ ȱȱȱȱȱȱȱȱȱIntegerDZȱȱȱȬȱ ȱȱȱȱȱȱȬȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱǰȱȱ ȱȱȱȱȱȱ IntegerDZȱ£ȱȱ£ãȬȱ ȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱ= IntegerDZȱ§ȱȱȱ StringDZȱȱȱȱȱ= ȱȱȱȱȱ StringDZȱȱȱȱ Stringǰȱȱȱ đȱȱȱ
ȱȱȱđȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱȬȱ ȱȱȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ= ByteDZȱǰȱȱȱ StringDZȱȱȱ £ȱǰȱȱȱȱ ȱȱȱȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱȱȱȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱȱȱȱȱȱ StringDZȱȱȱ= ȱȱȱȱȱȱ StringDZȱȱȱȱ Stringǰȱȱȱ ȱȱȱȱȱ ȱȱȱđȱȱ đȱȬȱ ȱȱȱ đȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱȱ
ȱȱIntToStrǰȱȱȱ ȱ ȱȱȱȱ££ȱȱȬ £ȱ £ȱ ȱ ȱ ȱ ãǰȱ ȱ ȱ ȱ ȱ Ȭ ȱ £ ǯȱȱ ȱ ȱ ¡ǰȱ ȱ ȱ ǯȱȬ ȱ ȱǰȱȱ ȱȱȱȱǯȱȱ ûȱãȱ ȱȱȱȱȱȱȱȱ DZȱȱ IntToStr
StringDZȱǰȱȱ Integer ȱByte:ȱ£ǰȱȱ ȱȱȱȱȱ ȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȬȱ ȱȱȱȱ£ȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ Ȭȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ
đȱ ȱ ȱ ȱ ȱ ȱ StrToIntǰȱ ȱ ȱ ȱ ȱ ȱǰȱ ȱȱȱ£ȱȱ£ȱȱ ȱȱǰȱ£ȱ ȱ£ȱȱȱãDZȱ StrToInt
IntegerDZȱǰȱȱȱ
ȱȱȱȱȱȱȱȬȱ ȱȱȱȱȱȱ ȱȱȱǻȱȱãǼȱ
String:ȱǰȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱ ȱȱ£ȱȱȱȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ Ȭȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱȱ
ŗŗǯŘȱȱǰȱ§ȱȱãȱȱȱȱȱ
Řŗś
11.1.2 Wichtige String-Prozeduren ȱȱȱȱȱȱȱȱ§ǰȱȱ ȱȱ ȱ£ǰȱȱ ȱȱȱȱȱȱȱȱ ȱ ȱãǰȱȱûǯȱȱ ȱȱ£= Delete
Insert
ȱ
= £ȱã= ȱȱȱȱ StringDZȱȱȱȱǰȱȱ ȱãȱ IntegerDZȱȱȱȬȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱǰȱȱ IntegerDZȱ£ȱȱ£ãȬȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱ= ȱûȬȱ String: ûȬȱ ȱȱȱȬ String: Ȭȱ ȱȱȬ Integer: ȱ ȱȱȬ ûȱ
ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel!!11ȱȱzipȬȱ DKap11.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap11 ȱȱȬȱ proj_11?.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap11 ȱȱȱproj_11?.bdsprojȱ£ §ǯȱȱ
ȱ £ȱ ȱ ȱ ȱȱ ȱ ȱȱȱ £ȱ £ȱ ǻDZȱȱȱȱȱŗŗǯŘǯŗȱȱȱȱȱȱproj_1121.dprȱ £ ǯȱproj_1121.bdsprojǼȱȱ
ȱ
11.2
Finden, Zählen und Löschen von Zeichen und Mustern
11.2.1 Finden von Zeichen und Mustern ȱ ŗŗǯŗȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ãȱ ǯȱȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ǰȱȱȱȱȱȱ¡ȱȱȱȱEdit1ȱȬ ȱ ȱ ȱ ȱ 'e'ȱ ȱ ǯȱ ȱ ãȱ ȱ ȱ ãȱ ȱ £ §đȱ ȱ ȱ Posȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱȱȱȱȱǰȱȱȱȱȱȱȱǯȱȱ
ŘŗŜȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱ
ȱ ȱŗŗǯŗDZȱȱȱȱȱȱȱ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ 'e'ȱ ȱȱ ȱ ȱȱ Posȱǰȱ Ȭ ȱȱûȱȱȱ£ȱ ǯȱȱ ȱȱȱȱ£ȱ£ȱ ȱȱȱ£ ȱǰȱȱȱ ȱȱȱ£ȱȱǰȱȱđǯȱȱȱȱȱȱȱ procedure TForm1.Button1Click(Sender: TObject); var text, zeichen: ShortString; begin text:=Edit1.Text; zeichen:='e'; if Pos(zeichen,text)>0
then Label2.Caption:='ja' else Label2.Caption:='nein'
end; procedure TForm1.Button2Click(Sender: TObject); var text, zeichen: ShortString; begin text:=Edit1.Text; zeichen:=Edit2.Text; if Pos(zeichen,text)>0 then Label4.Caption:='ja' else Label4.Caption:='nein' end;
ȱ£ȱȱȱȱȱ£ȱȱǻǯȱǯȱȱȱȬ Ǽȱ¡ǯȱȱ ȱ ãȱ ȱ ȱ ȱ ȱ ȱ ȱ Posȱ ȱ £ȱ ãȱ ȱ ȱȱȱȱ£DZȱ
ŗŗǯŘȱȱǰȱ§ȱȱãȱȱȱȱȱ
Řŗŝ
procedure TForm1.Button3Click(Sender: TObject); var text, muster: ShortString; begin text:=Edit1.Text; muster:='chs'; if Pos(muster,text)>0 then Label5.Caption:='ja' else Label5.Caption:='nein' end; procedure TForm1.Button4Click(Sender: TObject); var text, muster: ShortString; begin text:=Edit1.Text; muster:=Edit3.Text; if Pos(muster,text)>0 then Label7.Caption:='ja' else Label7.Caption:='nein' end;
ȱ ȱ ȱ ȱ ȱ ȱ £Ȭȱ zeichenȱ ȱ musterȱȱȱȱ£ȬȱȱȱȱȬ ȱȱȱȬ¡ȱ ǯȱȱ ȱ§ȱȱȱȱȱȱ¡¡ŘŝşŜ¢ȱ §ȱãȱȮȱȱ §Ȭ ȱȱȱ ǯǯǯȱ
11.2.2 Zählen von Zeichen und Mustern ȱ ȱ ȱȱ£§ȱǻȱŗŗǯŘǼȱ£ȱȱûȱ ȱ§ȱȱȱ§ȱȱȱǯȱ
ȱȱȱ ȱŗŗǯŘDZȱ§ȱȱȱȱȱ
ŘŗŞȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱûȱ ȱȱȱȱ ȱǯȱȱ ûȱȱ£ȱ£ȱȱȱȱ ȱ ȱȱLengthǰȱȱȱǰȱȱ§ȱȱȱ¡ȱ£Ȭ ǯȱđȱȱǰȱ ȱȱȱ ȱ£ȱȱûȬ ǯȱȱ ȱȱ Copyǰȱȱȱ ȱ ȱȱȱ¡ȱȱûȱȱȬ ãȱãǰȱȱȱȱȱȱȱȱ£ȱãȱ ȱ§ £ȱ ȱ ȱ ȱ şȱ ûȱ §ȱ §ǰȱ ȱ ȱ ȱ Ȭ ǰȱȱȱȱȱ ȱǰȱȱ£ȱãȱ đȱûȱ ȱ ǰȱȱȱȱȱȱȱȱȱȱ ȱȱǻȱȱ£ȱȱǰȱȱȱȱȱȱȱȱȱ Ǽǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ǯȱ ȱȱȱȱǰȱȱ ȱãȱȱȱȱ ȱ£ȱǯȱȱ ȱȱȱ ȱȱȱȱȱȱȱȱ£ȱ zeichenǯȱȱ procedure TForm1.Button1Click(Sender: TObject); var text, zeichen
: ShortString;
// Vereinbarungen
lepos, anzahl,i : Byte; begin text:=Edit1.Text;lepos:=Length(text); zeichen:='e'; anzahl:=0; for i:=1 to lepos do
//lepos=letzte Position //Belegung mit statischem Text //Zählwerk auf Null setzen //Zählschleife
begin if Copy(text,i,1)=zeichen then anzahl:=anzahl+1 end; Label2.Caption:=IntToStr(anzahl) end;
ȱ
//Konvertierung für Ausgabe
ŗŗǯŘȱȱǰȱ§ȱȱãȱȱȱȱȱ
Řŗş
procedure TForm1.Button2Click(Sender: TObject); var text, zeichen
: ShortString;
lepos, anzahl,i : Byte; begin text:=Edit1.Text;lepos:=Length(text); zeichen:=Edit2.Text;
//Belegung aus Textfenster geholt
anzahl:=0; for i:=1 to lepos do
//Zählschleife
begin if Copy(text,i,1)=zeichen then anzahl:=anzahl+1 end; Label4.Caption:=IntToStr(anzahl) end;
ȱ§ȱǰȱ ȱȱȱȱȱ£ȱǰȱȱȬ ȱǰȱǯȱǯȱȱȱȱTextmustersǰȱ£§ȱ ȱǵȱȱ ȱȱȱȱCopyȬȱ if Copy(text,i,1)=zeichen then anzahl:=anzahl+1
ȱȱȱȱ§ȱȱ¡ȱǯȱȱȱǯȱȱ ûȱȱ§ȱȱ¡ȱ ȱȱȱȱȱ£Ȭ ȱȱ£ȱȱȱȱmulenȱǻûȱ§Ǽȱ ǯȱ procedure TForm1.Button3Click(Sender: TObject); var text, muster
: ShortString;
lepos, mulen, anzahl, i: Byte; begin text:=Edit1.Text;lepos:=Length(text); muster:='chs';mulen:=Length(muster);
//mulen=Muster-Länge
anzahl:=0; for i:=1 to lepos do begin if Copy(text,i,mulen)=muster then anzahl:=anzahl+1 end; Label5.Caption:=IntToStr(anzahl) end;
ŘŘŖȱ
ŗŗȱȱȱȱȱǻǼȱ
procedure TForm1.Button4Click(Sender: TObject); var text, muster
: ShortString;
lepos, mulen, anzahl,i : Byte; begin text:=Edit1.Text ; lepos:=Length(text); muster:=Edit3.Text;
//Muster aus Textfenster holen
mulen:=Length(muster); anzahl:=0; for i:=1 to lepos do begin if Copy(text,i,mulen)=muster then anzahl:=anzahl+1 end; Label7.Caption:=IntToStr(anzahl) end;
11.2.3 Löschen von Zeichen und Mustern ȱ ŗŗǯřȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ãȱ DZȱ
ȱȱȱ ȱŗŗǯřDZȱãȱȱȱȱȱȱ ȱȱȱ£ȱDZȱȱ ȱȱ§ȱȱȱ CopyȬȱȬ ȱ ȱǰȱ ȱȱȱȱ£ȱ ȱȱǰȱȱȱȬ ȱ ȱȱȱ ȱȱ£ȱDeleteǯȱȱ ȱȱǰȱȱ ȱȱȱ£ȱDZȱȱ
ŗŗǯŘȱȱǰȱ§ȱȱãȱȱȱȱȱ
ŘŘŗ
procedure TForm1.Button1Click(Sender: TObject); var text, zeichen: ShortString; lepos, i
: Byte;
begin text:=Edit1.Text; lepos:=Length(text); zeichen:='e'; for i:=1 to lepos do begin if Copy(text,i,1)=zeichen then Delete(text,i,1) end; Label2.Caption:=text end;
ȱ ǵȱ ȱ ȱ £ȱ §ȱ ȱ ȱ Ȃȱ ȱ £ȱ ǯȱȱȱ ȱȱȱȱŗŗǯŚȱȱ£ȱȱȱǷȱȱ
ȱȱ ȱŗŗǯŚDZȱ¡ȱȱȱȱ£ȱ ȱȱ ȱȱȱ§ǯȱȱȱȱȱ£ǵȱȱ DZȱ£ȱtextȱȱ£ȱşȱȱȱȱȱ exeeyeeezǯȱleposȱȬ §ȱȱȱşǯȱȱȱȱ§ȱȱDZȱ iȱ ȱȱ 1ȱ£ǯȱȱȱȱȱȱ ‘e‘ǯȱȱȱ Deleteȱ £ȱǰȱȱ£ȱtextȱȱȱȱȱxeeyeeezǯȱ iȱ ȱȱ 2ȱ£ȱȱȱȱȱȱȱ£ ȱȬ §ȱ ȱ ȱ textǯȱ xeeyeeezȱ ȱ ȱ £ ȱ ȱ ȱ ‘e‘ǰȱ ȱ ȱ ȱãǰȱtextȱȱxeyeeezǯȱ iȱ ȱ ȱ 3ȱ £ǰȱ ȱ ȱ xeyeeezȱ ȱ ȱ ȱ ȱ řȱ ǯȱ ȱȱ‘e‘ǰȱȱȱDeleteǯȱ iȱ ȱȱ 4ȱ£ǰȱ xeyeeezȱ ȱȱȱŚȱǯȱ ‘e‘ȱǰȱãȬ ǰȱȱȱȱtextDZȱxeyeezǯȱ iȱ ȱȱ 5ȱ£ǰȱ xeyeezȱ ȱȱȱśȱǰȱ ‘e‘ȱǰȱ Ȭ ȱãǰȱȱȱȱtextDZȱxeyezǯȱȱ
ŘŘŘȱ
ŗŗȱȱȱȱȱǻǼȱ
iȱ §ȱ ȱ ȱ ȱ 6ȱ ȱ 9ǰȱ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ
ȱȱȱȱȱȱȱãǯȱȱ
ȱ §ȱ ȱ ȱ ȱ DZȱ ǰȱ ȱ ȱ ȱ Ȭ ȱȱȱ£ȱȱ§ȱǻȱȱû£Ǽȱǰȱȱȱ iȱȱ ȱ §ȱûǰȱȱȱȱȱ£ǯȱȱ ȱȱȱãǵȱȱ ȱûȱȱûȱǰȱȱȱȱȱȱ Ȭ ȱȱȱȱȱȱȱȱȱtextȱȱ ǯȱûȱ £ȱ ȱȱ£ ȱȱjDZȱ for i:=1 to lepos do begin for j:=1 to i do begin if Copy(text,j,1)=zeichen then Delete(text,j,1) end end;
ȱ ¡ȱ ȱ £ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱȱȱȱȱûȱ§ȱ DZȱȱ ȱȱȱȱ§ȱȱȱ£ȱǰȱãȱȱbegin...endȬ ȱ ȱ ǯȱȱ ȱȱȱ£ȱȱȱȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); var text, zeichen: ShortString; lepos, i,j
: Byte;
begin text:=Edit1.Text;lepos:=Length(text); zeichen:='e';
//oder zeichen:=Edit2.Text; für Button 2
for i:=1 to lepos do for j:=1 to i do if Copy(text,j,1)=zeichen then Delete(text,j,1); Label2.Caption:=text end;
ȱ ȱ ȱ ȱ ãȱ ȱ ǰȱ ȱ ȱ ȱ ȱ CopyȬȱ ȱ ȱȱȱDeleteȬ£ȱȱ§ȱȱȱûȱ DZȱȱ
ŗŗǯřȱȱ£ȱȱȱȱȱ
ŘŘř
procedure TForm1.Button3Click(Sender: TObject); var text, muster lepos,mulen,i,j
: ShortString; : Byte;
begin text:=Edit1.Text;lepos:=Length(text); muster:='wa';
//oder muster:=Edit3.Text; für Button 4
mulen:=Length(muster); for i:=1 to lepos do for j:=1 to i do if Copy(text,j,mulen)=muster then Delete(text,j,mulen); Label5.Caption:=text end;
ûȱǰȱȱȱȱȱȱ§ȱȱȱȱȱȬ ǰȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ǰȱ ȱȱȱȱ§ȱȱȱȱȱ£ȱȱǯȱȱ
11.3
Ersetzen von Zeichen und Mustern ȱŗŗǯśȱ£ȱȱȱȱȱȱȱȱȱȱȬ Dzȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱȱ£ȱȱȱȱ£ ǯȱȱȱȱȱ¡ȱȬ ȱ ǯȱȱ
ȱȱȱ ȱŗŗǯśDZȱ£ȱȱȱȱȱȱ ȱãȱȱȱȱ ȱ ȱ£ ȱȱȱDZȱȱ ȱ ȱ ȱ §£ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ãȱ ȱȱ£ ǯȱȱȱ ȱȱȱInsertȬ£ȱȱûǯȱȱ
ŘŘŚȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱȱȱȱȱȱ ȱȱȱȮȱȱȱȱ£ȱ ȱǯȱ ȱ£ ȱȱȱȱ£ȱȱȮȱȱȱȱȱȱȱ Ȭǯȱȱ
11.3.1 Finden, Löschen und Einfügen ȱ ȱȱ§£ȱûȱȱȬȱȱrausȱȱûȱȱȬȬ ȱȱ reinȱǰȱȱȱȱ£ȱ£ȱ ȱȱȱȬ ȱȱȱȱȱ ȱȱȱȱDZȱȱ ȱ ȱ ȱ CopyȬȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ §Ȭ ȱ ȱ ȱ ãȱ ȱ Deleteȱ ȱ ȱ Insertȱ ȱ ûȱ ȱ££ȱȱȱDZȱȱȱ procedure TForm1.Button1Click(Sender: TObject); var text, raus, rein: ShortString; lepos, i,j
: Byte;
begin text:=Edit1.Text; lepos:=Length(text); raus:=Edit2.text; rein:=Edit3.Text; for i:=1 to lepos do for j:=1 to i do if Copy(text,j,1)=raus then begin Delete(text,j,1); Insert(rein,text,j) end; Label4.Caption:=text end;
ȱȱȱȱȱȱǰȱȱȱȱȱ jȬȱǰȱ£ ȱ ǰȱȱȱȱȱȱȱ ǯȱȱ ȱȱȱjȬȱȱȱȱȱȱȱǮȃȱȮȱ§ȱ ȱ ȱ ǯȱ ȱ iȬȱ §ȱ ȱ ȱ jȬǯȱ ȱ ȱ ȱ ȱȱȱûȱ§ȱ ȱ ǯȱȱ ȱȱȱȱ£ȱDZȱȱȱȱûǰȱȱȱǰȱ ȱ ȱȱȱ ȱȱûȱDZȱȱȱ
ŗŗǯřȱȱ£ȱȱȱȱȱ
ŘŘś
for i:=1 to lepos do begin
//Inneres der i-Schleife beginnt
for j:=1 to i do begin
//Inneres der j-Schleife beginnt
if Copy(text,j,1)=raus then begin
//Inneres des Tests beginnt
Delete(text,j,1); Insert(rein,text,j) end
//Inneres des Tests endet
end
//Inneres der j-Schleife endet
end;
//Inneres der i-Schleife endet
ȱ£ȱȱȱȱ £ȱȱȮȱȱȱȬ ȱǯȱȱ ȱȱ ȱȱȱȱȱ£ȱ£ȱȬ £ȱȱȱȱǰȱȱûȱȱȱȱȱDZȱ procedure TForm1.Button2Click(Sender: TObject); var text, raus, rein: ShortString; lepos,mulen,i,j : Byte; begin text:=Edit1.Text; raus:=Edit4.text; rein:=Edit5.Text; lepos:=Length(text); mulen:=Length(raus); for i:=1 to lepos do for j:=1 to i do if Copy(text,j,mulen)=raus then begin Delete(text,j,mulen);Insert(rein,text,j) end; Label7.Caption:=text end;
ȱȱ ȱ ȱȱȱ§ǯȱ£ȱ ȱȱȬ ȱȱȱȱû£ȱȱȱǰȱȱȱǯȱȱ ǰȱ ȱȱȱȱ§ǰȱ ãȱȱ§ȱȱȱ ǮȬȃȱǯȱȱ
ŘŘŜȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱȱŗŗǯŜȱȱȱŗŗǯŝȱȱ ȱȱǯȱȱȱǵȱȱ
ȱȱ ȱŗŗǯŜDZȱȱ£ȱȱ ȱȱ£ȱȱȱȱ
ȱȱȱ ȱŗŗǯŝDZȱȱ£ȱȱȱ ȱȱ£ȱȱ ȱ ȱȱȱȱȱǯȱȱȱiȱ ȱȱȱ ȱȱ£ȱ§ȱȱûȱ¡ǰȱȱȱŗŗǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ ȱ ǻȱ ŗŗǯŜǼȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ŗŗǯŝǼȱ §ȱ Ȭ ǯȱȱ ȱđǰȱȱ£ȱȱȱȱȱ£ȱ£ǯȱȱ ȱ §ȱ£ȱûǰȱ ȱȱûȱǰȱȱȱȱȱȱ¡ȱȱ £ȱȱȱȱȱȱǰȱǯȱãȱȱȬ ûȱ ǯȱȱđȱȱ Ƿȱȱ ȱ ȱȱȱȱãȱȱȱ£ ǰȱȱȱ ȱ£ȱDeleteȱȱInsertȱǯȱȱ
11.3.2 Neuaufbau eines zweiten Strings ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ £ȱ ȱ ȱ ȱ
ȱDZȱ
ŗŗǯřȱȱ£ȱȱȱȱȱ
ŘŘŝ
procedure TForm1.Button1Click(Sender: TObject); var alttext, neutext, raus, rein, zeichen: ShortString; lepos, i
: Byte;
begin alttext:=Edit1.Text;lepos:=Length(alttext); raus:=Edit2.text; rein:=Edit3.Text; neutext:='';
//In neutext soll das Ergebnis entstehen
for i:=1 to lepos do begin zeichen:=Copy(alttext,i,1);
//Zeichen wird herauskopiert
if zeichen=raus then neutext:=neutext+rein else neutext:=neutext+zeichen end; Label4.Caption:=neutext end;
ȱȬȱneutextȱ ȱ£ȱǰȱǯȱǯȱȱȱȱȱ''ȱȬ ȱȮȱȱȱȱȱȱȱ£ȱȱ§ ȬȱȱȬ §£ǯȱȱ đȱ ȱȱûȱȱȱȱȱȱǯȱȱȱ ȱǮȃǰȱ ȱȱȱ££ȱȱneutextȱûǯȱȱ ȱȱȱǮȃǰȱȱȱ£ȱ ǰȱȱ ȱȱȱneutextȱȬ ǯȱȱ ȱȱȱȱ£ȱneutextȱđȱȱȱǯȱȱ tȱȱȱǰȱȱȱȱȱȱȱȱãȱȬ ȱȱãȱDZȱȱ for i:=1 to lepos do begin zeichen:=Copy(alttext,i,1); if zeichen raus then neutext:=neutext+zeichen end;
ȱ ȱȱȱȱȱȬȱ neutextȱ ǰȱ ȱȱ ȱȱȱȱȱã£ȱǯȱ
ŘŘŞȱ
ŗŗȱȱȱȱȱǻǼȱ
ûȱȱȬ£ȱûȱ ȱ£ȱȱȱȱȬǯȱȬ ȱȱ ȱȱ ȱǰȱȱȱȱ§ȱȱ§ȱ ȱãǯȱȱ ȱûȱ ȱȱȱûȱǰȱȱȱȱȱȱȱ ȱȱȱ§ȱȱǮûȃȱ ǯȱȱ ȱȱ ȱȱ ȱȱ£ȱ posǰȱȱȱȱȬ ȱȱ ǰȱȱȱȱ§ȱ¢ȱǯȱȱ ȱ ȱ ǮȬȃȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱȱǮȬȃȱȱȱȱȱȱȱ§ȱȱDZȱ procedure TForm1.Button2Click(Sender: TObject); var alttext, neutext, raus, rein, muster, zeichen: ShortString; lepos, i, pos, rauslen
: Byte;
begin alttext:=Edit1.Text; raus:=Edit4.text; rein:=Edit5.Text; lepos:=Length(alttext); rauslen:=Length(raus); neutext:=''; pos:=1; for i:=1 to lepos do begin muster:=Copy(alttext,pos,rauslen); zeichen:=Copy(alttext,pos,1); if muster=raus then begin neutext:=neutext+rein; pos:=pos+rauslen end else begin neutext:=neutext+zeichen;pos:=pos+1 end end; Label7.Caption:=neutext end;
ȱȱȱȱȱȱ ȱȱ ȱûȱȱȬ ȱȱȱǰȱȱȬãDZȱȱȱ if muster=raus then begin neutext:=neutext+''; pos:=pos+rauslen end else begin neutext:=neutext+zeichen;pos:=pos+1 end
ŗŗǯśȱȱȱȱȱ
11.4
ŘŘş
Palindrom-Test ȱ ȱ đȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ§ȱ ȱȱȱȱȱȱǯȱȱ ȱđȱȱȱ ȱȱȱȱȱŗŗǯŞȱ£Ȭ DZȱȱ
ȱȱȱ ȱŗŗǯŞDZȱȱ ûȱȱȱȱûȱȱȱȱǯȱȱ ȱãDZȱȱûȱȱȱalttextȱ ȱȱȱneutextȱDZȱ procedure TForm1.Button1Click(Sender: TObject); var alttext, neutext, zeichen: ShortString; lepos, i
: Byte;
begin alttext:=Edit1.Text; lepos:=Length(alttext); neutext:='';
//in neutext soll das Ergebnis entstehen
for i:=1 to lepos do begin zeichen:=Copy(alttext,i,1); neutext:=zeichen + neutext
//Zeichen links anketten
end; Label2.Caption:=neutext end;
11.5
Vergleiche von Zeichenfolgen
11.5.1 Lexikografischer Vergleich ȱ ȱ ȱ £ȱ ȱ £ȱ £ȱ ȱ ȱ ȱȱȱCompareStrDZȱȱ
ŘřŖȱ
ŗŗȱȱȱȱȱǻǼȱ
procedure TForm1.Button1Click(Sender: TObject); var tx1, tx2 : ShortString; vergleich: Integer; begin tx1:=Edit1.Text; tx2:=Edit2.Text; vergleich:=CompareStr(tx1,tx2); if vergleich0 then Label3.Caption:='Der untere Text steht im Telefonbuch vorn' end;
ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ¡Ȭ ȱDZȱȱ ȱǮȃȱȱȱȱȱȱȱǮãđȃȱǯȱȱ ȱ ȱ £ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ȱȱȱ£ ȱȱȱ ǯȱȱǰȱȱ£Ȭ ȱȱȱȱȱȱǰȱȱȱȱȱ Ȭ ȱȱǻMaiȱȱMaierǼǯȱȱ ûȱ ȱ Ȭȱ ȱ ȱ ȱ ȱ ASCIIȬȱ ǻȱ Ȭ ȱŗŖǯŘǼǯȱȱȱȱŗŗǯşȱȱŗŗǯŗŘȱ ȱȱȱûDZȱȱ
ȱȱȱ ȱŗŗǯşDZȱȱȱ§ȱȱȱ û£ȱ
ȱȱȱ ȱŗŗǯŗŖDZȱ đȱȱ ȱ
ŗŗǯśȱȱȱȱȱ
Řřŗ
ȱ
ȱȱȱ ȱŗŗǯŗŗDZȱȱȱȱ
ȱ ȱŗŗǯŗŘDZȱ ȱȱȱȱŞȱ ȱ£ȱȱȱȱ ȱȱDZȱȱ ȱ ȱȱȱȱ¡ȱȱ ȱȱȱȮȱȱȱǯȱ ȱȱȱȱȱ ȱȱȱȱȱȱȮȱȱȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱȱǯȱȱ ȱȱȱ CompareStrȱãȱ ȱȱȱ ȱȬ £ȱȱȱȱ DZȱ if tx1tx2 then Label3.Caption:='Der untere Text steht im Telefonbuch vorn'
11.5.2 Minimax in Listen ȱ£§ȱ§ȱȱȱȱȱȱȱ£ȱȬ §ȱ ȱ£ ȱǯȱ Button1ȱ§ȱȱȱȱȱȱ§ȱ ǰȱButton2ȱ§ȱȱȱȱ¡ȱ£ȱǯȱȱ
ŘřŘȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱȱ§ȱȱȱȱȱȱ¡ȱđȱ¡Ȭ ǯȱȱ
ȱȱ ȱŗŗǯŗřDZȱȱȱ§ȱȱȱȱȱ ȱ ȱȱȱȱ£ȱ£ȱȱ ȱȱȱȱȬ ȱȱȱȱDZȱ procedure TForm1.Button1Click(Sender: TObject); var maxland
: ShortString;
lepos, maxpos, i: Byte; begin lepos:=Listbox1.Items.Count-1; maxland:=Listbox1.Items[0];
//Erste Zeile wird Kandidat
maxpos:=0;
//Position der ersten Zeile
for i:=1 to lepos do if Length(Listbox1.Items[i]) > Length(maxland) then begin maxland:=Listbox1.Items[i]; //Aktualisierung des Kandidaten maxpos:=i
//Aktualisierung der Position
end; Listbox1.ItemIndex:=maxpos
//Anzeige
end;
ȱ ǰȱ ǯȱ ǯȱ ȱ ȱ ȱ ȱ ȬȬ §£ȱ maxlandȱȱ maxposȱȱȱȱȱ£ȱȱȱ ǰȱ ȱȱ§ȱȱȱȱȱȱ ǯȱȱȱ ȱȱ
ŗŗǯśȱȱȱȱȱ
Řřř
ûȱ ȱȱȱ§£ȱȱȱ£ ȱȬ £ȱ£ȱȱ ȱȱȱȱȱȱȱǰȱ ȱȱ ȱȱȱȱȱ ǰȱȱ¡ȱãđȱǯȱȱ ȱDZȱȱ ȱ ȱǰȱ ȱȱȱȱ ǰȱȱȱȱ ȱȱȱ ûDZȱȱ procedure TForm1.Button2Click(Sender: TObject); var maxland
: ShortString;
lepos, maxpos, i: Byte; begin lepos:=Listbox1.Items.Count-1; maxland:=Listbox1.Items[0];
//Erste Zeile wird Kandidat
maxpos:=0;
//Position der ersten Zeile
for i:=1 to lepos do if Listbox1.Items[i] > maxland then begin maxland:=Listbox1.Items[i]; //Aktualisierung des Kandidaten maxpos:=i
//Aktualisierung der Position
end; Listbox1.ItemIndex:=maxpos
//Anzeige
end;
ȱȱ ȱŗŗǯŗŚDZȱ¡ȱ£ȱȱ ȱ
ŘřŚȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱȱ£ȱȱȱ£ ȱ£ȱȱȱȱ f Listbox1.Items[i] > maxland then §ȱȱ ȱȱ if CompareStr(Listbox1.Items[i],maxland)>0 then
ȱãǯȱȱ ȱ ȱ ǻȱ Ǽȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ +, ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ ǯȱȱ ûȱȱȱȱȬ§£ȱȱ ȱȱȱȱ ȱStringȬȱConcatȱȱCompareStrǯȱȱ
11.5.3 Lottoziehung ȱȱȱȱȱȱȱȱȱ£§ǯȱ ȱȱ ȱȱȱŜȱȱŚşȱȱǯȱȱ ȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ŝǯŚǯřȱ ȱ ȱ£ȱRandomizeȱȱȱȱRandomDZȱȱ procedure TForm1.Button1Click(Sender: TObject); var zahl:Byte; begin Randomize; zahl:=1+Random(49); ShowMessage(IntToStr(zahl)) end;
ȱ ȱȱȱǵȱȱȱȱǵȱ£ȱȱ ȱ ȱȱȱȱListboxǵȱȱ £ȱ ȱ£§£ȱȱȱȱȱȱȱ£§ǯȱȱ ȱ £ȱ Items.Addǰȱ ȱ ȱ ȱ ŗřǯřǯŜȱ ȱ ȱ ȱ ȱ ǰȱ ãȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ DZȱ procedure TForm1.Button1Click(Sender: TObject); var zahl : Byte; zeile: ShortString; begin Randomize;zahl:=1+Random(49); zeile:= IntToStr(zahl); ListBox1.Items.Add(zeile) end;
ŗŗǯśȱȱȱȱȱ
Řřś
ȱȱȱȱȱǰȱ ȱȱȱȱȱȱ DZȱȱ
ȱȱȱ ȱŗŗǯŗśDZȱȱȱȱ ȱȱȱȱȱȱûǯȱûȱ ȱ§Ȭ ȱȱȱȱȱȱǵȱ ǯȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ListBox1ȱ ȱ ȱȱȱSortedȱǻȱŗŗǯŗŜǼDZȱ
ȱȱȱ ȱŗŗǯŗŜDZȱȱSortedȱȱȱ ȱ ǰȱ ȱ £ǰȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱ£ȱǰȱȱȱ¡ȱ£ǯȱȱ ȱ ȱ ŗŗǯŗŝȱ ȱ ȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱđǰȱȱȱȱȱȱȱǯȱȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ Ȯȱ ȱ ȱ ȱ ȱ Ȭ ȱǻ¡Ǽȱȱ ȱȱȱǯȱȱ ȱȱȱȱȱȱŗŗǯŗśȱȱŘȱȱȱŗşǰȱȱȱŗŗǯŗŝȱ§ȱ ǰȱȱȱȱȱȱȱȱȱ£ȱȱǯȱȱ ȱ ȱȱȱȱȱȱ if Length(zeile)=1 then zeile:=' '+zeile;
ûǰȱȱȱȱȱȱȱȱȱȱȱ ȱ£ȱȱǰȱ ȱȱȱȱȱȬ ȱǻȱŗŗǯŗŞǼǯȱ
ŘřŜȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱ
ȱ ȱŗŗǯŗŝDZȱȱ ȱ ȱ¡ȱȱ
ȱȱ ȱŗŗǯŗŞDZȱȱȱȱ£ȱ ȱ ȱ ȱ ǵȱ ȱ £ȱ ȱ ȱ ASCIIȬȱ 32ȱ ǻǯȱ ȱ ŗŖǯŘǼȱ Ȯȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ǯȱȱ ȱȱ ȱȱȱȱȱǯȱ ȱȱȱȱǵȱȱ ȱ ŗŗǯŗşȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ǰȱ ȱ £ Ȭȱȱȱȱȱȱȱ£ȱ Ƿȱȱ
ȱȱȱ ȱŗŗǯŗşDZȱ£ȱ ȱȱȱ£ȱǵȱȱȱȱȱȱȱȱûȱ ǰȱȱȱȬ ȱ£ȱȱȱȱǯȱȱ ȱǰȱ ȱȱȱȱȱ£Ȭ ȱ ǯȱȱȱ ȱȱ
ŗŗǯśȱȱȱȱȱ
Řřŝ
ȱ ȱ ȱ ȱ ãǰȱ ȱ ȱ £ȱ ȱ ǰȱ ȱȱȱ£ȱǯȱȱ ȱ ȱ£ȱȱȱȱ£ȱǯȱȱȱȱȱ ǰȱȱȱûȱǰȱȱȱȱ ȱȱȱ Ȭ ȱȱȱȱǯȱȱ procedure TForm1.Button1Click(Sender: TObject); var zahl,lepos, i : Byte; zeile
: ShortString;
ist_drin
: Boolean;
begin Randomize;zahl:=1+Random(49); if ListBox1.Count=0 then begin zeile:= IntToStr(zahl); if Length(zeile)=1 then zeile:=' '+zeile; ListBox1.Items.Add(zeile) end
ȱ ȱȱȱȱ£ ȱǰȱǯȱǯȱ ȱȱȱȱȱȱǯȱȱ ȱûǰȱȱȱȱ£ȱȱȱǻȱǼȱȱȱȱ ǰȱ§ȱȱȱȱȱȱ£ǯȱȱ
ȱȱȱȱȱ£ǰȱȱ ȱȱist_drinȱ£ȱ ȱ ȱȱȱFalseȱȱǻȱȱȱǼDZȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱ
else begin lepos:=ListBox1.Count-1; ist_drin:=False;
đȱ ȱȱȱǰȱȱȱȱȱ£ȱȱȱ ǯȱȱ ȱǰȱ ȱist_drinȱȱTrueȱǯȱ for i:=0 to lepos do if StrToInt(ListBox1.Items[i])=zahl then ist_drin:=True;
ȱȱ
ŘřŞȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱ ȱ ûȱ ȱ ǰȱ ǯȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱǯȱȱȱ if ist_drin=False then begin zeile:= IntToStr(zahl); if Length(zeile)=1 then zeile:=' '+zeile; ListBox1.Items.Add(zeile) end end end;
ȱȱǰȱ ȱȱ£ȱȱȱ£ȱȱ ȱǵȱȱ ȱ ȱ £ȱ ȱ ȱ ǰȱ ȱ đǰȱ ȱ £ȱ ȱ ȱȱȱǯȱ§ȱȱȱǰȱ ȱȱȱȱȬ ȱDZȱȱ if ist_drin=True then ShowMessage('Bitte noch einmal');
11.6
Ganze Zahlen mit Vorzeichen zulassen ȱȮŘŝȱȱȱ£ȱǯȱȱȱ ȱȱûȱǰȱȱȱȬ £ȱ £ ȱ ǰȱ ȱ £ȱ ȱ £ǰȱ ȱ ȱ ȱ ǮȬ ȱȱ ȃȱǻǯȱȱśǯŗǯŚǼǯȱȱ ȱ ȱ ȱȱȱ£ȱǮȃȱȱȱȮȱȱȬ ȱȱȱǯȱȱ ȱ ȱ £§ȱ ȱ ȱ ȱ ȱ ¡ǰȱ Ȭ ȱǰȱȱȱȱȱȱȱǯȱȱ ȱȱ ȱȱȱȱȱȱ Enabledȱȱ Falseȱûȱȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱ ȱ £ȱ£ȱûȱȱ ȱȱ£ȱȱǰȱ ȱȱȱãǰȱ ȱȱ¡ȱǯȱȱ ȱȱûȱDZȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ¡ȱ ȱ £ȱ ǰȱ ȱȱȱ£ǰȱȱȱ ǯȱȱȱȱ procedure TForm1.Edit1Change(Sender: TObject); var inhalt :ShortString; ist_ok : Boolean; lepos,i : Byte;
ŗŗǯŝȱȱȱ
Řřş
begin inhalt:=Edit1.Text; lepos:=Length(inhalt); ist_ok:=True;
//aus Textfenster holen //Unschuldsvermutung //Prüfen des ersten Zeichens
if (Copy(inhalt,1,1)'9') then ist_ok:=False; if (Copy(inhalt,1,1)='+') or (Copy(inhalt,1,1)='-') then ist_ok:=True; //Prüfen ab Zeichen 2 for i:=2 to lepos do if (Copy(inhalt,i,1)'9') then ist_ok:=False; if ist_ok then Button1.Enabled:=True
//Konsequenz
else Button1.Enabled:=False end;
ȱ ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ǰȱ ȱ ist_okȱ ȱ Falseȱ £ǯȱ ȱ ȱ ȱ Ǯ£ȃȱ ȱ ȱ ȱ £ȱ ȱȬȱȱ£ȱǰȱȱ ist_okȱ ȱ£ûȱȱ Trueȱȱ ǯȱȱȱ£ ȱȱȱȱȱȱȱǯȱ
ȱȱȱȱ ȱŗŗǯŘŖDZȱ £ȱȱȱ£ȱȱȱ
11.7
Quersummen
11.7.1 Einfache Quersummen ȱȱ¡ȱȱȱȱǰȱȱ ȱ£ȱȱȬ ȱ ȱ ȱ £ ȱ ȱ ȱ £ȱ ȱ ȱ £ȱ ȱȱǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱ Ȭ ǯȱ
ŘŚŖȱ
ŗŗȱȱȱȱȱǻǼȱ
ȱ
ȱȱȱ ȱŗŗǯŘŗDZȱȱȱȱȱȱȱȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ §ȱ Ȭ ȱûȱȱ¢ȱ DZȱȱȱȱǰȱ ȱȱ£ãȱȬ ȱȱȱ ȱStrToIntȱ£ȱȱDZȱ procedure TForm1.Button1Click(Sender: TObject); var inhalt : ShortString; lepos, i: Byte; sum
: Integer;
begin inhalt:=Edit1.Text; lepos:=Length(inhalt); sum:=0;
//Initialisierung
for i:=1 to lepos do if (Copy(inhalt,i,1)>='0') and (Copy(inhalt,i,1)='0') and (Copy(inhalt,i,1) var sehr_genau_x, sehr_genau_y: Extended;
) * £7 x_normal:=3.14159 G B
$ ) 5**£ £
@ £ $ > var
x_normal
: Single;
x_genau
: Double;
x_sehr_genau: Extended; begin x_normal
:=314.123456789123456789123456789;
x_genau
:=314.123456789123456789123456789;
x_sehr_genau:=314.123456789123456789123456789 end;
H 5 C$ C 5**@££ &
12.3
Ausgabe 7 £
C ?¡ I I " 5 ?¡ "Ȭ
Ř;Ŝ
Ř5**@£7£7
8 *$6 ) http://www.w-g-m.de/delphi.htm7Dateien für Kapitel!!12 zip$ DKap12.zip£J 8 *K*K* ŘŖŖ 6 Ř 6 proj_1231.dpr £ proj_1231.bdsprojǼ
M
"Ȭ§! $ )H£ ) ShowMessage$ B M ǻ Ǽ ) C B IntToStr C %¢$ ££5**£ $ 5 B*$6 B ' SingleToStr @ )
12.3.1 Prozedur Str
6£ 'Str@ Ȯ ! N 8 6£ £ ǻ£ % ' 5**@£Ǽ ) 7
6£ &7 6£ Str)£> "!
C 8 ) StringȬ! $ £ ǻ
Ǽ * > % £@*££ % % A 5 *£ £ ǻ5 $Ǽ >
Ř
Ř;
procedure TForm1.Button1Click(Sender: TObject); var x_normal: Single; x_genau:Double; x_sehr_genau: Extended; x_normal_str,x_genau_str,x_sehr_genau_str:String; begin x_normal
:=314.123456789123456789123456789;
x_genau
:=314.123456789123456789123456789;
//Belegung
x_sehr_genau:=314.123456789123456789123456789; Str(x_normal,x_normal_str);
//Konvertierung zum String
Str(x_genau,x_genau_str); Str(x_sehr_genau,x_sehr_genau_str); ShowMessage('Ausgabe von x_normal: '+x_normal_str);
//Ausgabe
ShowMessage('Ausgabe von x_genau: '+x_genau_str); ShowMessage('Ausgabe von x_sehr_genau: '+x_sehr_genau_str); end;
% 5**@£ x_normal x_genau x_sehr_genau Ŗ * B@ Ȭ 6£ Str ) ShowMessage$ *$ % Ř Ř£ 7 ** @
ŗ,ǯŗDZSingleȬ!
ŗ,ǯ,DZDoubleȬ!
ŗ,ǯřDZExtendedȬ!
Ř;#
Ř5**@£7£7
@£ % $ 7 % Ř
* £ 4 $ Ȯ E * OP5$5*$ *£5
£ > * Q C % ŘŘ Ř M £ H$ £ 7H * 3
ŗ,ǯŚDZ I 8 % Ř; £ @ 7 * C I J £87 > C ) * ** @ 5**£$ £ £ B : M )
OE P £ ) ! :
12.3.2 Formatsteuerung in alten und neuen Delphi-Versionen '7 77
Str$6£ ' $5**£ £ @£> !! "ǻ 4 £ Ȯ£ 6 &Ǽ "?! £ x_normal
:=314.123456789123456789123456789;
x_genau
:=314.123456789123456789123456789;
x_sehr_genau:=314.123456789123456789123456789;
Ř
Ř;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Key'9') then if Key=',' then Key:='.' else if Key'-' then Key:=Chr(27) end;
Ř;
£7
Řś
8 " 7 *£ 4 $ *7 8 $
" ** *7 ' £A! £ 8 7 £ 5CC$8Ř @ ESC $ G @* 7£ $ 7 begin...end £ $ @ %7 8
6£ Val7 & £ 6 $ ) % ŘŘ >
M
ŗ,ǯŗ,DZ?ǰ 5 *£ * $ £ H £
12.4.4 Nutzerunterstützung 2: Information bei Fokusverlust &£ 7£ ) 6£ ValC$ 7£ & ) Ř;Ř % *$ 5 !Ȭ !§ % Ř£ > ' £ ǻ£$Ǽ
£ ? $ *£ ££ @
&£ 6 Ȯ % ŘŘȮ
@
Řś#
Ř5**@£7£7
ŗ,ǯŗřDZ9?¡û! 8 ) £ @£ *£ £ 5 $
D?¡ C *£ tû H
! > procedure TForm1.Edit1Change(Sender: TObject); var
x1_str:String; x1:Double; x1_info:Integer; x2_str:String; x2:Double; x2_info:Integer; x3_str:String; x3:Double; x3_info:Integer;
begin x1_str:=Edit1.Text; x2_str:=Edit2.Text; x3_str:=Edit3.Text; Val(x1_str,x1,x1_info); Val(x2_str,x2,x2_info); Val(x3_str,x3,x3_info); if (x1_info=0) and (x2_info=0) and (x3_info=0) then Button1.Enabled:=True else Button1.Enabled:=False end;
*£ C> procedure TForm1.Edit2Change(Sender: TObject); ... identischer Inhalt ... end;
Ř;
£7
Řś
procedure TForm1.Edit1Exit(Sender: TObject); begin .............. end;
M :8 ' £ Edit1
& C *7C ' $ ££C> procedure TForm1.Edit1Exit(Sender: TObject); var x1_str:String; x1:Double; x1_info:Integer; begin x1_str:=Edit1.Text; Val(x1_str,x1,x1_info); if (x1_info0) then ShowMessage('Korrigieren Sie bitte die oberste Zahl') end;
C8 *£ £
Edit2 Edit3 5 ' £ **$ $ ǻ% ŘśǼ
ŗ,ǯŗ-DZ !!
Ȯ ' £ 8 Q8 C@ : 8 B 7 £
: % §'
Ř;
£7
ŘŜ
G
)
' £ C$ 7
% £ 8 ) B : ' £
£ B£
£ : £ 9ȬȬ! BeepH £ ' £ M ! setFocus J Edit1 ǻ% ŘŜǼ
ŗ,ǯŗ1DZ!setFocus 8 H£ B 6£ J 7 *@ ;5 @ ! ! Edit1 C> if (x1_info0) then begin Beep;
//Warnton
ShowMessage('Korrigieren Sie bitte die oberste Zahl'); Edit1.setFocus
//Fokus wird auf Textfenster zurückgesetzt
end
' ' ££7 £ Ȯ %Edit1.setFocus Ȭû! B $ £ 7 *
C 5
7 %
J @ 5 % > B
B $ £ 7 3
£ 7 5 5*$ ! !
ŘŜŘ
Ř5**@£7£7
12.5
Rechnen mit Delphi
% * *$6 $ '7Ȭ§û Ȭ ? £
12.5.1 Vier Grundrechenarten % £@ ǻ% ŘǼ £ Ȭ?¡ % 7 E ȬI
% ǻ Enabled False$ Ǽ
ŗ,ǯŗŝDZ=
ǻ% Ř#Ǽ £ @£ ?$5¢H
ûȬ?ǻ Interval śś £Ǽ % £ $ %
ŗ,ǯŗŞDZ?! £ C !!?Ȭ Ȭ £ B % £ B7 % % Quotient £ @£ *7 C £B '
ŘśE*
ŘŜ
* 7
!!?Ȭ Ȭ 8 *> procedure TForm1.Timer1Timer(Sender: TObject); var x1_str:String; x1:Double; x1_info:Integer; x2_str:String; x2:Double; x2_info:Integer; begin x1_str:=Edit1.Text; x2_str:=Edit2.Text; Val(x1_str,x1,x1_info); Val(x2_str,x2,x2_info); if (x1_info=0) and (x2_info=0) then begin Button1.Enabled:=True; Button2.Enabled:=True; Button3.Enabled:=True; if x20 then Button4.Enabled:=True end else begin Button1.Enabled:=False; Button2.Enabled:=False; Button3.Enabled:=False; Button4.Enabled:=False end end;
E *£ 7 & % % > procedure TForm1.Button1Click(Sender: TObject); var x1_str:String; x1:Double; x1_info:Integer; x2_str:String; x2:Double; x2_info:Integer; erg: Double; erg_str: String; begin x1_str:=Edit1.Text;x2_str:=Edit2.Text; Val(x1_str,x1,x1_info);Val(x2_str,x2,x2_info); erg:=x1+x2; Str(erg:12:4,erg_str);Label4.Caption:=erg_str end;
ŘŜ;
Ř5**@£7£7
Ȭ !£ & % $ £ 5 Ȭ ! 8 * M> 8 £ $ @ ' £
D Ȭ
ȬIã > procedure TForm1.Edit1Change(Sender: TObject); begin Label4.Caption:='' end; procedure TForm1.Edit2Change(Sender: TObject); begin Label4.Caption:='' end;
)
''
12.5.2 Der Windows-Rechner % £@ ǻ% Ř procedure TForm1.Button11Click(Sender: TObject); begin Label1.Caption:=''; RadioButton1.Checked:=False end;
&£ % + >%&
*
$ > ȬI
! $ 7 % Ř# ' Label2 % E ( Checked False£ £ @ @ 7
* *@ =
7 % Ř#I '$ Label3 % M * *£ > procedure TForm1.Button12Click(Sender: TObject); begin Label2.Caption:=Label1.Caption; RadioButton1.Checked:=False; Label3.Caption:='+' end;
&£ % = > % Ȭ * + - E $ 7 * E ) E **¢$ B £ @ @ 7
'
ŘśE*
ŘŜ
& ) 5**@££ E *> procedure TForm1.Button14Click(Sender: TObject); begin if Label3.Caption='+' then Label1.Caption:=IntToStr( StrToInt(Label2.Caption)+ StrToInt(Label1.Caption) ); if Label3.Caption='-' then Label1.Caption:=IntToStr( StrToInt(Label2.Caption)StrToInt(Label1.Caption) ); RadioButton1.Checked:=False; Label2.Caption:=''; Label3.Caption:='' end;
V @£8) > 7 A 9@£ 8 8 $E 9: Ȭ? £ *£' 7
§! Q @ 3£& &$ $ 6 $ $CȮ
) 6
*£ £ & * £@ £ ) 8 £ & £ E £ @£ £ & 6 8 £ @£5 @Ȯ 8 > 1 plus 2 minus 4 plus 5 ist wie viel?
ŘŜ#
Ř5**@£7£7
7
£ ) > 1 + 2 = - 4 = + 5 = £ @ 8 7
@ 8 $E7£**)> 1 + 2 4 + 5 = : 8 6: 6 *£ 7 + - C$ 7
C$ 8 CE * ȬIȬ E £ 7 5 * @£ *£ 7 6 $% > procedure TForm1.Button12Click(Sender: TObject); begin if Label3.Caption='+' then Label1.Caption:=IntToStr( StrToInt(Label2.Caption)+ StrToInt(Label1.Caption) ); if Label3.Caption='-' then Label1.Caption:=IntToStr( StrToInt(Label2.Caption)StrToInt(Label1.Caption) ); Label2.Caption:=Label1.Caption; RadioButton1.Checked:=False; Label3.Caption:='+' end;
ȱ
13
Prozeduren und Funktionen
ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ £ǰȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱǯȱȱ đȱ ȱ ȱȱȬȱȱȱȱȬȱ ȱǯȱȱ ȱȱȱȱûȱ ȱǰȱȱȬȱȬ ȱȱ£ȱǰȱȱ ȱ ȱȱ£ȱȱ ǯȱȱ đȱȱ ȱ ȱ£ûȱ£ȱȱȱȱȱȬ ǰȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ûȱ ûȱ ȱȱȱȱȱȱȱȱ ȱ ãǯȱȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ãǰȱ ȱ Ȭ ȱȱȱ£ȱȱ£ȱǰȱȱǰȱ ȱȱȬ ȱȱ£ȱȱǯȱ
13.1
Grundsätzliches £ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ǯȱ ȱ ȱȱȱȱ§ȱȱȱȱȱȱȱȬ §£ȱǰȱȱȱȱãȱ§ȱȱ§£ȱ ǯȱ£ȱ ȱȱǰȱǯȱǯȱȱȱȱȱ Ȭ ȱȱ£ȱǰȱȱȱȱȱȱȱȱǯȱ ȱ ȱ £ȱ ûȱ ȱ ȱ ȱ ȱ ǻ£ȱ ȱ ȱȱ§£Ǽȱãȱûȱȱȱȱ£ȱ ȱȱ ȱûȱ ǯȱãȱȱ£ȱǰȱȱ ȱȱ ȱȱȱ£ǯȱ ȱȱȱûǰȱȱȱȱ£ȱȱȬ ǯȱȱȱ ȱ ǰȱȱȱ ȱȱȱȱ ȱȱ£ȱȱȱȱȱȱ ȱȬ ȱ ǯȱȱ ȱ ȱ ãȱ ȱ ǰȱ ȱ ȱ ȱ ãDzȱ ȱȱȱȱȱȱ ȱȱȱȱȬ £ǯȱȱȱãȱ Dzȱȱȱȱȱȱ ȱ ȱȱȱǯȱ
ŘŝŖȱ
ŗřȱȱ£ȱȱȱ
13.2
Prozeduren und Funktionen von Delphi-Pascal
13.2.1 Bisher bereits verwendete Prozeduren und Funktionen ȱȱȱŘǯŘȱ£ȱ ȱȱȱ£ǰȱȱȱȱȱ Ȭȱ£ȱûȱǯȱȱ§ȱȱȱ ShowMessageȱȱȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ Ȭ ȱǯȱȱ ȱȱŝǯŗȱ ȱȱȱ ȱ StrToIntȱȱ IntToStrȱ ǰȱ ȱȱ ȱǰȱ ȱȱȱ ȱ£ȱǰȱ£ȱȱ ȱ ȱãǰȱȱ ȱȱȱ£ȱǯȱȱ ȱ ȱ ŝǯŚȱ ȱ ȱ ȱ ȱ Randomȱ ȱ ȱ £ȱ Rando-
mizeȱ£ȱ£ȱȱ£ȱ£ǯȱȱ
ȱŗŖǯŘȱ§ȱȱȱȱȱ£ȱǰȱȱȬ ȱ ȱ ȱ ȱ ȱ ȱ Ȭǯȱ ȱ ȱ ȱ ȱ ȱȱȱChrȱȱOrdȱǯȱ đȱ ȱȱȱŗŗǯŗȱȱȱ£ȱDeleteȱȱInsertȱȱ ȱ Ȭȱ CompareStrǰȱ Concatǰȱ Copyǰȱ Lengthǰȱ LowerCaseǰȱ Posȱ ȱ UpperCaseȱ ȱ ȱ §ȱ ãȱ ȱ ȱ ȱ Ȭ ȱ ǯȱȱ ȱȱŗŘǯřȱđȱ§ȱ ȱȱȱȱ §ȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ £Ȭ§£ȱ ȱǯȱȱ ȱȱȱ Ȭ£ȱ Strȱȱ Valȱ §ȱȱȱãȱ ǯȱȱȱ ȱ ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ ãǰȱ ȱȱhttp://www.w-g-m.de/delphi.htmȱûȱȱDateien für Kapitel!!13ȱȱzipȬȱ DKap13.zipȱȱ£ ȱȱǯȱȱȱȱȱȦȱȱŝȱȦȱȱ ŘŖŖşȱȱǰȱȱȱ ȱ[ȱȱȱ D7Kap13 ȱȱȬȱ proj_13?.dprȱ£ §ǯȱȱȱȱŞȦŘŖŖśȱǰȱȱȱȱ ȱ [ȱȱȱ
D8Kap12 ȱȱȱproj_13?.bdsprojȱ£ §ǯȱȱ
ȱ£ȱȱȱ ȱȱȱȱȱȱ£ȱ£ȱǻȬ DZȱ ȱ ȱ ȱ ȱ ŗřǯŘǯŘȱ ȱ ȱ ȱ ȱ ȱ proj_1322.dprȱ £ ǯȱ proj_1322.bdsprojǼȱȱȱ
ȱ ȱ
ŗřǯŘȱȱ£ȱȱȱȱȬȱ
Řŝŗ
13.2.2 Datums- und Zeitfunktionen Ȭȱ ȱ ȱ ȱ ãǰȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ £ȱ £ȱ ǯȱ ȱ ȱ ȱ ȱ Dateȱ ȱ Timeȱ ȱ ȱǯȱȱ ȱȱãȱǰȱȱȱȱȱȱȬ £ȱûȱȱ£ȱȱȱȱDZȱ procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=Date end;
ûȱȱȱȱȱȱǯȱǵȱȱDZȱȱ ȱȱȱȱ ȱȱȱStringǰȱȱǰȱ ȱȱȱDateȱȬ ǰȱ ȱ ȱ ȱ Stringǯȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ DateToStrǰȱȱȱûȱȱǰȱȱ ȱǯȱ procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=DateToStr(Date) end;
ȱ ȱȱȱ£ȱȱȱȱǰȱȱ ȱȱ ǰȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱTimeToStrȱđǰȱȱȱ£ȱȱȱȱǯȱȱ procedure TForm1.Button2Click(Sender: TObject); begin Label2.Caption:=TimeToStr(Time) end;
ȱǰȱȱǯȱȱȱȱȱȱȱȱ£ ȱȱȬ ȬDZȱ§ȱȱȱȱȱ ȱȱ£ ȱǰȱȱȱ ȱȱđȱȱȱȱ ȱȱǯȱȱȱ
ȱȱ ȱŗřǯŗDZȱȬȱȱ£ȱȱȱȬȱ
ŘŝŘȱ
ŗřȱȱ£ȱȱȱ
ȱ ȱ ǰȱ ȱ ȱȱȱȱȱȱȱȱãȬ ǯȱȱȱȬ£ȱȱȬȱȱȱ ȱȱãȬ ǯȱȱ ȱȱȱȱȱȱȱȱǯȱȱȱ ȱ ŗřǯŗȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱȱǯȱȱ ãȱ ȱ ȱ ȱ ȱ ûȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ StringȬ£ȱ ûȱ ȱ ȱȱ£ȱȱ£ȱȱȱStringǯȱ procedure TForm1.Button1Click(Sender: TObject); var dat_str, monat: ShortString; mon_nr
:Byte;
begin dat_str:=DateToStr(Date); mon_nr:=StrToInt(Copy(dat_str,4,2)); if mon_nr=1 then monat:='Januar'; if mon_nr=2 then monat:='Februar'; if mon_nr=3 then monat:='März'; if mon_nr=4 then monat:='April'; if mon_nr=5 then monat:='Mai'; if mon_nr=6 then monat:='Juni'; if mon_nr=7 then monat:='Juli'; if mon_nr=8 then monat:='August'; if mon_nr=9 then monat:='September'; if mon_nr=10 then monat:='Oktober'; if mon_nr=11 then monat:='November'; if mon_nr=12 then monat:='Dezember'; Delete(dat_str,4,3); Insert(' '+monat+' ',dat_str,4); Label1.Caption:=dat_str end;
ãȱ ȱȱȱȱDZȱȱȱ ȱǰȱȱȱȱ £§ȱȱȱ£ȱ£ȱȱȱǯȱȱȱ ȱȱȱȱȱǯȱȱȱ£ȱȱȱȱȬ ȱȱȱȱǯȱȱ
ŗřǯŘȱȱ£ȱȱȱȱȬȱ
Řŝř
ȱ ãDZȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ǯȱȱȱȱȬȱ ȱȱȱ Timeȱȱȱ ȱȱȱȱǯȱȱȱȱDZȱ procedure TForm1.Timer1Timer(Sender: TObject); begin Label3.Caption:=TimeToStr(Time) end;
ȱȱ ȱŗřǯŘDZȱȱûȱȱȱȱ ȱȱ ȱȱȱ EncodeȬȱ EncodeTimeȱȱ EncodeDateǰȱ ȱ ȱ ȱ ȱ ȱ TimeToStrȱ ȱ DateToStrȱ ǯȱ ȱ Ȭ ȱȱȱȬȱ£ ǯȱȱȱȱȱ §ȱȬ ǯȱ ȱ EncodeTimeȬȱ ȱ ȱ ££ȱ ȱ ȱ ȱ DZȱǰȱǰȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ £Ȭȱ £ǰȱ ȱ ȱ £ȱ Ȭ ȱ ȱȱû §Ȭ ȱȱTimeToStrȱãȱDZȱ ShowMessage(TimeToStr(EncodeTime(8,23,45,00)));
ȱ EncodeDateȬȱ ȱ ȱ ££ȱ ȱ ȱ ȱ DZȱ ǰȱǰȱǯȱȱ ȱ ȱȱȱȱȬȱ£ǰȱȱȱ£ȱ Ȭ ȱ ȱȱû §Ȭ ȱȱDateToStrȱãȱDZȱ ShowMessage(DateToStr(EncodeDate(2005,10,03)))
ȱ ȱ ȱ £ȱ £ ȱ ȱ Ȭǰȱ ȱ ȱ ȱȱȱ£ȱȱǰȱȱȱDZȱ ShowMessage(TimeToStr(EncodeTime(8,23,45,00) EncodeTime(5,43,57,00)) )
ȱȱȱ
ŘŝŚȱ
ŗřȱȱ£ȱȱȱ
ȱ
ȱ ȱŗřǯřDZȱ£ȱȱǰȱȱȱȱ
ȱȱȱ ȱŗřǯŚDZȱ£ȱȱǰȱȱȱȱ
ȱ ȱŗřǯśDZȱ£ȱȱȱȱ
13.2.3 Arithmetische Funktionen tȱ đȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ǯȱ ûǰȱ ȱ ȱ Absȱ ûȱ ȱ ǰȱ Lnȱ ûȱ ȱ ûȱ ǰȱ Sqrȱûȱȱ£ǰȱ Sqrtȱûȱȱ £ȱȱ Sinȱȱ CosȱûȱȱȬ ȱȱȱǯȱȱ ȱȱȱ ȱȱ ȱȱȱȱȱȬ £ȱȱȱȱããȱ ȱȱǯȱȱ ȱȱȱǰȱ ȱȱ£ȱȱŘȱ£ȱ DZȱȱ procedure TForm1.Button1Click(Sender: TObject); var zahl, wurzel : Extended; wurzel_str
: String;
begin zahl:=2.0; wurzel:=Sqrt(zahl); Str(wurzel:18:16, wurzel_str); ShowMessage(wurzel_str) end;
ŗřǯŘȱȱ£ȱȱȱȱȬȱ
Řŝś
ȱȱȱȬȱȱȱ£ȱûǰȱȱȱ ȱȱ ȱȱȱ ȱȱȱȱŘȱȱŗŖȱãȱãǯȱȱ
ȱȱ ȱŗřǯŜDZȱ£ȱȱ£ ȱ ȱȱ ȱȱ ȱãȱ ȱȱȱ ȱ ȱ ȱ ȱ ȱ Expȱ ȱ Lnȱ ȱ ãǯȱ ȱ £ȱ £ǰȱ ȱ ȱȱûǰȱȱȱŗřǯŝȱ£ȱȱȱȱDZȱ procedure TForm1.Button2Click(Sender: TObject); var basis, exponent, ergebnis: Extended; ergebnis_str: String; begin basis:=2.0; exponent:=10; ergebnis:=Exp(exponent*Ln(basis)); Str(ergebnis:8:1, ergebnis_str);ShowMessage(ergebnis_str) end;
ȱȱȱ ȱŗřǯŝDZȱ£ ȱȱ£ȱ ȱȱ ȱ§ȱȱȱDZȱȱ ȱ ȱȱȱȱȱ£ȱȱȱȱȱȱ ǵȱȱ ȱȱȱ ȱȱȱDZȱȱ Kapital = Grundkapital*[(1+zinssatz/100)
(Anzahl der Jahre)
]
ȱ ŗřǯŞȱ £ȱ ȱ £§ǯȱ ȱ §ȱ ȱ ¡ȱ £ȱ ȱ ȱȱ ȱȱȱȱȱȱ£ȱǯȱȱ ȱȱ£ȱûȱ ȱûȱǰȱȱȱȱȱȬ ȱǻȱȱȱȱȱ¡Ǽȱȱ DZȱȱ ȱȱ
ŘŝŜȱ
ŗřȱȱ£ȱȱȱ
procedure TForm1.Button1Click(Sender: TObject); var
grundkap:Extended; grundkap_str:String; grundkap_info:Integer; zinssatz:Extended; zinssatz_str:String; zinssatz_info:Integer; endkap: Extended; endkap_str: String; jahre:Integer; basis, exponent: Extended;
begin grundkap_str:=Edit1.Text; zinssatz_str:=Edit2.Text; jahre:=StrToInt(Edit3.Text);
//Edit3 darf nur Ziffern enthalten
Val(grundkap_str,grundkap,grundkap_info);
//Konvertierversuch
Val(zinssatz_str,zinssatz,zinssatz_info); if (grundkap_info=0) and (zinssatz_info=0) then begin basis:=1+zinssatz/100; exponent:=jahre; endkap:=grundkap*Exp(exponent*Ln(basis)); Str(endkap:15:2,endkap_str); Label9.Caption:=endkap_str end end;
ȱ ȱȱȱ StrToIntȱûȱȱ ȱȱȱȱȱ¡Ȭ ȱ Edit3ȱȱȱ IntegerȬȱ ǰȱûȱ ȱȱȱȬ ǰȱ £§£ȱ £ȱ ǰȱ ȱ ȱ ȱ ¡ȱ ȱ ȱȱ ȱãDZȱȱ procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char); begin if (Key'9') then Key:=Chr(27) eDzȱ
ȱãȱ ȱȱ £ȱDZȱȱ ȱŗŖŝŝȱ£ȱ ȱȱȬ ȱ£ȱđȱûȱȱȱȱǯȱ ȱȱ
ŗřǯřȱȱ£ȱȱȱȱȱ
Řŝŝ
ȱ
ȱ ȱŗřǯŞDZȱ ȱȱȱȱȱ ȱȱ ȱŘŖŖśȱ ǰȱ ȱ§ȱȱȱȱȱȱ£ȱȬ ȱȱȱȱȱȱǻȱȱ§Ǽȱȱřȱ£ȱ §ȱ£ȱǯȱȱ ȱȱ §ȱȱȱȱ ȱŘŖŖśǰȱȱşŘŞȱ ǰȱ ǵȱȱŗřǯŞȱ§ȱ ȱ ǯȱ ȱ §ȱ ȱ DZȱ Şȱ ȱ ŗŞȱ ȱ ȱ §ȱ ȱ ǯȱ ǰȱȱȱ ȱȱȱȱȱǯȱ
13.3
Prozeduren und Funktionen visueller Objekte
13.3.1 Wiederholung: Visuelle Objekte ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ŘǯŗǯŘȱ ȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ §ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ Ȭ ȱȱȱȱãǰȱȱȱȱǮ£ȃǯȱȱ
ȱȱȱ ȱŗřǯşDZȱȱȱ ȱȱȱǻǼȱȱ ȱȱȱ£ȱDzȱȱȱ ȱ ȱûȱȱǯȱȱ
ŘŝŞȱ
ŗřȱȱ£ȱȱȱ
ȱȱȱȱȱǰȱȱȱȱȱȱȬ
ȱȱȱȱ ǯȱȱ
ȱãȱȱȱȱȱȱȱȱȱȬ ȱȱǯȱȱ
13.3.2 Eigenschaften aus der Punktliste: properties ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûǰȱ ȱ ȱȱ ǯȱȱȱŚǯŝǯřȱ ȱȱȱûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ãDZȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱȱǻȱȱȱ ListBox1Ǽȱûȱ ȱȱ ȱȱ ǯȱȱȱȱǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ŗřǯŗŖǼǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ǯȃǰȱ ȱ ȱȬȬȱpropertyȱǯȱ
ȱȱȱ ȱŗřǯŗŖDZȱȱȱȱȱ ȱǻǼȱȱȱȱȱȱȱȱȬ ȱû ȱpropertyǯȱȱȱ ȱȱŚǯŝǯřȱ ȱȱȱǰȱ ȱ ȱȱ£ȱȱ ȱ ȱ ȱ ȱ ¢ȱ ȱ ãǰȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱ¡ȱȱȱȱȱȱȱȱ§ȱ ȱǯȱȱŗřǯŗŗȱ£ȱȱȱǯȱȱ
ȱȱȱ ȱŗřǯŗŗDZȱ¢ȱItemIndexȱ ȱŗřǯŗŖȱȱȱŗřǯŗŗȱȱȱȱȱȱ property Enabled:Boolean property ItemIndex:Integer
ŗřǯřȱȱ£ȱȱȱȱȱ
Řŝş
ǯȱȱDZȱȱȱȱȱȱȱȱ¢ȱȱ ȱ¢DZȱȱ¢ȱ EnabledȱãȦȱȱȱȱȬ ȱ Trueȱ ȱ Falseǰȱ ȱ ¢ȱ ItemIndexȱ ãȦȱ ȱ IntegerȬ ǯȱȱ ȱȱȱȱȱDZȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ãǰȱ ȱ §ȱȱ£ȱȱȱȱǯȱȱȱ
13.3.3 Funktionen aus der Punktliste ȱ ȱ ȱ ŗřǯŗŖȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱû ȱ functionǯȱȱǰȱ ȱ ȱǰȱ ȱȱ ȱǰȱȱȱ ȱȱȱȱȱȱ ȱãȬ ǰȱȱȱ DZȱȱ ȱȱû ȱfunctionȱȱȱȱȱȱûȱȬ ȱȱ ȱȱȱ£ǯȱȱ ȱ ȱȱ ȱ ǰȱ ȱȱȱȱȱȱ¡ȱȬ ǰȱ ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱ ȱ ¢ȱ Textȱ ȱ ȱ StringȬ£ȱ ǯȱ ȱ ȱ ȱ đȱ ȱ Ȭ ȬȱLengthȱ ǯȱȱ ȱ ȱȱȱȱȱŗřǯŗŘȱȱȱȱȱȱ£ȱȱ ¡ȱȱȱȱEdit1ȱǯȱȱ
ȱȱȱ ȱŗřǯŗŘDZȱȱGetTextLenȱȱ¡ȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ GetTextLenǯȱ Ȭ ǰȱȱȬ ȱȱȱ ȱȱ ȱȱȱȱ ȱ ȱǰȱ£ȱȱȱȱȱȱȱȬ £ȱȮȱȱãȱȱȱǯȱȱȱȱ ȱȱȱȱȱȱȱ function GetTextLen: Integer
ȱȱŗřǯŗŘǰȱ ȱûȱ ȱȱǵȱȱȱȱGetTextLenȱ £ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ǰȱ ȱ ȱ
ȱ ȱ ȱ đȬȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ãȱ ȱȱȱgeTTEXTlenȱȱgettEXtLenǯȱȱ
ŘŞŖȱ
ŗřȱȱ£ȱȱȱ
ȱ ȱ ȱ Ȭãȱ ȱ ȱ ȱ ȱ ȱ ȱǰȱ ȱȱȱȱȱûǵȱȱ
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ û ȱ functionȱ ǯȱȱȱû ȱȱȱȱȱȱ ȱȬ ȱ £§ǰȱ ȱ ȱ §ǰȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȱ ȱ ǯȱȱ ȱ ȱŗřǯŗŘȱȱ ȱȱ ȱ û ȱ functionǰȱ ȱ Ȭ ãȱȱȱGetTextLenȱȱȱǯȱȱ đȱȱȱȱȱđȱȱȱȱGetTextLenȱ ȱ û ȱ Integerǯȱ ȱ ȱ ȱ ¢ȱ ȱ ȱ ȱ ȱ ǯȱ ȱȱ§ȱǰȱȱȱȱ ȱȱ GetTextLenȱȱ ȱ IntegerȬ£ȱȱȬȱ£ǯȱǯȱȱ ȱȱȱIntToStrȱȬȱȱȱ ȱȱǯȱȱȱ
ȱȱȱ ȱŗřǯŗřDZȱ Ȭ ȱȱȱ£ȱ ȱ ȱ ȱ ȱ £§ȱ ȱ ȱ ¡ȱ Edit1ȱ ȱ ȱǰȱȱȱȱȱȱLabel1ȱǯȱȱ
ŗřǯřȱȱ£ȱȱȱȱȱ
ŘŞŗ
ȱ ȱ £ȱ ȱ ¡ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱȱȱ£ȱȱȱȱ¡ȱǯȱȱ ȱ£ȱ ȱ£ȱ£DZȱȱ procedure TForm1.Edit1Change(Sender: TObject); begin Label1.Caption:=IntToStr(Edit1.getTextLen) end;
ȱ ŗřǯŗřȱ ȱ ȱ ǯȱ ȱ ȱ ȱ £ Ȭ ȱ ȱ ȱ §ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ¡ȱȱȱǯȱȱ ȱ£ȱȱȱȱ ȱȱȱ GetTextLenȱȱȱȬ ȱ ȱ ¡ȱ ȱ §ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûȱ ȱ ȱ¢ȱCaptionȱȱȱȱȱȬǯȱȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ Ȭ ȱȱǯȱȱȱȱ
13.3.4 Prozeduren aus der Punktliste ȱ ȱ ȱ ȱ ȱ ȱ ȱ ListBox1ǰȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱȱ£ȱȱȱȱǰȱ£ȱȱȱȱȱȱ ȱȱ§ȱȱǯȱȱ ȱ ȱȱȱȱȱ§ǰȱ ȱȱȱȱ£Ȭ ȱȱǰȱȱ£ȱȱ ȱȱȱȱȱȱȱȱ ȱȱȱȱȱȱȱȱûȱȱȱ£ǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¡ǰȱ ȱ ȱ ȱ ¢ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ£ǯȱDZȱȱȱȱǰȱ ȱpropertyǯȱȱ ȱ ȱûȱǻȱŗřǯŗŚǼǯȱȱ
ȱȱȱ ȱŗřǯŗŚDZȱ¢ȱItemIndexȱȱȱȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ Ǯ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ãȃǯȱ ȱ ȱ Ǯ ȃȱ ȱ ȱ ǰȱ ȱ ǰȱ ȱ ȱ ȱ£ȱ£ȱǵȱȱ
ŘŞŘȱ
ŗřȱȱ£ȱȱȱ
tȱ DZȱ ȱ ãȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ǯȱ ȱ ûȱ ȱȱȱ£ȱǯȱȱ ȱ ȱȱȱȱ Listbox1ȱȱȱ ȱȱǯȱȱûȱȱ £ȱ ȱȱȱȱȮȱȱǰȱȱ ȱȱȱȱ ȱȱûȱãǯȱȱǵȱȱ ȱȱȱđȱȱȱǯȱȱȱȱȱǯȱȱ ȱ ȱ ǰȱ ȱ ȱ ListBox1.Itemsǯȱȱȱȱȱȱ ǵȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ItemsȱȱȱȮȱȱ§ȱȱȱȱǯȱȱȱȱ§ȱ ǯȱȱȱ
ȱȱ ȱŗřǯŗśDZȱ£ȱDeleteȱȱȱ§ȱȱ ȱŗřǯŗśȱ£ȱǰȱȱ ȱȱǯȱȱûȱ ȱȱȱȱȬ ȱȱDZȱ procedure Delete(Index: Integer)
ȱ ȱ ȱ ȱ Ȯȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱȱIntegerȬǯȱȱȱǰȱãȱǰȱȱȱȬ ȱȱǰȱȱ ȱDZȱûȱȱȱȱȱȱǰȱ ûȱȱ£ ȱȱȱȱȱȱȱ ǯȱȱ ȱãȱ ȱȱȱȱȱ£ȱ£ȱȬȱ
ȱȱȱȱȱȱȱȱDZȱȱ procedure TForm1.ListBox1Click(Sender: TObject); var pos: Byte; begin pos:=ListBox1.ItemIndex; Listbox1.Items.Delete(pos); ListBox1.ItemIndex:=pos-1;
//Position der markierten Zeile merken //markierte Zeile löschen //Markierung neu setzen
end;
ȱ ŗřǯŗŜȱ ȱ ȱ DZȱ tȱ ȱ ǮȬȬ Ȭȃȱǻ¢Ǽȱ ItemIndexȱ ȱȱȱȱȱȱ ȱȱǯȱȱ
ŗřǯřȱȱ£ȱȱȱȱȱ
ŘŞř
ȱ ȱ ȱ ȱ ȱ ȱ ǮȬȬȬ ȃȱǻǼȱ Deleteȱûȱȱ§ȱȱȱȱãȬ ȱȱȱǯȱȱ đȱ ȱ ȱ ȱ ȱ ûȱ ȱ ǮȬȬ ȃȱǻ¢ǼȱItemIndexȱȱȱǻȱȱȱȱȱȱ ȱǼȱȱȱȱȱȱǯȱȱ ûȱ ȱ ȱ û£ȱ £ȱ ȱ ǮȬȬ ȃȱȱȱȱȱȱȱȱ ȱȱȱȬ ǯȱȱȱ£ȱȱ£ȱȱȱȱǯȱ
ȱ ȱŗřǯŗŜDZȱãȱȱȱȱȱȱȱ
13.3.5 Schnittstellen ȱȱ£ȱȱȱȱȱȱȱû ãȱ propertyǰȱ functionȱȱ procedureȱȱ§ȱtȱûȱȱȱ ǯȱȱ
ȱđǰȱȱȱȱûȱȱãȱȱ ȱ ȱ ¢ȱ ǻDZȱ Ǽȱ £ȱ ȱ ȱ ȱ Ȭ ȱ£ȱȱȦȱȱȱ£ȱ§ǰȱȱ ȱ ȱ ȱ ǻDZȱ Ǽȱ ȱ £ȱ ȱ £ȱ ǰȱ ȱûȱȱȱȱȱȱȱ
ŘŞŚȱ
ŗřȱȱ£ȱȱȱ
ȱȱȱǻDZȱ£Ǽȱȱȱȱȱ£ȱȬ £ǯȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ £§£ȱ ǰȱ ȱ ¢ȱ ȱȱȱȱȱȱ ȱǯȱ §£ȱ§ȱǰȱȱȱȱȱȱ£ȱȱȱ ȱȱ ȱȱȱ£§£ȱȱãǰȱȱȱȱȱȱȱ Ȭ ȱ£ȱǯȱȱ
13.3.6 Ausnahmen ȱȱ ȱ£ȱȱȱ£ȱ ȱȱȱȬ ȱȱ§ȱ ȱǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱûȱȬ £ȱ ȱǰȱûȱȱȱȱ ȱȬ ȱ£ǯȱȱ Ȭȱȱ ȱȱǰȱȱǯȱ ȱ£ȱȱ ȱȱȱȱȱǰȱȱȱȱȱȬ ȱȱ£ȱãȱȱ§ȱȱ§ȱȬ £ȱȱ£ȱãǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ
£ǰȱȱȱȱûȱȱǯȱ ȱȱ ȱ ȱȱȱǮȱȃȱȱȱǮȱȱ ǰȱȱȱȱȱȃǯȱ ȱ ȱȱȱȱ£ ȱȱDZȱȱ ȱûȱȱȱȱȱȱȱ ȱȱȱȱȱListbox1.Items.ȱȱȱAddȱǻȱŗřǯŗŝǼǯȱȱ
ȱȱȱ ȱŗřǯŗŝDZȱȱAddȱȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ǰȱ §ȱȱ Stringǰȱãǰȱȱȱȱȱȱȱ§ǯȱȱȱȱ IntegerȬȱ£ûǯȱȱ
ŗřǯřȱȱ£ȱȱȱȱȱ
ŘŞś
ȱ ȱ ȱ ȱ £ȱ DZȱ ȱ ȱ ȱ ȱ ȱ £ȱ Ȭ ǰȱȱȱû ȱ ȱ ȱ ǰȱ£ȱǰȱȱȱ ȱȱȱ£ȱȱ ǯȱȱ ȱ ȱǰȱ ȱȱȱ£ȱȱ ǵȱȱ procedure TForm1.ListBox1Click(Sender: TObject); begin Listbox1.Items.Add('Zusatzzeile');
//Aufruf einer Funktion
end;
ȱ ǰȱ ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱ ǯȱ ȱȱ§ȱȱȱǯȱȱ ȱǰȱȱȂȱȱȱȱȱǰȱȱ AddȱȱȱȬ ȱȱ£ǵȱȱ §ȱȱȱǯȱȱ ȱûȱȱȱȱȱ ȱȱû ȱȱ ȱȱȱǯȱ procedure TForm1.ListBox1Click(Sender: TObject); begin ShowMessage(IntToStr(Listbox1.Items.Add('Zusatzzeile'))); end;
ȱ ŗřǯŗŞȱ £ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱȱȱûȱǯȱȱ
ȱȱȱ ȱŗřǯŗŞDZȱû ȱȱȱAddȱȱ ȱȱȱDZȱȱȱȱȱȬȱȱȬ ȱȱȱ ǯȱȱ ȱ ȱȱ£ ȱȱȱȱȱ£ȱȱȱȱȱȬ ȱ£ȱǰȱȱȱȱ§ǯȱȱ ȱ ŗřǯŗşȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ §ȱ ǰȱ ȱ ȱListbox1.Items.ȱȱȱȱȱ ȱǯȱȱ ȱȱȱȱȱ DZȱȱ
ŘŞŜȱ
ŗřȱȱ£ȱȱȱ
ȱȱȱȱȱȱȱ£ȱȱ ȱ ȱ¢ȱStringsȱãȱ ǰȱȱ ȱȱȱȱȱȱDZȱȱ procedure TForm1.ListBox1Click(Sender: TObject); var lepos: Byte; begin lepos:=Listbox1.Count-1; ShowMessage(Listbox1.Items.Strings[lepos]) end;
ȱȱ ȱŗřǯŗşDZȱ¢ȱItems.Stringsȱ ȱ ȱ đȱ ȱ ȱ tǰȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ȱ Ǽȱ ȱ ȱ £ȱ ȱ Ȭ ȱDZȱȱ procedure TForm1.ListBox1Click(Sender: TObject); var lepos: Byte; begin lepos:=Listbox1.Count-1; ShowMessage(Listbox1.Items[lepos])
//Fehler! Strings vergessen.
end;
Ȭȱ §ȱ £ȱ £ȱ Ȭȱ ȱ ȱ ȱ ȱȱãȱ£ǯȱȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱȱ£ȱȱȱȱ£ȱȱǯȱȱ ûǰȱ ȱ ȱ £ȱ ãȱ ȱ ȱ ȱ Ȭ ȱ ȱ ǯȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱ
13.4
Simulation einer Supermarkt-Kasse
13.4.1 Aufgabenstellung ȱ ȱ ȱ ãđȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǯȱȱ
ŗřǯŚȱȱȱȱȬ ȱ
ŘŞŝ
ȱ ȱȱ§ȱȱȱȬ ȱǰȱ ȱ ȱȱȬ ȱ§ȱȱȱȱȱǰȱȱȱȬ ȱ £ǯȱȱ ȱ ȱ ãȱ ȱ £§ǰȱ ȱ ȱ ȱ ãȱ ǰȱ ȱȱ£ §đȱȱ£ǰȱȱ£ǰȱȱ£ȱȱ ȱ £ȱȱȱȱȱǻȱŗřǯŘŖǼǯȱȱ ȱ ȱȱȱȱ Übernehmen ȱȱȱDZȱ ȱ£ȱȱȱȱȬȱûȱ ȱ ȱ£ȱȱȱ£ȱȱȱ ȱȱȱȱ ȱ£ ȱȱȱ ȱȮȱûȱȱȱȱ£ ȱ£Ȭ ȱȱȱǯȱȱ ãȱȱȱ£ȱȱȱȱ£ȱ ȱȱȱ ȱ ǰȱ ȱȱȱ ȱȱȱȱȱȬ ûǰȱȱȱȱȱȱȱȱȱǯȱȱ ȱ ȱȱȱ ȱȱȱŗŜȱ£ȱȱ ȱȱȱȱȱûǯȱȱ ȱȱ §ȱȱ ȱȱȱȱȱȱ £DzȱȬ ȱ ȱ ȱȱȱ ȱ£ǰȱ ȱȱȱȱ ȱȱȱǯȱȱ
ȱȱȱ ȱŗřǯŘŖDZȱȱȱ ȱ ȱȱtȱ ȱȱ ȱȱûȱȱ£ȱãǰȱȱ ȱ£ȱȱȱȱǮŗȃȱ£û£ǰȱȱ ȱ ȱȱȱûȱŗŜȱ£ȱǰȱȱ ȱȱȱȱȱȱȱDzȱȱ
ŘŞŞȱ
ŗřȱȱ£ȱȱȱ
ȱ§ȱȱȱȱȱ ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ãȱ ȱȱȱȱȱ ǯȱȱ ȱȱȱȱȱ¡ȱ£ȱ ȱȱȱȱȱ Ȭ ȱ £Dzȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ǯȱ ȱȱ ȱȱȱ Esc Ȭȱ£ǯȱȱ ȱȱȱȱȱ¡ȱ £ȱ ȱȱȱȱ 0 ȱȱȱ ! !9 ȱ£ǯȱȱȱ§ȱȱ ǯȱȱ ȱ ȱ ȱ ȱ ȱ Bezahlen ȱ ȱ ûȱ ȱ ȱ ǰȱ ȱȱȱȱȱȱȱȱ ǯȱȱȱȱ ȱȱȱ ȱȱȱȱȱȱȱȱ£Ȭ ǰȱ ȱȱȱ ǯȱȱ ȱ ȱȱȱȱ Bezahlen ȱ ȱ£ȱȱȱ Übernehmen!ȱȬ ȱ ȱ ȱ ȱ đȱ ȱ ûȱ ȱ Ȭ £ȱǯȱȱ ȱȱ Bezahlen ȱȱ ǰȱȱ ȱȱ£ ȱǯȱ
ȱȱȱ ȱŗřǯŘŗDZȱȱ ȱȱȱȱ Bezahlen!! ȱ ȱ ȱ ȱ ûȱ DZȱ ȱ §ȱ ȱ ȱ ȱ ȱûȱȱ ǰȱȱȱ ȱ£ȱ£ȱȱ ȱǻûȱȱ£ȱȬ ȱȱûȱȱ£Ȭȱȱȱ Ǽȱûȱȱȱȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ŝȬ£Ȭȱ ȱ ȱ ȱǰȱȱȱȱȱŗŜȬ£Ȭȱǯȱȱ ȱȱȱȱȱȱûǯȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ Nächster Kundeȱ ǰȱ ȱ ȱ ȱ ǻȱ ŗřǯŘŘǼȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ£ȱȱŗȱȱȬ£ȱȱŗŜƖǯȱȱȱȱ ǰȱȱ£ȬȱȱǰȱEdit1ȱȱǯȱȱ
ŗřǯŚȱȱȱȱȬ ȱ
ŘŞş
ȱ ȱ ȱȱȱ ȱ Übernehmen ȱ ûȱ £ȱ ȱ ȱ Ȭ ǰȱȱȱȱȱ£ȱȱȱǻȱŗřǯŘřǼȱȱ
ȱȱ ȱŗřǯŘŘDZȱȱȱ£DZȱ§ȱ ȱ ȱ ȱ
ȱȱȱ ȱŗřǯŘřDZȱtûȱȱ£ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱ¡ȱ£ȱȱȮȱȱȱȱȱȱ £ȱȱȱȱȱ£ȱȱ1,,34,00ǯȱȱ ȱȱȱȱȱȱȱ£Ȭȱȱȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱȱđȱȬû£ȱȱȱ¡ǯȱ
13.4.2 Entwurf der Benutzeroberfläche ȱȱŗřǯŘŚȱȱȱ£§ȱȱȱ ȱ£ȱǯȱȱȱ ȱ ȱ ȱ ȱ ȱ Ȭȱ ȱ ȱ ǰȱ ȱ ȱ ǯȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ§ȱȱȱǯȱȱ ȱ ȱ ȱ ȱ Bezahlen ȱ ȱ ȱ ȱ Dzȱ ȱ ȱ ȱ Ȭ ȱ ȱ ȱ ȱ §ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱȱȱȱȱȱȱǯȱ
ŘşŖȱ
ŗřȱȱ£ȱȱȱ
ȱ
ȱ ȱŗřǯŘŚDZȱ ȱȱ£§ȱ
13.4.3 Namensvergabe ȱ ȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ ǯȱ ȱ ȱ£ȱȱȱȱ£ȱ ǯȱȱ ȱ ¡ȱ ûȱ ȱ £ȱ ȱ ȱ ȱ ȱ Edit1ǰȱ ȱ ¡ȱ ûȱ ȱ £ȱ đȱ Edit2ǰȱ ûȱ ȱ £ȱ Edit3ǯȱ ȱ ȱ ȱ đȱ RadioGroup1ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ đȱ Button1ǰȱ Button2ȱȱButton3ǯȱȱ ȱȱȱȱȱȱđȱListBox1ȱȱListBox4ǰȱȱȱ§ȱ ȱȱTimer1ǯȱȱ ȱǰȱȱ§ǰȱȱȱȱûȱȱȱȬȬ ȱ Ȯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ǯȱȱ ȱȱȱǰȱȱȱȬȱûȱȱ£ȱ£ȱȱȱȱ Label8ȱ ȱ ȱ ȱ ȱ Ȭȱ ûȱ ȱ ȱ Ȭ ȱȱȱȱȱLabel11ȱȱLabel13ǯȱȱ ȱ ȱ ȱ ãȱ ȱ ȱ ȱ ûȱ ǰȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ŗǯŚǯŘȱ ȱ ȱ £Ȭ ȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ ȱ £ȱ ǯȱ ȱ §ȱ£ȱȱȱ ȱȱLabel8ȱȱȱsum_lblȱ ȱȱLabel11ȱȱȱsum7_lblȱ ȱȱLabel13ȱȱȱsum16_lblǯȱ
ŗřǯŚȱȱȱȱȬ ȱ
Řşŗ
13.4.4 Ereignisprozeduren ȱ ȱȱȱȱȱ£ȱǰȱȱ£ȱãȱȱ ȱȱǯȱȱ ȱ ȱ ȱȱ£ȱ£ȱȱȱȱ¡ȱ ûȱȱ£ȱDZȱ procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (Key'9') then if Key=',' then Key:='.' else Key:=Chr(27) end;
ȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ¡ȱûȱȱ£DZȱ procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char); begin if (Key'9') then Key:=Chr(27) end;
ȱȱ£ȱȱ£ȱǰȱȱ ȱȱȱ Ȭ ȱ ȱȱǯȱȱȱȱ£ȱȱDZȱ ȱ Ȭ ȱȱ§đȱȱȱ ȱȱ ȬȱȱȬ ȱȱȬ ȱǯȱȱ ȱ ȱȱ ȱ begin...endȱ §ȱȱȱȱȱ ǰȱȱûȱ§ȱȱȱDZȱȱȱȱ procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (Key'9') then begin if Key=',' then begin Key:='.' end else begin Key:=Chr(27) end end end;ȱȱȱ
ȱȱ£ȱȱȱ£ȱ£ȱȬȱȬ ȱ ǯȱ ȱ ûȱ ȱ £ ȱ DZȱȱ ȱ ȱ ȱ ȱ ȱ §ǰȱȱȱ£ȱȱDZȱ
ŘşŘȱ
ŗřȱȱ£ȱȱȱ
procedure TForm1.Timer1Timer(Sender: TObject); begin if ListBox2.Count>0 then Button2.Enabled:=True else Button2.Enabled:=False end;
ȱ ȱ£ȱȱ£ǰȱ£ȱȱ ȱȱȱ ȱ Übernehmen ǯȱȱ ȱ ȱȱ£ȱȱûȱ §ǰȱȱȱȱȱȱȱ£§£ȱ§ȱãȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); var art_name
:String;
p_str:String; ep:Double; ep_info:Integer; anz:Byte; mws_satz:Byte; mw:Double;mw_str:String; gp:Double;gp_str:String; begin
//Ausführungsteil: zuerst Daten in Sp.-plätze holen
art_name:=Edit1.Text;ep_str:=Edit2.Text; anz:=StrToInt(Edit3.Text); if RadioGroup1.ItemIndex=0 then mws_satz:=7 else mws_satz:=16; Val(ep_str,ep,ep_info); if ep_info0 then
//Konvertierungsversuche //Reaktion bei unsinnigem Einzelpreis
begin ShowMessage('Preis nicht korrekt eingegeben'); Edit2.SetFocus end else begin
//Reaktion bei sinnvollem Einzelpreis
Listbox1.Items.Append(art_name); gp:=anz*ep;
//Eintrag Artikelbez. //Berechnung Gesamtpreis
Str(gp:9:2,gp_str); Listbox2.Items.Append(gp_str); if mws_satz=7 then
//Eintrag
//Mehrwertsteueranteil
begin mw:=gp*0.07/1.07; Str(mw:9:2,mw_str);
//Erläuterung unten Listbox3.Items.Append(mw_str);
ŗřǯŚȱȱȱȱȬ ȱ
Řşř
Listbox4.Items.Append('
0.00')
end else
//Mehrwertsteueranteil
begin mw:=gp*0.16/1.16;
//Erläuterung unten
Str(mw:9:2,mw_str); Listbox4.Items.Append(mw_str); Listbox3.Items.Append('
0.00')
end; Edit1.Text:='';Edit2.Text:='';
//Textfenster löschen
Edit3.Text:='1';RadioGroup1.ItemIndex:=1;
//Standard einstellen
Edit1.SetFocus
//Fokus auf Artikelbezeichnung setzen
end end;
ȱȱȱȱ Ȭȱȱȱ£ȱȱŝȱ£ǵȱȱ ȱȱ§ǵȱȱ brutto=netto + 0,07*netto=1,07*netto, folglich ist netto=brutto/1,07 mw=brutto-netto=brutto-brutto/1,07=brutto*[1-1/1,07]= =brutto*[(1,07-1)/1,07]=brutto*[0,07/1,07]=(brutto*0,07)/1,07
ȱtȱȱȱ£ ȱȱȱȱȱȱȱûȱ ȱ ȱȱȱŗŜȬ£ȬȱûǯȱȱȬ ȱȱȱȱ£ǯȱȱ ȱ ȱ ǵȱ ȱ £ȱ ûȱ ȱ ȱ ȱ ȱ ȱ Bezahlen ǯȱ ȱȱȱȱȱDZȱȱ procedure TForm1.Button2Click(Sender: TObject); var lepos,i:Byte; sum :Double; sum_str :String; sum7 :Double; sum7_str :String; sum16:Double; sum16_str:String; hilf_str:String;hilf:Double; hilf_info:Integer; begin
//Deaktivieren der Eingabe-Elemente
Button1.Enabled:=False; RadioGroup1.Enabled:=False; Edit1.Enabled:=False; Edit2.Enabled:=False; Edit3.Enabled:=False; //Hervorholen der Ausgabe-Label Label8.Visible:=True;Label9.Visible:=True;
ŘşŚȱ
ŗřȱȱ£ȱȱȱ
Label10.Visible:=True;Label11.Visible:=True; Label13.Visible:=True;Label13.Visible:=True; //Summen der Listen 2 bis 4 berechnen lepos:=Listbox1.Count-1;sum:=0;sum7:=0;sum16:=0; for i:=0 to lepos do begin hilf_str:=ListBox2.Items[i];Val(hilf_str,hilf,hilf_info); sum:=sum+hilf;
//Konvertierbarkeit ist sicher
hilf_str:=ListBox3.Items[i];Val(hilf_str,hilf,hilf_info); sum7:=sum7+hilf; hilf_str:=ListBox4.Items[i];Val(hilf_str,hilf,hilf_info); sum16:=sum16+hilf; end; //Konvertierung zu Ausgabestrings und Ausgabe Str(sum:9:2,sum_str)
;Label8.Caption :=sum_str;
Str(sum7:9:2,sum7_str) ;Label11.Caption:=sum7_str; Str(sum16:9:2,sum16_str);Label13.Caption:=sum16_str; Button2.Visible:=False;Button3.Visible:=True
// Deaktivierung
end;
ȱûȱȱȱȱ£ȱȱȱȱȱȱ£ȱǰȱ Ȭ ȱ ȱ ȱ ȱ ȱ hilf_strǰȱ hilfȱ ȱ hilf_infoȱ Ȭ ǯȱȱ ȱȱȱȱȱȱȱ ǰȱȱȱȱȱ£ȱ ȱȱ ȱǰȱȱȱȱ Ȭ£ȱȱȬ Ȭ£ȱȱ ǯȱȱûȱ£ȱȱǯȱ ȱ ȱ ȱ ȱ £ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ Nächster Kunde ǯȱȱȱ ȱđȱ§ȱȱȬ ȱ ȱ §ȱ Dzȱ £ȱ £ȱ ȱ ȱ ȱ ȱȱ ȱ ¡Ȭ ȱûȱȱȱDZȱ procedure TForm1.Button3Click(Sender: TObject); begin Label8.Visible :=False; Label9.Visible :=False; Label10.Visible:=False; Label11.Visible:=False; Label13.Visible:=False; Label13.Visible:=False; ListBox1.Clear;ListBox2.Clear; ListBox3.Clear;ListBox4.Clear; Button3.Visible:=False;Button2.Visible:=True;
ŗřǯŚȱȱȱȱȬ ȱ
Řşś
Button1.Enabled:=True; RadioGroup1.Enabled:=True; Edit1.Enabled:=True;Edit2.Enabled:=True;Edit3.Enabled:=True; Edit1.SetFocus end;
13.4.5 Erweiterungen ȱȱȱȱȱȱãǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ûȬ ȱȱȱȱȱǯȱȱ ȱȱ ȱȱ ȱȱȱȱȱȱǰȱûȱȱȱ ȱ£ûȱȱ ȱ ǯȱǯȱ ȱȱȱ ȱȱ Korrektur ȱǯȱȱȱȱǰȱȱȱ ȱȱȱ §ȱ ȱǯȱûȱ£ȱȱȱȱȱȱ ȱȱȱȱȱȱȱǯȱȱ ȱ ȱȱȱȱȱȱȱȱȱûȱȱȱȱ ȱ Löschen ȱ£ ȱǯȱûȱȱȮȱȱȱ£ ȱȮȱ ûȱ ǰȱ ȱ ȱ §ȱ ãȱ ȱ ǯȱ ȱ ȱ ãȬ ȱ ȱȱãǰȱȱȱ ȱ ȱǯȱȱ ȱ ǯȱȱ
£ȱ ȱ ȱ ûǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ DZȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱ Ȭ ȱȱȱûȱ£ǯȱȱȱ §ȱȱ ȱǯȱȱ ȱȱãȱȱȱǰȱ ȱȱ¡ȱûȱȱȬ £ȱȱȱ ǯȱȱȱȱǰȱȱȱȱ£Ȭ ȱ ȱǰȱȱȱȱ ȱ§£ǯȱȱ ȱȱûȬȱȱãȱ£ȱȱȱȱǰȱûȱȱȬ Ȭǰȱ ȱȱȱȱ£ȱ£ȱȱȱ ȱEdit2ȱ£ ǯȱEdit3ȱđȱȱ£ǯȱȱ ȱȱ ǰȱȱȱȱûȱǰȱûȱȬ §ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ £ȱ Ȭ ȱ££ȱȱȱȱǰȱ ȱȱ ȱ ȱȱ ȱȱ§ȱ ǰȱ ȱȱȱŗŘǯŚǯŚȱȱ ȱȱ ȱ£ȱûǵȱȱ ȱȱȱȱ ȱȱDZȱȱȱ £ȱ §ȱûȱȱȱ£ȱȱǯȱ ȱȱ ȱȱ ¡ȱȱǰȱȱȱȱ£ȱȱȱ £ȱǰȱ ȱȱȱȱȱ ǯȱȱ
ŘşŜȱ
ŗřȱȱ£ȱȱȱ
ȱ ȱûȱȱȱȱȱ £ȱǰȱȱ ȱȱ £ ȱ ǯȱȱȱȱ đȱȱ ȱ ȱ£ ȱȱ ãǰȱȱȱȱtȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £Ȭ ȱ ȱ ãȱ ǰȱ ȱ ǻ ȱ ȱ Ǽȱ ȱ ȱ ûȱ ǯȱȱ ȱ ȱ §ȱ ȱ ãȱ ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ǰȱȱȱȬȱȱȱȱȱȱ ȱ£ȱȱ §ǯȱ ȱȱȱȱǰȱȱȱȱȱȱ ȱȱ ǯȱȱȱȱȱȱȱȱȱ¡ǰȱȬ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ Ȭ£ȱ ȱ Ȭ Ȭ£ȱȱȱŗŘǯřǯřȱȱ ǯȱȱ Ȃȱȱ £ȱûǯȱ
13.5
Eigene Prozeduren ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱȱȱ ȱȱȱ ȱǰȱȱȱ ȱȱȱ ȱȱȱȱ ȱȱ ȱûȬ ǯȱȱûȱȱȱȱȱ £ȱǻȱȬ Ǽȱ ȱ ǯȱȱ ȱ ȱȱȱȱȱ ȱȱȱ§ǰȱ ȱȱȱȱȱȱȱȱȬ ȱȱȱȱ£ǯȱ ȱȱȱȱ§DZȱȱ¡ȱȱȱȱȱ ȱǻȱŗřǯŘśǼȱȱȱŗǰȱŘǰȱŚǰȱŞǰȱŗŜǰȱřŘǰȱŜŚȱȱŗŘŞǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ãȱ đȱ ǰȱ ȱ ȱ ȱ £ȱȱȱǯȱ ȱȱȱ£ȱǰȱȱȱ ȱȱȱ¡ȱȱ ȱ £ȱȱȱȱȱȱ¢Ȭȱȱ££ȱ ȱ ȱǻȱȱŝǯřǯŗǼǯȱȱ ȱ ȱȱȱ£ȱ£ȱ£ȱȱȱ¡ȱDZȱȱ
ȱȱ ȱŗřǯŘśDZȱ£§ȱ£ȱ¢Ȭȱ
ŗřǯśȱȱȱ£ȱ
Řşŝ
procedure TForm1.CheckBox1Click(Sender: TObject); var dual: Byte; begin dual:=0; if Checkbox1.Checked=True then dual:=dual+1; if Checkbox2.Checked=True then dual:=dual+2; if Checkbox3.Checked=True then dual:=dual+4; if Checkbox4.Checked=True then dual:=dual+8; if Checkbox5.Checked=True then dual:=dual+16; if Checkbox6.Checked=True then dual:=dual+32; if Checkbox7.Checked=True then dual:=dual+64; if Checkbox8.Checked=True then dual:=dual+128; Label1.Caption:=IntToStr(dual) end;
ȱȱȱ§ȱ£DZȱȱ procedure TForm1.CheckBox2Click(Sender: TObject); var dual:Byte; begin dual:=0; if Checkbox1.Checked=True then dual:=dual+1; if Checkbox2.Checked=True then dual:=dual+2; if Checkbox3.Checked=True then dual:=dual+4; if Checkbox4.Checked=True then dual:=dual+8; if Checkbox5.Checked=True then dual:=dual+16; if Checkbox6.Checked=True then dual:=dual+32; if Checkbox7.Checked=True then dual:=dual+64; if Checkbox8.Checked=True then dual:=dual+128; Label1.Caption:=IntToStr(dual) end;
ȱ ȱȱȱ£ȱǰȱȱȱ ȱDZȱȱ ȱȱȱ£ȱȱȱǯȱȱ ǰȱȱ§ȱȱȱûǰȱȱȱȱȱ£ȱ ȱȱȱȱȱǯȱȱ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ ȱ ȱ ãȱ ǯȱȱ
ŘşŞȱ
ŗřȱȱ£ȱȱȱ
ȱȱȱȱȱǰȱȱȱȱȱȱȱȱ£ȱ £ǰȱȱ ȱȱãȱȱauswertungȱȱDZȱȱ procedure TForm1.auswertung; var dual:Byte; begin dual:=0; if Checkbox1.Checked=True then dual:=dual+1; if Checkbox2.Checked=True then dual:=dual+2; if Checkbox3.Checked=True then dual:=dual+4; if Checkbox4.Checked=True then dual:=dual+8; if Checkbox5.Checked=True then dual:=dual+16; if Checkbox6.Checked=True then dual:=dual+32; if Checkbox7.Checked=True then dual:=dual+64; if Checkbox8.Checked=True then dual:=dual+128; Label1.Caption:=IntToStr(dual) end;
ȱ £ȱ ȱ ȱ ȱ ȱ £ȱ §ȱ ȱ ȱ ȱȱȱȱȱauswertungDZȱȱ procedure TForm1.CheckBox1Click(Sender: TObject); begin auswertung end; ................. procedure TForm1.CheckBox8Click(Sender: TObject); begin auswertung end;
ȱȮȱȱȱûȱ ȱȱDZȱȱ ȱûȱȱȱȱ£ȱ§đȱǯȱȱ ûȱȱ ȱȱȱȱȱ¡Ȭȱȱȱȱȱȱ §£ȱȱȱȱȱȱ£ǰȱȱȱȬ ȱȱȱȱȱ¡ȱǰȱȱȱ ȱȬ DZȱȱ ȱȱ
ŗřǯśȱȱȱ£ȱ
Řşş
........... type TForm1 = class(TForm) CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox; Label1: TLabel; procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure CheckBox4Click(Sender: TObject); procedure CheckBox5Click(Sender: TObject); procedure CheckBox6Click(Sender: TObject); procedure CheckBox7Click(Sender: TObject); procedure CheckBox8Click(Sender: TObject); procedure auswertung;
//Anmeldung der eigenen Prozedur
private ............
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ Ȭ ǰȱ ȱ £§ȱ £ȱ £ǰȱ ȱ £ǰȱ ȱ ȱ ȱȱȱ Fehler: undefinierter Bezeichner 'auswertung'
§ȱǯȱ ȱ ȱûȱ ȱȱȱȱ £ȱ procedure TForm1.auswertung;ȱ ǵȱȱ ȱȱ£ȱȱ£ȱ§ǯȱȱ ȱǰȱȱđȱ §ǰȱȱȱȱȱȱ ȱǻǯȱȱŘǯŘǯŝǼǯȱȱ ȱȬȱûȱȱȱȱȱȱ£ȱȱǰȱ ȱOnCreateȱȱȱ£ȱǯȱȱ
řŖŖȱ
ŗřȱȱ£ȱȱȱ
ȱȱ ȱȱ£ȱ£ȱȱȱ£ǰȱȱȬ ȱȱȱȱ£ȱȱȱ£ȱ£ǰȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǻǯȱ ȱ ŚǯŝǯśǼǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ûDzȱ £ȱ ǵȱûȱãȱ ȱȱȱȱȱȱȱ¡ȱȱȬ ȱǻȱŗřǯŘŜǼȱǯȱȱ
ȱȱȱ ȱŗřǯŘŜDZȱȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Form1ǯȱ ȱ ȱ ȱ ȱ ȱ ȱȱForm1ȱȱȱŗřǯŘŝȱDZȱ
ȱȱȱ ȱŗřǯŘŝDZȱȱȱȱȱForm1ȱ ȱǰȱȱȱȱ ȱ£ȱ ȱȱȱŗřǯřǯśȱ£Ȭ ûǰȱ §ȱ ȱ §ȱ £ȱ ȱ ûȱ ǰȱ ȱ ȱ£ȱȱǯȱȱ ȱ ȱ ȱ £ȱ ȱ ȱ £ûȱ ȱ ȱ
TForm1ȱ£ȱ£ȱȮȱȱȱ£ȱȱȱȱȱ Ȭ
ȱȱȱȱȱȱȱȱ£ǯȱȱ ȱȱ ȱ
ȱ
14
Mit Delphi: Pascal lernen
ȱ ȱ ûȱ ȱ ȱ ûȱ ȱ ȱ ȱ DZȱȱȱȱ£ȱ ȱ ȱȱȱȱ ȱ ãȱ ȱ ȱ ȱ ûȱ ȱ ǯȱ ȱ Ȭ ǯȱȱ ȱ ȱȱȱȱȱȱûDzȱȱȱûȱȱ£Ȭ ȱȱȱ¡ȱȱȱ ȱ ȱȱȱȱȱȱ£ȱ ȱȱ¢ȱȱȱ ȱǯȱ ȱȱȱȱȱȱ ȱ¡ȱȱȱȱȱǯȱȱ ȱ §ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǻ!!Ǽȱ ȱ ȱ ȱ Ȭȱ ǰȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ £Ȭ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȬȬ ȱȱȱ ȱȱȱȱȱȱȱȱ ȱ ǯȱȱȱ ȱȱȱ¡ȱ£ȱȱȱȱȱȬȬ ȱ£ȱ Ȭǯȱȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ûȱ ȱ ȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱ ǰȱȱȱȱȱȬǰȱȱȱ ȱȱȬȱ£ȱǯȱȱ Ȭȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ Ȭ ǯȱȱ ȱȱȱ£ȱȱȱȱȱȬ ǯȱ£ ȱȱȱȱȱ ȱãȱ ǰȱȱȱȬ ȱȱȱȱȬȱǯȱȱ ȱȱȱ ǰȱȱȱȱ £ȱ ȱ ȱȱȱȱȱ£ȱ ȱȱȱȱ£ȱȱȱ ȱȱȱȱ¡ȱǰȱȱȱ§ȱȬ ȱȱȱ£§đǯȱȱ £ȱȱȱȱȱȱȬȬȱȱ ȱDzȱ ȱȱȱȱȬȱȱ£ȱȱȱȱȬ ȱȱȱȱ£ȱȱȱȱȱȱ ǯȱȱ ȱ ȱȱ£ǰȱȱȱȱȱȱ£ȱȱȱǰȱ ȱ ȱ ȱ Ȭǰȱ ȱ ȱ ûȱ ȱ Ȭǰȱ £ȱ ȱȱ£ȱǯȱȱ
řŖŘȱ
ŗŚȱȱȱDZȱȱȱ
14.1
Einfache Delphi-Programmierumgebung für Pascal ȱ ȱȱûȱȱȬǵȱ ȱȱȱDZȱȱ§ȱ ȱûȱûȱȱȱȱǰȱȱȱȬ ȱ ǰȱ ȱ ȱ ûȱ ȱ ǰȱ ȱ ¡ȱ £Ȭ ǯȱȱȱȱȱȱȮȱ ȱǰȱȱđȱ ȱ §ǰȱ ȱȱǰȱû£ȱȱûȱȱǯȱȱȱ Ȭ ǯȱȱ ȱȱȱDZȱȱ ȱŗDZȱȱȱȱûȱȱȱǯȱ ȱ ŘDZȱ ǻǰȱ ȱ ŝȱ ȱ ûǼDZȱ ȱ ȱ ȱ ǰȱ ǰȱ ȱ §ȱ ȱ ȱ tȱ Form1ȱ £ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ȱ ȱȱ ȱ ȱ ȱ ¢ȱȱ§ȱǻǼDZȱȱ ȱ ŘDZȱ ǻȱ ȱ ȱ ȱ ŞȦŘŖŖśȦŘŖŖşǼ!DZȱ ȱ ȱ Ȭ Ȭȱȱȱȱȱ£ȱȱǰȱ ȱȱǯȱ đȱ ȱȱȱȱȬ ȱ §ǯȱȱ ȱȱȱȱǰȱȱ§ȱȱȱtȱ Form1ǯȱ ȱ ȱ ǰȱ ȱ ȱ Ȭȱ ȱ ȬȬ ȱ ȱ ǻȱ ȱ ȱ Ǽǯȱ ȱ ȱ ȱ Ȭ ȱ ȱȱ ȱȱ¢ȱȱ TButtonȱȱ§ȱǻǼȱȱ ȱȱ§ȱ£ǯȱȱ ȱŘDZȱǻȱȬǼDZȱȱȱȬȱȱȬ ȱ ȱ ȱ £ȱ ȱ ǰȱ ȱ ȱ ǯȱ đȱ ȱȱȱȬȱǻȱȱǼȱȱ§ȱ Kategorien ȱ ǰȱȱȱ£ȱȱ ȱDelphi-Projekteȱ §ǯȱȱ ȱ ȱ ȱ VCL-Formularanwendungȱ ȱ ȱ ȱ ȱ ǰȱ ȱ §ȱ ȱ ȱ tȱ Form1ǯȱ ȱ ȱ ǰȱ ȱ ȱ Ȭȱ ȱ Ȭȱ ȱ ǻȱ ȱ ȱ Ǽǯȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ¢ȱ ȱTButtonȱȱ§ȱǻǼȱȱȱȱ§ȱ£ǯȱȱ
ȱȱ ȱŗŚǯŗDZȱŗȱȱȱ
ŗŚǯŗȱȱȱȬȱûȱȱ
řŖř
ȱřDZȱȱȱ ȱȱȱȱȱȱ ȱȱȱCaptionȱȱȱȱ Startȱ§ǯȱȱŗŚǯŗȱ£ȱȱȱȬ ǯȱȱ ȱŚDZȱȱȱȱȱȱȱȮȱȱȱȱ ȱȱ ¡Ȭȱ ȱ ȱ £ǰȱ ȱ ȱ ȱ ȱ £ȱ §ȱȱȱȱȱ£ȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); Platz für Vereinbarungen (falls notwendig) begin Platz für Befehle end; end.
ȱȱđȱend.ȱȱȱȱȱȱãȱȱȱ ûȱȱǻȱȱûȱȱȬ¢Ǽȱȱ ǰȱ ȱȱȱ£ȱȱȱ ȱȱ ǯȱȱȱȱȱãȱ ǯȱ ûȱȱȱȱȱ ȱûȱǰȱȱȱȱȱ £ȱ ȱȮȱ ȱȱȱȱȱ ȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Hallo Welt') end;
ȱśDZȱȱȱȱȱûȱ ǰȱ ȱȱ DZȱȱ §ȱ£ȱȱ ǰȱȱûȱ ȱȱȱȬ §ǰȱȱȱȱȱȱȱȱ ȱǯȱȱ đȱ ûȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ûȱ ȱ £ ȱ ȱ Ȭ ȱǯȱȱȱ§ȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ uȱ §ȱ Dzȱ £ȱȱãȱ ȱȱ proj_141uȱǯȱȱȱ .pasȱȱ ȱ£ǯȱȱ đȱ ȱ §ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ £ ȱ Ȭ ǰȱȱȱ ȱȱđȱȱ ǰȱȱDZȱȱ ȱȱȱ
řŖŚȱ
ŗŚȱȱȱDZȱȱȱ
ȱûȱ ȱȱȱȱ§ȱ uȱȱȱȱȱ ǰȱȱ §ȱ£ȱȱȱ proj_14ǯȱȱȱȱ ȱ§Ȭ ȱȱȱȱ ȱãǯȱ ȱ ŜDZȱ ȱ ȱ ¡ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱȱ ǯȱȱȱȱȱ£ ȱDZȱȱ ȱûȱ ȱȱȱȱȱȱȱ§ȱȱȱȱȱȱȱȱȱȱȱȱȱ ȱ ȱ F9 ȱȱȱǯȱȱ ȱȱȱȱ Form1ǰȱȱȱȱ ȱǯȱȱȱ£ȱǯȱȱȱ ȱȱ ȱ ȱȱȱȱ ȱȱȱ£ ȱȱđȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ǰȱ ȱȱȱȱȱȱđȱ ǰȱȱȱȬ ȱȱȮȱȱȱȱŗŚǯŘȱ£ȱȱȮȱȱǯȱȱ
ȱȱȱ ȱŗŚǯŘDZȱȱȱ ȬȬȱ ȱȱ ȱȱ ȱȱ OK ȱDzȱđȱ ãȱȱ ȱȱ Start ȱȱȱȱȱ ǯȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ Start ȱ ǰȱ Ȭ ȱ ȱȱ¡ȱȱȬǯȱȱȱ§ǰȱûȱ ȱ ȱ ȱ ȱ đȱ ȱ ȱ ȱ ȬȬûȱȱûȱ ǯȱȱ ȱ ȱ ¡ȱ ȱ £ȱ ȱ ǰȱ ȱ ȱ ȱ F12 ǰȱ ȱ ȱ £ Ȭ ȱ ȱ ȱ ǻȱ ȱ ȱ Ȭȱ ȱ ȱ ȱ Ǽȱȱȱȱȱȱ¡ȱǯȱȱ ȱȱȱǰȱ ȱûǰȱȱȱȱ ȱǯȱȱȬ ȱ ȱȱȱ ǯȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ [ȱ ȱ ȱ ȱ £ȱ §ȱ ȱ ȱ ȱȱȱȱǻȱ§ȱuǼȱ£ȱ §ǯȱȱ
14.2
Ein- und Ausgabe ǰȱȱȱȱȱ Readȱȱ ReadLnǰȱ Writeȱȱ WriteLnȱȱȱȬ ǯȱȱȱȱȱȱ£ ȱȬȱȱȬǯȱȱ ȱȱȱ ȱǰȱȱȱ£ȱȱȱǯȱȱȱ
ŗŚǯŘȱȱȬȱȱȱ
řŖś
14.2.1 Ein- und Ausgabe von Zeichenfolgen (Strings) ȱȱDZȱȱShortStringȬ£ȱȱȱStringȬ£ȱǻȬ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ¡ȱ ŘśŜȱ Ǽȱ ȱ ȱȱInputBoxȱȱ£ȱDZȱȱ procedure TForm1.Button1Click(Sender: TObject); var tx: ShortString; begin tx:=InputBox('Namenserfassung','Bitte Name eingeben','') end;
ȱ ȱŗŚǯřDZȱ¡ȱ ȱ ǰȱ ȱ ȱ ŗŚǯřȱ £ǰȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ȱ ȱ ȱ ǻDZȱ NamenserfassungǼǰȱ ȱ ȱ £ ȱ ȱ £ ȱ ȱ ûȱ £ȱ ȱ £ȱ ǻDZȱ Bitte Name eingebenǼǰȱȱûȱȱ£ǯȱȱ ȱȱ£ ȱȱȱ ȱȱǰȱȱȱȱ ȬȱǻDefaultȬǼȱȱȱ£ȱȱȱ§ȱȱûȬ ȱ ǯȱȱ ȱ ȱ ȱ StringȬȱ ȱ ShortStringȬ£ȱ ȱ ȱ ShowMessageȱȱǻȱŗŚǯŚǼǰȱ ȱ§ȱ¡ȱȱ ȱ£ȱ£ȱǯȱȱ ȱ £ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ¡ȱ Sie trugen ein:ȱȱȱȱȱ£ȱtxȱȱȱ£ȱȱ DZȱȱ procedure TForm1.Button1Click(Sender: TObject); var tx: ShortString; begin tx:=InputBox('Namenserfassung','Bitte Name eingeben',''); ShowMessage('Sie trugen ein: '+tx) end;
ȱȱȱȱȱȱȱȱȱȱǯȱȱ
řŖŜȱ
ŗŚȱȱȱDZȱȱȱ
Ȭȱ ûȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱȱȬȱȱ ȱǮȬȱ ȱȱȱ ȃȱȱȱȱûȱȱ£ȱǯȱȱ
ȱȱȱ ȱŗŚǯŚDZȱShowMessageȱ
14.2.2 Ausgabe von ganzen Zahlen (Integer) ȱ ShowMessageȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱ ȱ ȱ ȱ IntegerȬ£ȱ £ȱ ȱ ȱ ȱ ȱ Ȭ ǰȱȱȱȱ ȱǯȱȱ ûȱȱȱȱȱIntToStrDZȱ procedure TForm1.Button1Click(Sender: TObject); var tx: ShortString; nr: Integer; begin nr:=13; tx:=InputBox('Namenserfassung','Bitte Name eingeben',''); ShowMessage('Herr '+tx+' wohnt in Nr. '+IntToStr(nr)) end;
14.2.3 Ausgabe von Dezimalbrüchen (Single, Double, Extended!!) ûȱ ȱ ȱ §£ȱ ȱ ȱ ¢ȱ ȱ ȱ ȱ Ȭ ǰȱȱȱȱIntToStrȱȱ£ȱǯȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ £ȱ £ȱ
Strȱȱȱȱȱȱ£ȱ£ǯȱȱ
ȱ ȱ ȱ ûȱ ȱ ShortStringȬȱ ȱ StringȬ £ȱ ȱ ȱ ShowMessageȱȱ DZȱȱȱ procedure TForm1.Button1Click(Sender: TObject); var x : Double; x_str: ShortString; begin x:=3.14159; Str(x,x_str); ShowMessage('Die Zahl Pi beginnt mit'+x_str) end;
ŗŚǯŘȱȱȬȱȱȱ
řŖŝ
ȱŗŚǯśȱ£ǰȱȱȱȱȱȱȱȱȱǯȱȱ
ȱȱ ȱŗŚǯśȱȱȱStrȬ£ȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ StrȬ£ȱ ǰȱ ȱ ȱ Ȭ ǰȱǰȱ ȱȱȱȱǻđȱȱ£ȱ £ ǯȱȱ£ȱȱȱŞǰȱ ȱȱȱŗŘǯřǯřȱûȱȬ Ǽȱȱ ȱȱȱȱȱȱ£ȱ£ȱ£ȱ DZȱ Str(x:7:5,x_str);ShowMessage('Die Zahl Pi beginnt mit'+x_str)
ȱ§ȱȱȱȱȱȱȱǰȱ ȱȱȱŗŚǯŜȱȬ ȱ ǰȱȱȱȱǮȃȱȱ£ȱǯȱȱ
ȱȱȱ ȱŗŚǯŜDZȱStrȬ£ȱȱȱ
14.2.4 Erfassung von ganzen Zahlen und Dezimalbrüchen ȱ InputBoxȱ ȱ £ȱ ȱ StringȬȱ ȱ ShortStringȬ§£ȱ ûȬ ǯȱ ȱ ǰȱ ȱ InputBoxȱ ȱ ȱ ȱ £ȱ ȱ Ȭ £ȱȱȱ£ȱ ǰȱ ȱȱȱȱǰȱ§ȱ ǯȱȱ procedure TForm1.Button1Click(Sender: TObject); var x : Double; begin x:=InputBox('Zahleneingabe','Geben Sie eine Zahl ein!','') end;
ȱȱȱȱȱȱȱDZȱȱ
ȱȱ
řŖŞȱ
ŗŚȱȱȱDZȱȱȱ
ȱȱ£ȱǵȱȱ ȱ £ǰȱ ȱ ¡ȱ ȱ ǰȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ShortStringȬȱ StringȬ£ȱ ǻȱ ȱ ŞDZȱ ȱ StringǼȱ Ȭ ȱ ǯȱȱ ȱ ȱ ȱ ǰȱ ȱ ȱ Ȭȱ ȱ Ȭ£ȱ ȱ ȱ£ȱǯȱ £ȱǰȱȱȱȱ ȱȱȱȱǯȱȱ ûȱđȱȱȱȱǰȱȱ£ȱȱȱȱ ȱ £ȱ £ȱ ǰȱ ȱ û£ȱ ȱ £ȱ ǯȱȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ǰȱ ȱȱȱ£ȱȱȱȱ§ǯȱȱȱȱȱȱȱȬ £ǰȱȱ£ ȱûȱȬȱȱǰȱȱȱȱȬ ȱ£ȱ ǯȱȱ
ȱȱȱȬ £ȱValǯȱȱ Valȱ ȱ ȱ ȱ §DZȱ ȱ ȱ Valȱ ȱ ȱ ȱ ShortStringȬȱ £ ǯȱ StringȬ£ǰȱ ȱ ȱ £ȱ ȱ ȱ
ȱǯȱȱ
ȱȱ Valȱȱȱȱ£ǰȱȱȱȱ£ȱȱȬ ȱ ȱ ǻȱ ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ§Ǽǰȱȱ ȱǯȱȱ£ȱȱȱ ȱ Ȭȱȱȱȱǯȱȱ đȱ ȱ £ȱ ȱ ǰȱ ȱ IntegerȬ£ȱ ãǰȱ ȱ ȱ ȱ ValȬ£ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ǻȱ ȱ Ǽȱ ȱ ȱ ȱ ȱ ȱ £ȱ ȱ ȱ ȱ ȱ ǻȱ Ȭ ȱǼǯȱȱȱȱȱȱȱȱȱȱǰȱ ȱ ȱ £ȱ ȱ ȱ ǯȱ ȱ §ȱ ȱ ǰȱ ȱ ȱ £ȱǯȱȱȱȱ£ǰȱ ȱ£ȱDZȱ procedure TForm1.Button1Click(Sender: TObject); var x : Double; x_str: String;x_info: Integer; begin x_str:=InputBox('Zahleneingabe','Geben Sie eine Zahl ein!',''); Val(x_str,x,x_info);
//Konvertierungsversuch
if x_info=0 then begin // ... hier können Befehle zur Verarbeitung der Zahl stehen ShowMessage('Es war eine Zahl!'); end end;
//Beispiel
ŗŚǯřȱȱȱȱȱȱ
řŖş
ȱ ȱ ȱ ǰȱ ȱ §ȱ ȱ ȱ ȱ ȱ ȱ £Ȭ ȱȱ ǰȱ ȱȱȱǻȱ ȱǼȱ ǰȱȱȬ ȱ£ûȱȱȱȱȱȱ Ȭ ȱȱȱȱȱ if x_info=0 then begin ... end
ȱ ǯȱ ȱ ȱ §ȱ ǰȱ §ȱ ȱ £ ȱ Ȭ ȱȱȱ £ȱȱȱȱȱȱ£ǯȱȱ ȱȱȱǰȱ ȱȱ£ȱȱȱȱ ȱǵȱȱ ȱȱû£ȱ£ ȱȱǰȱȱȱȱȱȱȱ ǯȱ ȱȱǯȱȱǯȱȱ ȱȱŗŚǯŚǯřȱ ȱ§ȱ§ǰȱ ȱ ȱȱ£ȱȱȬ ȱȱȱȱ£ȱȱȱãȱȮȱȬ ǰȱȱȱȱ£ȱȱȱǯȱȱ ȱȱȱȱȱȱȱ ǰȱȱȱȱǰȱ ȱ ûȱ ȱ ȱ ȱ IntegerȬ§£ȱ ȱ ȱ ȱ ȱ ŝǯŗǯŘȱȱȱStrToInt ȱ ȱ ǵȱ var x : Integer; begin x:=StrToInt(InputBox('Zahleneingabe','Bitte Zahl eingeben!','')) end;
ȱ ȱȱǰȱȱȱȱȱDZȱȱ StrToIntȬȱ ȱȱ£ȱȱDzȱȱȱȱǰȱ ȱȱ £ȱȱȱǰȱȱȱ£ȱȱ£ȱȱȱ§ǯȱ ȱȱ£ȱȱStrȱȱȱȱ£ȱȱȬ £ǯȱȱ ȱȱȱśǯŗǯŚȱûȱǰȱȱȱȬ ȱ ȱ £ȱ ȱ ǯȱ ȱ ȱ ãȱ ȱ ȱ ȱ ȱInputBoxȱȱǯȱȱ
14.3
Strukturiertes Programmieren mit Pascal ȱȱǰȱȱȱȱȱ ȱȬ ǰȱȱǰȱ££ȱ ǯȱȱ ȱ ȱ £ȱ ȱ ȱ ȱ £ãȱ ȱ ȱ ȱǰȱȱȱȱȱȱȱȱǰȱȱȱ ȱǰȱȱ ǯȱȱȱȱ
14.3.1 Strukturelemente und ihre Umsetzung in Pascal ȱ ȱȱȱȱǰȱȱȱȱȱȱȬ ȱȱȱȱȱ ǯȱ
řŗŖȱ
ŗŚȱȱȱDZȱȱȱ
Umsetzung in Pascal Die Befehle werden nebenoder untereinander geschrieben, getrennt voneinander jeweils durch ein Semikolon:
Umsetzung in Pascal repeat Befehle des Schleifeninneren, getrennt durch Semikolon until ende_bedingung
Umsetzung in Pascal while lauf_bedingung do begin Befehle des Schleifeninneren, getrennt durch Semikolon end
Umsetzung in Pascal for zählvar:=anfwert to endwert do begin Befehle des Schleifeninhalts, getrennt jeweils mit Semikolon end
ŗŚǯřȱȱȱȱȱȱ
řŗŗ
for zählvar:=endwert downto anfwert do begin Befehle des Schleifeninhalts, getrennt jeweils mit Semikolon end
Umsetzung in Pascal if test then begin Befehle des JA-Zweiges, getrennt voneinander jeweils mit Semikolon end
Umsetzung in Pascal if test
then
begin Befehle des JA-Zweiges, getrennt voneinander jeweils mit Semikolon end else begin Befehle des NEIN-Zweiges, getrennt mit Semikolon end
řŗŘȱ
ŗŚȱȱȱDZȱȱȱ
14.3.2 Ausnahmeregelungen ȱȱȱȱȱǰȱȱ§ȱȱȬ ȱ ȬȱȱȬ ȱȱȱ£ ǯȱȱȱȱȱ£ȱ ȱ ȱ ȱ ȱ ȱ £ȱ ǰȱ ȱ ȱ ȱ ȱ Ȭ ȱbegin...endȱ£ȱ ȱǻȱȱǼDZȱ
while lauf_bedingung do ein Befehl oder Strukturelement
for zählvar:=anfwert to endwert do ein Befehl oder Strukturelement
if test then ein Befehl oder Strukturelement
ȱ ȱȱȱȱ£ȱǰȱȱȱelseȱȱȱȱȱȱ ǻȱȱ§ȱȱȱ Ȭ ȱȱ ȱ£ ȱǼDZȱ if test
then
JA-Befehl oder Strukturelement else NEIN-Befehl od. Strukturelement
14.3.3 Tests ȱ ȱȱȱȱȱȱ£ȱȱ ȱȱȱ§Ȭ ȱȱǯȱ
ȱȱ DZȱ
ȱȱDZȱȱȱ
if linkeSeite = rechteSeite then... if linkeSeite rechteSeite then...ȱȱȱ
ŗŚǯŚȱȱȱ
řŗř
ûȱ£ ȱȱȱDZȱȱ if (test1) and (test2) then...ȱ DZȱȱ if (a > 1) and (a < 3) then...ȱ ȱDZȱȱȱȱûȱûȱ ǷȱȱDZȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ if (a > 1) and (< 3) then...
ûȱ£ ȱȱȱDZȱȱ
if (test1) or (test2) then...ȱ
DZȱ if (a < 1) or (a > 3) then...ȱ ȱȱ DZȱȱȱȱûȱûȱ ǷȱȱDZȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ if (a < 1) or (> 3) then...
14.3.4 Ein- und Ausgaben ȱûȱȱȱȱ§£ȱȱ£ȱ£ ǯȱûȱȱȬ ȱȱȱȱ£ȱȱȱȱȱȱȱ DZȱȱ ȱȱ£ȱȱ£DZȱȱ ȱ ȱ ȱ ȱ ȱȱȱȱ£ȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ §ȱ ¡ȱ ȱ Ȭȱ ȱ ȱ ãȱ ȱ ȱ ȱ Ȭ Dzȱ ȱ ȱđȱȱȱȱǰȱȱȱȱ ȱȱȱ ȱȱ ǯȱȱ
14.4
Beispiele ûȱ ȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱǯȱȱ
14.4.1 Strukturelement Folge ȱ ȱ ǰȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ £ûȱ ȱ ǰȱ ãȱ ȱ ȱ ǯȱ ȱ £ȱȱȱȱȱȱȱǯȱȱ
řŗŚȱ
ŗŚȱȱȱDZȱȱȱ
DZȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ £ûȱ Ȯȱ ȱ ȱ ȱ £ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ Ȭ ȱ ǰȱȱȱȱȱȱȱȱ DZȱȱȱȱ ȱȱ£ȱȱȱȱȱ ǯȱȱȱȱ ȱȱ§ȱȱȱȱȱDzȱȱȱ ȱ đȱ £ȱ ȱ ȱ ȱ ȱ ¡ȱ ȱȱȱ¡ȱ£ǯȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ procedure TForm1.Button1Click(Sender: TObject); var tx1,tx2,tx3,tx4: ShortString;
//Vereinbarungen
begin tx1:=InputBox('Texteingabe','Erste Zeichenfolge:',''); tx2:=InputBox('Texteingabe','Zweite Zeichenfolge:',''); tx3:=tx1+tx2; tx4:=tx2+tx1; ShowMessage('Erster + zweiter Text: '+tx3); ShowMessage('Zweiter + erster Text: '+tx4); end;
14.4.2 Strukturelement Abweisschleife (kopfgesteuerte Schleife) ȱ ¢ȱ ȱ ûȱ ȱ ȱ ȱ ȱ ȱ Ȭ £ȱȱȱȱǯȱȱ ȱ£ȱȱǰȱ ȱȱȱ£ȱȱ ǰȱȱȱȬ ȱȱǰȱȱȱȱȱDzȱȱȱ£ȱ ȱȱȱȱȱ ȱȱȱȱǰȱȱȱ ȱȱȱȱȱȱȱǯȱȱ ȱ ȱȱǰȱȱȱ£ȱȱȱǰȱ ȱȱȱȱȱȱȱȱǰȱȱȱȱǯȱ
ŗŚǯŚȱȱȱ
řŗś
ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǰȱ đȱ ȱ ȱ ǰȱ ȱȱȱûȱǯȱ £ȱ ȱȱȱȱȱȱȱȱǻȱ£ȱ ȱȱȱȱfensterȱǼǯȱȱȱȱȱ ȱ ȱ ǰȱ ȱ ȱ §ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ ȱȱȱȱǯȱ ȱ
procedure TForm1.Button1Click(Sender: TObject); var fenster, tx: ShortString; anzahl
: Integer;
begin tx:=''; anzahl:=0;
//Initialisierung
fenster:=InputBox('Texteingabe','Zeichenfolge eingeben:',''); while fenster'***' do begin tx:=tx+fenster; anzahl:=anzahl+1; fenster:=InputBox('Ende mit ***','Zeichenfolge eingeben:','') end; ShowMessage('Alles zusammen: '+tx); ShowMessage('Anzahl der Eingaben: '+IntToStr(anzahl)) end;
14.4.3 Strukturelement Nichtabweisschleife (fußgesteuerte Schleife) ȱđȱȱ ȱȱȱ ǰȱ ȱȱȱȱȬ ȱ £ȱ ûȱ ǰȱ ȱ ȱ ȱ ȱ ǰȱ ȱ ȱ ȱ ȱûȱǯȱȱ
řŗŜȱ
ŗŚȱȱȱDZȱȱȱ
DZȱȱ£ȱȱ£ ȱ ǰȱȱȱ£ǰȱȱ ȱȱȱ đȱȱǯȱ ȱȱȱȱȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ȱ ǯȱ ȱ £ȱ Ǯ§ȱȱȱȱȱȱȃǰȱȱȱȱǯȱȱ ȱ ȱ ȱ ȱ ȱ procedure TForm1.Button1Click(Sender: TObject); var tx: ShortString; begin repeat tx:=InputBox('Texterfassung','Zeichenfolge eingeben:','') until (tx>='A') and (tx='A') and (tx