158 101 5MB
German Pages 361 Year 2009
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 3141235!|!56789123456789123456789
% (ȬA 9!Ȭ" E ǻ Ǽ 7 > £7 ) 7 * (Ȭ ûA %$%¢$
7
3$ 5* E 7££@
12.1.3 Datentyp Double 8 E 7 7
ŞȬ(ȬȬ §!¢*Double > var genau_x, genau_y: Double;
C ) 6$2 5*$ *@£ * > ( ¡ ǰ ( û Aǯ % Single %¢ Double %¢ ** @
)
ŝȬ (ȬA 3 5* E $ ŗ-ŗ1 û 9!!@
Ř
Ř;ś
12.1.4 Datentyp Extended ' ŗ+Ȭ(Ȭ§!¢* Extended > 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;
Ř
Ř;