Übungsaufgaben zu Delphi von M. Hühr

Ähnliche Dokumente
Komponente NumEdit für Delphi 5.0

6. Grafikprogrammierung

Schriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03

Delphi Grundkurs Seite 31

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;

Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen

Name. Aufgabe 1) Zur Erinnerung:

Delphi eine Einführung

Programmierung in Delphi

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

GK Informatik /08 (bumue) Klausur

DELPHI 03 SIEBEN ÜBUNGSPROGRAMME. Herbert Paukert

12. Fachseminar Informatik Martin Jakobs Zustandsorientierte Modellierung (Standard 2)

Programmierung mit Delphi

LERN-ONLINE.NET AUFGABENBLATT INFORMATIK

Ziehen Sie jetzt mit gedrückter linker Maustaste ein Rechteck auf dem Formulareditor auf. Lassen Sie die Maustaste dann los. Was passiert?

Workshop 1 Idealgewicht, Version 1 Starten Sie Delphi. Erstellen Sie ein Formular, das ungefähr so aussieht wie die folgende Abbildung:

TList-Tutorial von Johannes Tränkle

EINFACH. Programmier-Grundkurs. Rosa Mistelbauer

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mmanager, mausgabe, morderedlist, mereignis, mauto;

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Musterlösungen zu den RSA-Arbeitsblättern

Christian-Weise-Gymnasium Zittau Fachbereich Informatik M. Hans

Mastermind. objektorientiert, mit Delphi. Patrick Breuer. November Spielbeschreibung 1. 3 Ein erstes Klassendiagramm 1.

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

AUFGABE 3: GUTE STUBE

FRIEDRICHSHAFEN. Konstruktion einer Apparatur zur Erstellung von Wärmebildern. ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht

Kurzanleitung Hama Photokalender v

Um Listen in übersichtlicher Form zu präsentieren, verwenden Sie zur bequemen Eingabe und übersichtlichen Ausgabe Tabellen.

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog

Hannover: Lebensqualität in der Südstadt

Erstellen von graphischen Ausgaben

Windows Forms Projekte mit C++ in Visual Studio 2017

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

# % & & % # # % % & (

Arbeiten mit dem VBA-Makro Punkte ein- auslesen

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache

Ersatz für freie Listen in SibankPLUS

Arbeitsblatt Übungen in Delphi Informatik Klasse: Datum: 1. Juni 2007

Arbeitsblatt 6: Programmierung geometrischer Figuren

Informatik I. 7. Der let-ausdruck und eine graphische Anwendung. 18. November Albert-Ludwigs-Universität Freiburg. Informatik I.

Einführung in die. Informatik. die Wissenschaft / Technik / Anwendung

Sachinformation. TButton. TLabel. TMemo

Übungsaufgaben zum Erlernen der Handhabung von Delphi

Zum Spiel. Lazarus Python Java

Informatik I. Informatik I. 7.1 Der let-ausdruck. 7.2 Das Graphik-Paket image.ss. 7.3 Fraktale Bilder. Wiederholte Berechnungen: Der let-ausdruck

Komponente QPortUSB für Delphi 2006

Handhabung der tabellarischen Übersichten in MAXQDA

Mandozzi Elettronica S.A..

TEXTEFFEKTE TEXTFELDER VERWENDUNG VON TEXTFELDERN. Markieren Sie den Text, und klicken Sie in der Registerkarte Start auf das

Inhalt. Dokument Beschreibung. Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Visual Basic Express PST_Bearbeitung_Dialog

Typisierte Dateien von Martin Strohal. Einleitung. Der Record

Anleitung zur Migration auf Webmail

Um Werte und deren Verlauf in einer Grafik darzustellen, benutzen wir eine Tabellenkalkulation wie Excel oder das Tabellendokument von Open Office.

Mit Shape können Sie Formen wie Rechteck, Ellipsen, Kreise auf die gleiche Art wie z. B. ein Button oder ein Label erzeugen.

Schwebende DIV-Container erzeugen

Anleitung für einen Eintrag einer Tätigkeit (News, Einsatz, Sonstiges) in unserer Homepage

Bedienungsanleitung der Wissensdatenbank

Komponente PortIO für Delphi 5.0

Daten transformieren

Stopp-Listen. Die Funktion von Stopp-Listen. Das Fenster zur Verwaltung der Stopp-Listen

ratplus Plenum Schulung

Kurze Einführung in die Arbeit mit dem Programm EUKLID ( Ac / 2008 )

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Datenbanken Kapitel 3

Dynamische Geometrie

ProMaSoft.de WordPDFFormular Version (1.083) Seite 1 von 7

tdaten=record name : string; alter: integer; groesse:real; end;

Rezepte in der Klammer-Strich-Methode schreiben

G. KAMLEITER INFORMATIK. Einführung in DELPHI SJ 2004/05 LGG * DARMSTADT. Kurs 11

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Simulation von digitalen Schaltungen

Textverarbeitung mit Word

1. Das Koordinatensystem

Funktionen nur wenn dann

Näherung von π. Aufgaben und gestufte Arbeitshilfen für die. mit OpenOffice CALC

Der Windows Explorer INITE 7e 2003 Joël François

Aufgabe 2 (Musterlösung) CorelDRAW

2 Programmentwicklung mit Delphi

2 Grundlagen und Grundeinstellungen

Tutorial für GTT "Guntram's Tablet Weaving Thingy"

GISLUPE. Diese Angaben sind unbedingt einzuhalten, damit später die Informationen auch wieder abgerufen werden können.

LEGO-Mindstorms-Roboter im Informatikunterricht -mit Delphi-

Diese geometrischen Formen (Linien oder Flächen oder Text) in sechs Kategorien können Sie auf die Zeichenfläche zeichnen:

Spiele programmieren mit Lazarus, Java und Python

4D Progress Die Projektmethoden für diese Komponente erscheinen im Explorer auf der Seite Methoden unter Komponent-Methoden:

Readme zum Filterbastler

5.2 Variablenkonzept und elementare Datentypen

Handbuch für Redakteure

1 Einführung zur Windowsprogrammierung für das Programm Hallo mit Visual Studio.Net

Beschriftungssoftware für Legrand Reiheneinbaugeräte

GOOGLE MAPS. FLOCOM-Info. Google Maps. 1. Benutzeroberfläche

RÖK Typo3 Dokumentation

Ein erstes "Hello world!" Programm

MUNIA Bedienungsanleitung

Transkript:

Übungsaufgaben zu Delphi von M. Hühr einige Aufgaben zur Übung von Algorithmen leicht 1.1 Schreiben Sie ein Programm, mit dem man die Summe der Zahlen von 1 bis zu dem eingegebenen Wert erhält. 1.2 Schreiben Sie ein Programm,mit dem man die Summe von geraden bzw. ungeraden Werten bis zu einem eingegebenen Wert berechnen kann. 1.3 Schreiben Sie ein Programm, bei dem man eine vorgegebene Anzahl von Werten eingibt, und das Proramm die Anzahl der Werte zählt,die größer bzw. kleiner als einer sind,als Schranke eingegebenen Wert. 1.4 Schreiben Sie ein Programm zur Zinseszinsrechnung, das den Endbetrag ausrechnet,wenn man die Einzahlung die am Anfang getätigt wird, den Zinssatz und die Laufzeit eingibt. mittel 2.1 Schreiben Sie ein Programm, mit dem man Werte der Größe nach sortiert ausgeben kann. 2.2 Schreiben Sie ein Programm, mit dem man die Primzahlen ausgeben kann. 2.3 Schreiben Sie ein Programm, bei dem man eine bestimmte Anzahl von Zahlen eingibt und von diesen den Durchschnitt berechnet und außerdem Minimum und Maximum ausgeben kann. schwerer 3.1 Schreiben sie ein Programm, bei dem man das Alter einer Person errechnen kann, indem man das Geburtsdatum eingibt. 3.2 Entwickeln Sie einen ganz einfachen Texteditor für Textdateien. Tip: für Rückgängigbutton folgenden Quelltext einfügen.(nur 1 Schritt möglich) with RichEdit1 do if HandleAllocated then SendMessage(Handle, EM_UNDO, 0, 0);

unit Unit1; {Lösung zu Aufgabe 1.1} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Edit1: TEdit; Button1: TButton; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var i,eingabe,wert,code:integer; edit2.text:=''; val(edit1.text,eingabe,code); if code=0 then wert:=0; for i:=1 to eingabe do wert:=wert+i; edit2.text:=inttostr(wert); end else showmessage(edit1.text+' ist keine Zahl'); edit1.text:=''; edit1.setfocus; procedure TForm1.Button2Click(Sender: TObject); edit1.text:=''; edit2.text:=''; edit1.setfocus; end.

unit Unit1; {Lösung zu Aufgabe 1.2} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; Edit3: TEdit; Label2: TLabel; Label3: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var i,uwert,gwert,eingabe,code:integer; val(edit1.text,eingabe,code); if code<>0 then showmessage(edit1.text+' ist keine Zahl'); edit1.text:=''; edit1.setfocus; if code=0 then uwert:=0; gwert:=0; for i:=1 to eingabe do if (i mod 2)=0 then gwert:=gwert+i; if (i mod 2)<>0 then uwert:=uwert+i; edit2.text:=inttostr(gwert); edit3.text:=inttostr(uwert); procedure TForm1.Button2Click(Sender: TObject);

end. edit1.text:=''; edit2.text:=''; edit3.text:=''; edit1.setfocus; unit Unit1; {mögliche Lösung zu Übung 2.2- mittels Einzelzahlprüfung} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Edit1: TEdit; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } var Form1: TForm1; i,j:integer; a,b,code:integer; Zahl:integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); val(edit1.text,zahl,code); b:=0; if code=0 then if zahl>0 then for i:=zahl downto 1 do a:=zahl mod i; if a=0 then b:=b+1; if b<=2 then showmessage(edit1.text+ ' ist eine Primzahl') else showmessage(edit1.text+ ' ist keine Primzahl'); edit1.text:=''; edit1.setfocus; end else {code >0} showmessage(edit1.text+' ist keine natürliche Zahl, oder <= 0 '); edit1.text:=''; edit1.setfocus; procedure TForm1.FormPaint(Sender: TObject);

end. edit1.setfocus; Beispiele Übungsaufgabe 1 - Digitaluhr Zuerst plaziert man einen Timer und ein Label auf das Fenster. Dann klickt man den Timer an und fügt im Quelltext folgendes ein. Label1.caption:=timetostr(time); Man kann dann noch das Aussehen ändern. Um eine optimale Schrifthöhe und Ausrichtung des Labels zu erreichen, wählt man im Objektmanager Label1 aus oder aktiviert es durch Anklicken im Entwurf. Den Wert für Caption ändert man in 00.00.00. Den Wert für Font kann man jetzt besser bestimmen. Wenn ein Plus vor einer Eigenschaft steht kann man durch Anklicken des Pluszeichens die einzelnen Eigenschaften dieser Eigenschaft anzeigen lassen. Man ändert die Größe der Schrift durch Verändern vom Wert Size. Um der Anwendung einen eigenen Namen zu geben, ändert man die Eigenschaft von Form1.caption.Um zu erreichen, daß das Fenster die Größe behält und nicht maximiert werden soll, verändert man die Eigenschaft BorderIcons.bimaximeze auf false. Ein eigenes Icon für das Fenster kann man mit der Eigenschaft Icon laden. Nach dem Starten des Programms erscheint solch ein Fenster.

Übungsaufgabe 2 : Videoplayer benötigte Elemente da Zuerst werden die benötigten Objekte auf dem Formular plaziert. Bei MainMenu und OpenDialog ist die Lage auf dem Formular nicht wichtig, sie bei der Laufzeit nicht zu sehen sind. Dann klickt man den MainMenu1-Button an. Es erscheint ein weiteres Formular. Man verändert im Objektmanager die Eigenschaft von MenuItem1.Caption zu &Datei. Das & -Zeichen bewirkt, daß der nachfolgende Buchstabe unterstrichen wird und man mit ALT + dem unterstrichenen Buchstaben die Funktion zur Laufzeit aufrufen kann. Genauso verfährt man mit den darunterliegenden Feldern. Klickt man das Feld von Beenden an erscheint der Quelltexteditor. An der Stelle wird folgender Quelltext eingefügt: procedure Tform1.Beenden1Click(Sender:Tobject); close; end. Für das Öffnen der Datei fügt man folgenden Quelltext ein ProcedureTForm1.Videooffnen1click(sender:TObject); if OpenDialog1.Execute then MediaPlayer1.DeviceType:=dtAutoSelect; MediaPlayer1.Filename:=OpenDialog1.FileName; MediaPlayer1.open; Anschließend verändert man die Eigenschaften der Objekte im Objektmanager: Form1: Caption: Videoplayer Dies bewirkt,daß das Fenster einen eigenen Namen bekommt. Panel1: Caption: (einfach den Inhalt im Objektmanager löschen) Panel1 soll als Abspielfläche dienen, da stört ein Name. Mediaplayer1: Display : Label1 Man klickt auf das Pluszeichen vor VisibleButton und das Menu wird erweitert. btrecord : false bteject : false Opendialog1: Wenn man auf Filter klickt erscheint nebenstehender Dialog. In die erste Spalte schreibt man die Bezeichnung der Dateiart und in die zweite die Dateiextension. In unserem Programm ist es *.AVI.

Um das Programm zu vervollständigen, öffnet man im Menu Projekt Projektoptionen und lädt sich ein Icon für die Anwendung. Man vergibt auch einen Namen für die Anwendung. Es können selbständig noch weitere Änderungen gemacht werden. Wenn das Programm richtig erstellt wurde, sieht es so aus:

Übungsaufgabe 3:Fileviewer 1. Schritt: Zuerst plaziert man ein Panel auf dem Formular und stellt die Eigenschaft Align auf altop. Dann plaziert man ein weiteres Panel und stellt die Eigenschaft Align auf albottom. Anschließend ein Memofeld in die Mitte gesetzt mit der Eigenschaft Align - alclient. Ein Button wird auf dem oberen Panel plaziert und die Eigenschaft von Caption auf Öffnen geändert. Einen Opendialog braucht man auch,sowie eine Listbox, die man auf die untere Panel setzt und dann die Eigenschaft auf alclient ändert. 2. Schritt: Man klickt dann auf den Button und der Quelltexteditor erscheint. Dort ergänzt man die Prozedure so: procedure TForm1.Button1Click(Sender: TObject); if opendialog1.execute then if opendialog1.filename<>''then memo1.lines.loadfromfile(opendialog1.filename); listbox1.items.add(opendialog1.filename); Das klickt man die Listbox und schreibt folgende Prozedur : procedure TForm1.ListBox1Click(Sender: TObject); memo1.lines.loadfromfile(listbox1.items[listbox1.itemindex]); Um das Memofeld zu leeren, drückt man im Quelltexteditor beim Object ListBox1bei Lines auf die 3 Punkte hinter Tstrings. Dadurch wird der Stringlisteneditor gestartet. Dort löscht man Memo1. Dann löscht man die Eigenschaft Caption der oberen Panel. Mit dem Opendialogfilter verfährt man so wie in Übung 2 beschrieben. Die Überschrift und weitere Eigenschaften,die man haben möchte kann man jetzt noch verändern. Wenn man auf einen Eintrag in der Listbox anklickt, wird die früher schon einmal geladene Datei angezeigt.

Übungsaufgabe 4: BMP-Bildbetrachter 1. Schritt Am Anfang plaziert man einen Panel auf die linke Seite,löscht den Wert von Caption und stellt Allign auf alleft. Darauf platziert man eine DriveCombobox, eine DirectoryListBox und eine Filelistbox. Rechts platziert wird eine Image-Komponente und stellt die Eigenschat Allign auf alclient,autosize auf True und Center auch auf True. 2. Schritt Dann klickt man im Objektinspektor bei DriveComboBox1 den Eintrag DirList an und wählt DirectoryListbox1. Bei der DirectoryListBox1 wählt man für FileList den Eintrag FileListBox1aus. Bei der FileListBox1 verändert man den Eintrag bei Mask auf *.bmp (es werden dann nur Bitmaps angezeigt). Der einzige Programmcode lautet für die FileListbox nur: procedure TForm1.FileListBox1Change(Sender: TObject); if filelistbox1.filename<>''then image1.picture.loadfromfile(filelistbox1.filename); Man kann das Programm nach eigenem Geschmack weiter gestalten.

Übungsaufgabe 5 - Laufwerkseigenschaften Zuerst plaziert man 3 Labels auf dem Formular. Dann nimmt man eine Gauge,die sich bei Delphi 2 auf der Beispiele-Seite befindet und plaziert sie auf dem Formular. Anschließend verändert man die Eigenschaften der Gauge Backcolor auf clgreen und Forecolor auf clred. Um die Form der Gauge zu verändern, stellt man die Eigenschaft von Kind auf gkpie. Wenn man das getan hat,schreibt man folgende Prozedur : procedure TForm1.FormCreate(Sender: TObject); var groesse:integer; Frei:integer; belegt:integer; Mb'; groesse:=disksize(3)div 1024; frei:=diskfree(3)div 1024; belegt:=groesse-frei; gauge1.progress:=round(belegt/groesse*100); label1.caption:='laufwerkskapazität : '+inttostr(groesse div 1024)+' label2.caption:='belegter Speicherplatz : '+inttostr(belegt div 1024)+' Mb = '+inttostr(round(belegt/groesse*100))+'%'; label3.caption:='freier Speicherplatz : '+inttostr(frei div 1024)+' Mb = '+inttostr(100-round(belegt/groesse*100))+'%'; Anschließend kann man noch die Eigenschaft von Form1 verändern,um das Aussehen des Programms zu verbessern. Sollte Gauge nicht installiert sein,nimmt man eine andere Komponente,die eine graphische Darstellung ermöglicht.

Übungsaufgabe 6 - Komponenten zur Laufzeit erstellen Diese Prozedur ist ein Beispiel für das Erstellen von Komponenten zur Laufzeit. Man schreibt folgenden Quelltext für die Create-Prozedure von Form1; procedure TForm1.FormCreate(Sender: TObject); with tlabel.create(self) do height:=25; width:=75; name:='label1'; top:=30; left:=20; caption:='geben sie ein Wort ein :'; parent:=form1; with tedit.create(self)do top:=30; left:=150; name:='edit1'; parent:=form1; text:=''; with tbutton.create(self) do top:=30; left:=300; parent:=form1; caption:='ok'; Um die Komponenten zu entfernen nimmt man FREE. Bsp: Button1.Free; Button1.Destroy würde auch gehen,button1.free ist aber besser.

Übungsaufgabe 7 - Graphische Darstellung Dies ist ein Beispiel für das Erzeugen von graphischen Objekten. Hierbei wird die Eigenschaft Canvas benutzt, die bei einigen Objekten vorhanden ist. Bei TImage ist es auch möglich,das erzeugte Bild als Datei abzuspeichern oder zu kopieren. Um graphische Objekte anzuzeigen, plaziert man zuerst ein Timage auf dem Formular und stellt dessen Eigenschaft auf alclient: Um Objekte bei der Erzeugung des Fensters zu erzeugen, schreibt man folgenden Quelltext für die Prozedur Formcreate,um verschiedene Objekte zu erstellen: procedure TForm1.FormCreate(Sender: TObject); Als erstes definiert man die Varialble Ecken,die für die Ecken des Polygons da ist. var ecken:array[1..5]of Tpoint; Zuerst wird ein Fünfeck definiert: with image1.canvas do Wir nehmen als Füllfarbe einen hellen Blauton: brush.color:=claqua; Jetzt werden die Ecken des Fünfecks erzeugt: ecken[1].x:=10; ecken[1].y:=10; ecken[2].x:=10; ecken[2].y:=100; ecken[3].x:=60; ecken[3].y:=100; ecken[4].x:=200; ecken[4].y:=70; ecken[5].x:=10; ecken[5].y:=10; Und zum Schluß wird das Fünfeck gezeichnet: polygon(ecken); Als nächstes malen wir eine Linie auf das Image: with image1.canvas do Die Breite der Linie wird vergrößert: pen.width:=4; Die Farbe der Linie wird auf blau geändert: pen.color:=clblue; Der Startpunk der Linie wird definiert: moveto(20,200); Die Linie wird gezeichnet: lineto(100,100); Als nächstes wird ein Rechteck erzeugt: with image1.canvas do pen.width:=1; Das Rechteck erhält keinen Rand und wird rot gefüllt:

pen.color:=clnone; brush.color:=clred; Um das Rechteck zu erzeugen,definiert man den Punkt oben links mit den ersten beiden Zahlen und den Punkt unten rechts mit den letzten beiden Zahlen.. rectangle(110,120,130,140); Als letztes wird ein Kreis erzeugt. Kreise werden in Quadraten definiert, deren Breite und Höhe den Radius darstellen. Wenn man ein Rechteck dazu nimmt, kann man eine Elypse erzeugen. with image1.canvas do pen.color:=clblack; brush.color:=clblue; Definieren der Eckpunkte des Quadrates in dem der Kreis erzeugt wird: ellipse(200,200,250,250); Diese Objekte werden mit vorangehendem Quelltext selbstständig erzeugt: Beispiel zum Benutzen eines Canvas Wenn man auf ein Image eine Freihandlinie mittels Cursorposition zeichnen will, kann dazu folgedendes Beispiel verwenden: Man muß erst eine globale Variable deklarieren. In diesem Fall heißt sie Malen und der zugewiesene Wert zeigt an, ob man auf das Image (namens Bild) zeichnen kann. var malen:boolean; Die erste Prozedur setzt Malen auf True,das heißt, daß man zeichnen kann. Der Anfang der Freihandlinie ist die aktuelle Position. procedure Tblatt.bildMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

with bild.canvas do moveto(x,y); malen:=true; Wenn man jetzt den Cursor mit gedrückter Maustaste über das Image verschiebt, wird eine Freihandlinie erzeugt. procedure Tblatt.bildMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); with bild.canvas do if malen=true then lineto(x,y); Wenn man die Maustaste losläßt, wird Malen auf False gesetzt,so daß nicht mehr gezeichnet werden kann. procedure Tblatt.bildMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); malen:=false;