VCL Memory Tutorial. von Narses. Version 2.01 vom Zielsystem: Delphi 7 Win32VCL. Version 2.01 vom Seite 1 von 16

Größe: px
Ab Seite anzeigen:

Download "VCL Memory Tutorial. von Narses. Version 2.01 vom 31.01.2006. Zielsystem: Delphi 7 Win32VCL. Version 2.01 vom 31.01.2006 Seite 1 von 16"

Transkript

1 von Narses Version 2.01 vom Zielsystem: Delphi 7 Win32VCL Version 2.01 vom Seite 1 von 16

2 1 Einleitung 1.1 Focus In diesem Tutorial wird das Spiel Memory nachgebildet. Ziel ist es, aus einer Menge verdeckter Karten gleiche Elemente herauszusuchen. Dabei sollen nur Standard-VCL-Komponenten eingesetzt werden. Informationstechnisches Ziel ist es, eine ereignisorientierte zustandsgesteuerte Anwendung auf Basis der Visual Component Library (VCL) zu planen und zu erstellen. Nebenbei wird auf verschiedene Datentypen und Programmiertechniken hingewiesen. 1.2 Voraussetzungen Dieses Tutorial ist mit Delphi 7 Professional unter Windows 2000 erstellt worden. Da nur Standard-VCL-Komponenten verwendet werden, sollte die Kompatibilität zu anderen Delphi- Versionen relativ hoch sein. 1.3 Zielgruppe Das Tutorial richtet sich hauptsächlich an Programmieranfänger oder Delphi-Einsteiger. Es sind keine besonderen Delphi- oder Pascal-Kenntnisse erforderlich, aber sicherlich hilfreich. Ein wenig Übung im Umgang mit der Delphi-IDE ist nützlich, aber nicht notwendig. Die Benutzungsweise des Objektinspektors wird als bekannt vorausgesetzt. Für Programmieranfänger ganz ohne Vorkenntnisse oder Programmiererfahrung ist das Tutorial nur bedingt geeignet, da nicht explizit auf die verwendeten Datentypen und objektorientierte Programmierung eingegangen wird, um den Rahmen nicht zu sprengen. Im Interesse eines leichten Arbeitsflusses und hoher Selbstmotivation aus der Aufgabenstellung selbst damit soll der Arbeitsweise der aktuellen Schülergeneration Rechnung getragen werden ist der Aufbau des Tutorials eher problemorientiert als informationstechnisch oder wissenschaftlich zu nennen. 1.4 Informationstechnische Inhalte Überblick TLabel, TEdit, TButton, TBitBtn, TImage, TImageList, Offscreen-Bitmap, lokale Prozedur, Random(N), Arbeiten mit Canvas, Berechnung von Zeichen mit Char(), gemeinsame Ereignisprozedur, Typecasts in beiden Syntaxformen, Verallgemeinerung durch Konstantendeklaration, Records, Objekt-Referenzen, (statisches) Array, FindComponent(), Aufruf von Ereignisprozeduren aus dem Programmcode heraus, Aufzählungstypen (Deklaration und Benutzung), Fallunterscheidung mit case of, (einfache) Zustandsmaschine, Deklaration von Klasseneigenschaften und zugehöriger Methoden 1.5 Copyright und Haftung Der Autor kann keinerlei Gewähr für die Richtigkeit der angegebenen Informationen übernehmen, die Benutzung geschieht auf eigene Gefahr. Der Autor dieses Dokumentes behält sich die Verwertungsrechte vor, Kontakt kann gegebenenfalls über das Delphi-Forum aufgenommen werden (per PN an User Narses ): Dieses Dokument darf und soll kostenlos weitergegeben werden, die Verbreitung über elektronische Medien ist ausdrücklich erlaubt, solange dieses Dokument und die zugehörigen Projektdateien nicht verändert werden. Die Weitergabe darf nur unentgeltlich erfolgen, auch für die Bereitstellung dürfen keine Kosten anfallen. Version 2.01 vom Seite 2 von 16

3 2 Vorbereitung 2.1 Projektordner anlegen Wir erstellen einen neuen Ordner, zum Beispiel Eigene Dateien\Memory, in dem wir das neue Projekt unterbringen wollen. Dann starten wir Delphi und legen ein neues Projekt an, wenn es beim IDE-Start nicht bereits automatisch erzeugt wurde: Datei Neu Anwendung. Mit F9 starten wir das leere Projekt, um die entsprechenden Dateien und deren Namen festzulegen. Unit1.pas stellt praktisch das Hauptformular der neuen Anwendung dar speichern wir im Projektverzeichnis Eigene Dateien\Memory, der Dateiname kann beibehalten werden. Projekt1.dpr benennen wir aber um in Memory.dpr, da hiermit auch schon der Dateiname des Zielprogramms (.EXE-Datei) festgelegt wird. Das Programm startet und es wird ein leeres Formular angezeigt, das wir sofort wieder schließen. 2.2 Die Benutzeroberfläche Die GUI steht für Graphical User Interface ( Benutzeroberfläche) sollte immer besonders sorgfältig geplant werden. Ein Programm kann noch so genial erdacht sein, wenn die Benutzeroberfläche schlecht ist, wird man es nicht gerne benutzen wollen. Im Objektinspektor setzen wir die Eigenschaft Caption von Form1 auf Memory, damit haben wir den Fenstertitel eingestellt. Die Eigenschaft Position stellen wir auf podesktopcenter ein, so wird das Fenster immer in der Bildschirmmitte geöffnet. Die Eigenschaft BorderStyle stellen wir noch auf bssingle um, damit man die Größe des Formulars zur Laufzeit nicht ändern kann. In den BorderIcons setzen wir bimaximize auf False, damit man das Fenster auch nicht maximieren kann. Jetzt brauchen wir noch die Bedienelemente für das Spiel. Für die Kartenvorderseiten nehmen wir Images ( Bilder). Dazu wählen wir aus dem Register Zusätzlich die Komponente Image aus und platzieren diese durch einen Klick links oben auf unserem Formular: Wir wollen mit 9 Pärchen spielen, brauchen also noch weitere 17 Images, die wir in 3 Reihen zu 6 Spalten anordnen. Um jetzt nicht in wildes Mausgehampel zu verfallen, drücken wir direkt nach dem die erste Image-Komponenten auf dem Formular platziert ist, Strg+C. Dann Strg+V, so wird eine Kopie des Images eingefügt, die wir nur noch mit der Maus an die richtige Stelle verschieben müssen. Wichtig! Die Images der Reihe nach von links nach rechts und oben nach unten anlegen. Jedem neuen Image wird ein Name zugewiesen, der mit Image nt und durch eine laufende Nummer ergänzt wird. Diese Nummernfolge darf nicht unterbrochen sein (Erläuterung später)! Version 2.01 vom Seite 3 von 16

4 Wir ergänzen noch drei BitButtons (das erste Symbol im Register Zusätzlich, der OK-Button mit dem grünen Haken) und aus dem Register Standard zwei Labels und zwei Editfelder usw. Anmerkung: Die Zahlen in der Abbildung sind nur zur Orientierung angegeben, natürlich sind in der IDE keine Zahlen in den Images zu sehen. Tipp: Wenn ein Bedienelement ausgewählt ist, kann man dieses mit Strg+Cursortasten pixelweise verschieben. Die Kartenvorderseiten sollen aber nicht immer zu sehen sein, deshalb brauchen wir noch die Rückseiten. Hier wollen wir einen kleinen Trick machen: Wir verwenden einfach Buttons, die wir vor den Images platzieren und auf die gleiche Größe bringen. Wenn eine Karte aufgedeckt wird, verstecken wir einfach den Button, dann wird das Bild darunter automatisch angezeigt. Deshalb wählen wir aus dem Register Standard den normalen Button aus, klicken diesen auf unser Formular und vergrößern ihn soweit, dass das Image verdeckt ist: Damit die Kartenrückseiten auch alle gleich aussehen, setzen wir die Eigenschaft Caption des Buttons auf? und stellen den Zeichensatz um, so dass der Button etwas hübscher aussieht. Es bietet sich an, den Zeichensatz Arial und die Schriftgröße 72 zu verwenden: Version 2.01 vom Seite 4 von 16

5 Jetzt kopieren wir mit Strg+C den veränderten Button und fügen ihm mit Strg+V ein, platzieren die Kopie entsprechend und so weiter, wie bei den Images. Dabei achten wir darauf, dass wir die Reihenfolge wie oben korrekt einhalten, so dass Image1 auch von Button1 verdeckt wird und so fort. So sollte das Formular dann später aussehen: Es fehlen nur noch aussagekräftige Namen und Bezeichnungen der drei BitButtons und der Labels mit den Editfeldern. Wir ändern die Eigenschaft Name des ersten BitButtons in BtnStart und als Caption stellen wir &Neues Spiel ein. Dem zweiten Button geben wir den Namen BtnExit und den Titel &Beenden. Der dritte Button soll BtnClear heißen und den Titel &Zurücksetzen haben. Das kaufmännische Und am Anfang der Titel sorgt dafür, dass man mit Alt+Buchstabe, also z.b. Alt+N, dieses Bedienelement auslösen kann, ohne die Maus benutzen zu müssen. Um den Buchstaben als Shortcut ( Abkürzung) zu kennzeichnen, wird dieser dann unterstrichen dargestellt. Wir ändern die Eigenschaft Caption von Label1 in Züge: und von Label2 in Punkte:. Den Eingabefeldern geben wir den Namen EMoves und EPoints. Jetzt klicken wir das erste Editfeld an und klicken dann mit gedrückter Shift-Taste das zweite Editfeld an, woraufhin beide Felder markiert sind. Wir stellen nun die Eigenschaft ReadOnly auf True und Color auf clbtnface, um anzudeuten, dass die Eingabefelder nicht änderbar sind. Wie man sieht, werden beide Felder auf einmal umgestellt, da beide markiert sind. Es fehlen nur noch die Symbole der BitButtons: Dazu wählen wir den ersten BitButton aus und klicken auf die Eigenschaft Glyph, anschließend auf das 3-Punkte-Symbol im Eingabefeld. Im darauf erscheinenden Bild-Editor wählen wir Laden, öffnen die Datei JinJang.bmp aus dem Tutorial-Verzeichnis und verlassen den Bild-Editor mit OK. Den anderen Buttons weisen wir analog die anderen beiden Symboldateien aus dem Tutorial-Verzeichnis zu. Im Menü Projekt wählen wir Optionen und dann die Registerkarte Anwendung. Hier geben wir für Titel Memory ein, damit zum Beispiel Nachrichtendialoge auch einen aussagekräftigen Titel bekommen. Dann klicken wir auf den Button Symbol laden... und wählen die Datei Memory.ico aus, damit das Programm nicht mehr mit dem Standard-Delphi-Symbol angezeigt wird. Version 2.01 vom Seite 5 von 16

6 Damit ist das Formular fertig und sollte etwa so aussehen: 2.3 Die Kartenvorderseiten Um die Bilder für die Kartenvorderseiten zu verwalten, benutzen wir eine ImageList ( Bilderliste). Wir wählen also aus dem Register Win32 die ImageList-Komponente und platzieren sie irgendwo auf dem Formular. Wo genau spielt keine Rolle, da es sich um eine sogenannte nonvisible ( unsichtbare) Komponente handelt, die zur Laufzeit gar nicht sichtbar ist. Der Eigenschaft Name geben wir den Wert CardImage. Die Eigenschaften Width und Height stellen wir auf 105 ein, was der Größe der Image-Komponenten und der Buttons entspricht. Die Eigenschaft Masked stellen wir auf False, da die Bilder formatfüllend sein sollen. Mit einem Doppelklick auf dem Symbol der ImageList auf dem Formular kann ein Editor geöffnet werden, mithilfe dessen bereits vorhandene Bilder in die Liste eingefügt werden können. Der Editor ist weitgehend selbsterklärend. Wenn gewünscht und vorhanden, können jetzt Bilder hinzugefügt werden, die später als Kartenvorderseite genutzt werden sollen. Wir wollen aber für den Fall, dass keine Bilder verfügbar sind, ebenfalls gerüstet sein. Deshalb erzeugen wir bei Programmstart einfach selbst welche, bis mindestens 9 Bilder in der ImageList verfügbar sind. Die selbsterstellten Bilder sollen dabei einfach aus einem Rechteck, dass mit einer zufälligen Farbe gefüllt ist, bestehen und darauf die Buchstaben von A bis I tragen. Da die Bilder nur beim Programmstart erstellt werden müssen, im Spiel werden dann immer die gleichen Bilder benutzt, schreiben wir den Code dafür in das Ereignis FormCreate() des Hauptformulars. Dazu machen wir einen Doppelklick auf dem Formularhintergrund, worauf automatisch eine entsprechende Ereignisprozedur erstellt wird. Diese füllen wir mit dem folgenden Code: Version 2.01 vom Seite 6 von 16

7 procedure TForm1.FormCreate(Sender: TObject); procedure CreateCard; // Bildsymbol in zufälliger Farbe erzeugen var // verwendete Variablen deklarieren OSB: TBitmap; // OffScreenBitmap, Typ: TBitmap dx,dy: Integer; // für Breite und Höhe eines Buchstabens Symbol: Char; // zum Bestimmen des Buchstabens nötig OSB := TBitmap.Create; // Verwaltungsstruktur für das Bitmap anlegen OSB.PixelFormat := pf24bit; // truecolor oder 24bit Farbtiefe OSB.Width := CardImage.Width; // OSB-Größe der Bildergröße OSB.Height := CardImage.Height; // in der ImageList anpassen with OSB.Canvas do Brush.Color := RGB(Random(256), // zufällige Farbe bestimmen Random(256), // und per RGB()-Funktion Random(256)); // richtig formatieren FillRect(Rect(0,0,CardImage.Width,CardImage.Height)); // Hintergrund Font.Name := 'Arial'; Font.Size := 72; Font.Style := [fsbold]; Font.Color := Brush.Color xor $00FFFFFF; // Farbe umkehren Symbol := Char(65 +CardImage.Count); // Buchstabe bestimmen, 65=A dx := OSB.Canvas.TextWidth(Symbol); // Breite des Zeichens dy := OSB.Canvas.TextHeight(Symbol); // und Höhe bestimmen, TextOut((CardImage.Width -dx) div 2, // dann den Buchstaben (CardImage.Height -dy) div 2, // mittig im Bitmap Symbol); // zeichnen CardImage.Add(OSB,NIL); // Bild in die ImageList aufnehmen OSB.Free; // und OffScreen-Bitmap wieder freigeben Randomize; // wirklich zufällige Zahlen while (CardImage.Count < 9) do // weniger als 9 Bilder? dann -> CreateCard; // ein weiteres Bild erstellen Die eigentliche Ereignisprozedur besteht dabei nur aus drei Zeilen Code. Der Befehl Randomize sorgt dafür, dass der Zufallszahlengenerator von Delphi auch wirklich zufällige Werte erzeugt. Wenn dieser Befehl weggelassen wird, werden bei jedem Programmstart immer die gleichen Zufallszahlen ausgegeben. Wir wollen aber immer andere Farben haben. Die while- Schleife fügt dann solange Bilder in die ImageList CardImage ein, bis diese mindestens 9 Bilder enthält. In der lokalen Prozedur CreateCard() wird ein sogenanntes OffScreen-Bitmap ( nicht sichtbares Bild) angelegt, dessen Farbtiefe auf truecolor ( Echtfarben; 24bit) und die Größe auf die Bildgröße der Bilder in der ImageList eingestellt. Dann wird eine zufällige Farbe für den Hintergrund eingestellt und das Bild damit gefüllt. Darauf wird mittig der passende Buchstabe ausgegeben, wobei die Farbe exakt umgekehrt wird. Das fertige Bild wird in die ImageList eingefügt und das OffScreen-Bitmap wieder freigegeben. Dieser Code sorgt dafür, dass auf jeden Fall immer 9 Bilder in der ImageList sind, egal ob zur Entwurfszeit Bilder in die Bilderliste eingefügt wurden oder nicht. Leider sieht man zum jetzigen Zeitpunkt noch nichts von den erzeugen Bildern, das holen wir aber gleich noch nach. Damit wären praktisch alle Vorarbeiten abgeschlossen. Das Programm ist zwar lauffähig und kann problemlos mit z.b. F9 gestartet werden, aber da noch kein Code für das Spielverhalten vorhanden ist, passiert weiter nichts. Womit wir bei der nächsten großen Etappe angekommen wären. Version 2.01 vom Seite 7 von 16

8 3 Programmverhalten Bevor wir an die Programmierung gehen, sind noch einige Überlegungen anzustellen. Am Anfang eines Projektes sollte immer eine ausgedehnte Planungsphase liegen, damit man nicht erst beim Codieren ( Programmieren) auf die logischen Probleme stößt, sondern diese bereits vorher gelöst hat. Es ist schlechter Arbeitsstil, zuerst mal mit dem Codieren anzufangen und dabei dann auftretende Probleme zu lösen. Meistens lässt sich diese Art zu Programmieren direkt am erstellten Code ( Quelltext) ablesen, da es typischerweise zu Flickwerk kommt. Auf diese Weise erstellter Code ist auch später nur sehr schlecht zu warten bzw. anpassbar, oder kurz und treffend: unprofessionell! 3.1 Spielregeln Üblicherweise besteht das Spiel Memory aus einer geraden Anzahl Karten, bei der jeweils ein Pärchen die gleiche Vorderseite hat. Die Rückseiten sind alle gleich. Die Karten werden gemischt und verdeckt ausgelegt. Ein Zug besteht daraus, zwei beliebige Karten aufzudecken. Sind die Kartenvorderseiten gleich, bleiben die Karten offen, das Pärchen ist identifiziert. Sind die Kartenvorderseiten nicht gleich, werden sie wieder verdeckt. Es dürfen nie mehr als zwei ungleiche Karten aufgedeckt sein. Das Spiel endet, wenn alle Kartenpärchen gefunden sind. Auf unsere Benutzeroberfläche bezogen bedeutet dass folgendes: Wenn einer der Karten-Buttons angeklickt wird, soll dieser versteckt werden, so dass die darunter liegende Karte sichtbar wird. Wir simulieren damit das Umdrehen der Karte. 3.2 Gemeinsame Ereignisprozedur Es ist sicherlich kein Problem, für jeden Karten-Button eine eigene Ereignisprozedur zu schreiben. Das würde aber in unserem Fall in 18 praktisch identischen Prozeduren enden... Da das nicht gerade effizient zu nennen ist, wollen wir einen anderen Ansatz verfolgen. Wir weisen jedem Karten-Button die selbe Ereignisprozedur zu. Dazu markieren wir einfach alle Karten- Buttons (Ersten anklicken und die Anderen mit gedrückter Shift-Taste), wählen im Objekt- Inspektor das Register Ereignisse und machen einen Doppelklick auf das OnClick()- Ereignis. Es wird eine neue Ereignisprozedur erstellt und allen Buttons zugewiesen, die wir mit folgendem Code füllen: procedure TForm1.Button1Click(Sender: TObject); (Sender as TButton).Visible := FALSE; Praktischerweise wird die Ereignisprozedur mit dem Auslöser als Parameter ( Sender: TObject) aufgerufen. Da der Aufruf allgemein gehalten ist (praktisch alle Ereignisprozeduren funktionieren auf diese Weise), wissen wir nur, dass Sender eine Komponente ist, aber nicht welcher Typ. Deshalb müssen wir dem Compiler durch (Sender as TButton) mitteilen, dass es sich bei Sender um einen Button handelt. Nach der schließenden Klammer können wir einfach auf gewohnte Weise die Eigenschaft Visible auf False setzen, so dass der Button verschwindet. Wir testen das Programm mit F9 und können jetzt die Buttons wegklicken. Allerdings befindet sich unter den Buttons noch kein Kartenbild und die Buttons lassen sich auch nur verstecken und tauchen nicht wieder auf. Wir sind also noch lange nicht fertig. 3.3 Das Spielfeld Beim letzten Test des Programms ist klar geworden, dass die Buttons und die Images alleine noch nicht ausreichen. Wir könnten zwar ein Bild direkt in den Images ablegen (einfach in der IDE eine Grafik einfügen), aber dann würde dieses Bild ja immer an dieser Stelle liegen, was dem Sinn des Spieles nicht gerecht wird. Bei jedem neuen Spiel sollen die Kartenpaare neu verteilt werden, sonst muss man sich ja irgendwann gar nichts mehr merken! Version 2.01 vom Seite 8 von 16

9 Wir benötigen also ein Spielfeld. Was ist darunter zu verstehen, Spielfeld? Wir haben im Kapitel Vorbereitungen doch schon das Spielfeld angelegt. Das ist genau genommen nicht richtig, wir haben lediglich die Ansicht auf das Spielfeld angelegt. Die 18 Buttons und darrunterliegenden Images müssen nämlich auf eine bestimmte Weise logisch miteinander verbunden sein bzw. werden, was man aber nicht direkt sehen kann: Je ein Button gehört zu dem darunter liegenden Image. Das Image enthält zwar (später) ein bestimmtes Kartenvorderseitenbild, aber wir benötigen die Information welches genau, um zwei aufgedeckte Karten vergleichen zu können. Diese Zusammenhänge bringen uns auf einen bestimmten Gedanken: das Spiel läuft praktisch in zwei Ebenen ab! Der Computer benötigt viel mehr Informationen und zum Teil auch solche, die dem Spieler unbekannt sein müssen, um das Spiel verwalten zu können. Die Benutzeroberfläche ist also nur eine Visualisierung bestimmter Teile des Spielzustandes im Speicher des Computers (der unsichtbar ist). Das Spiel selbst befindet sich in einer Datenstruktur im Speicher des Computers, die wir uns nun näher ansehen wollen. Die Benutzeroberfläche benötigen wir nur, um den aktuellen Stand anzuzeigen und Aktionen des Benutzers entgegenzunehmen. Diese Feststellungen wollen wir jetzt im Programm abbilden. Dazu fügen wir am Anfang der Unit1 folgenden Code ein (gelb markiert): uses const MIN = 1; // kleinste Spielfeldposition MAX = 18; // größte Spielfeldposition BTN_NAME = 'Button'; // Namenspräfix der Buttons IMG_NAME = 'Image'; // Namenspräfix der Images type TPosition = record CardID: Integer; // Kartennummer (ist auch der ImageIndex) Button: TButton; // zugehöriger Button Image: TImage; // zugehöriges Image TPlayGround = Array[MIN..MAX] of TPosition; TForm1 = class(tform) public Cards: TPlayGround; // unser Spielfeld (im Speicher!) Wir haben jetzt eine Datenstruktur für das Spielfeld definiert: Cards[MIN..MAX]. Jedes Feldelement beschreibt eine Kartenposition auf dem Formular. Allerdings ist jetzt nur die Struktur festgelegt und Speicherplatz dafür reserviert, die entsprechenden Werte sind aber noch nicht eingetragen worden. Die Button- und Image-Komponentenreferenzen müssen nur ein einziges Mal festgelegt werden, deshalb erweitern wir die Ereignisprozedur FormCreate() des Hauptformulars: procedure TForm1.FormCreate(Sender: TObject); var i: Integer; procedure CreateCard; // Bildsymbol in zufälliger Farbe erzeugen Randomize; // wirklich zufällige Zahlen while (CardImage.Count < 9) do // weniger als 9 Bilder? dann -> CreateCard; // ein weiteres Bild erstellen // Komponentenreferenzen ermitteln und eintragen for i := MIN to MAX do Cards[i].Button := TButton(Form1.FindComponent(BTN_NAME+IntToStr(i))); Cards[i].Image := TImage(Form1.FindComponent(IMG_NAME+IntToStr(i))); Cards[i].Button.Tag := i; // Trick zum späteren identifizieren Cards[i].CardID := (i -MIN) div 2; // Karten-ID vorbelegen Version 2.01 vom Seite 9 von 16

10 Mit Form1.FindComponent('Name') lässt sich eine Komponente über ihren Namen auffinden. Das ist der Grund, wieso wir beim Anlegen der Buttons und der Images so sehr darauf geachtet haben, dass die Namen der Komponenten durchgängig sind und die Buttons zu den Images passen! Da wir den Namen der Button-Komponenten durch den konstanten Teil BTN_NAME (im const-abschnitt am Anfang des Codes deklariert) und den Wert der Laufvariablen bilden, ergeben sich die Namen Button1 bis Button18. Deshalb müssen diese Komponenten natürlich auch existieren. Die als Trick im Kommentar gekennzeichnete Zuweisung der.tag-eigenschaft der Buttons hat folgenden Sinn: In der Ereignisprozedur für die Buttons bekommen wir eine Referenz auf den auslösenden Button geliefert. Mit (Sender as TButton).Tag können wir dann ganz einfach den Index in das Feld Cards[] herausfinden, ohne die passende Button-Referenz umständlich in einer Schleife suchen zu müssen. Wir verwenden Cards[].CardID dazu, den Index in die Bilderliste zu speichern. Auf diese Weise merken wir uns, welche Kartenvorderseite dieser Position zugeordnet ist. Der Ausdruck (i MIN) div 2 liefert jeweils für zwei aufeinanderfolgende i den gleichen Wert, angefangen bei 0, also (0,0,1,1,2,2,... ). Wir erzeugen damit praktisch alle Kartenpärchen, zwar in sortierter Folge, aber so haben wir immerhin alle möglichen Karten im Spiel. Später müssen wir uns nur noch darum kümmern, diese zu mischen. 3.4 Spielstart vorbereiten Bei jedem Spielstart müssen wir die Karten neu mischen. Womit wir auch schon bei der Ereignisprozedur für den Button Neues Spiel wären. Mit einem Doppelklick auf den Button legen wir eine entsprechende Prozedur an und fügen folgenden Code ein: procedure TForm1.BtnStartClick(Sender: TObject); var i, j, tmp: Integer; // Karten mischen for i := MIN to MAX do j := Random(MAX -MIN +1) +MIN; tmp := Cards[i].CardID; Cards[i].CardID := Cards[j].CardID; Cards[j].CardID := tmp; // Karten "umdrehen" und Vorderseiten passend raussuchen for i := MIN to MAX do Cards[i].Button.Visible := TRUE; // Button anzeigen CardImage.GetBitmap(Cards[i].CardID,Cards[i].Image.Picture.Bitmap); Da wir beim Initialisieren bereits alle Karten ins Spiel gebracht haben, müssen wir jetzt nur noch die Karten virtuell mischen. Dazu bestimmen wir für jede Karte eine neue, zufällige Spielfeldposition (in der Variablen j), also eine Zufallszahl im Bereich von MIN..MAX (die Grenzen des Spielfeldes). Leider liefert die Funktion Random(N) nur Zufallszahlen im Bereich 0..(N-1). Deshalb müssen wir mit (MAX -MIN +1) den Zahlenbereich ermitteln und die gelieferte Zufallszahl mit +MIN in den gewünschten Bereich verschieben. Die folgenden drei Zeilen stellen einen Dreieckstausch dar, denn die CardIDs an Position i und j sollen ja die Plätze tauschen. Im zweiten Teil werden die Buttons angezeigt und damit die Karten wieder verdeckt, sowie die zu den Karten-IDs gehörigen Bilder aus der ImageList an die Image-Komponenten unter den Buttons zugewiesen. Damit sind wir für einen weiteren Test des Programms bereit und starten mit F9. Nach einem Klick auf einen der Karten-Buttons wird schnell klar, dass natürlich zuerst ein Klick auf den Button Neues Spiel nötig ist, um die neue Funktionalität testen zu können! Das bringt uns auf einen weiteren Gedanken: Eigentlich ist jeder Programmstart auch ein Spielstart, deshalb könnte Version 2.01 vom Seite 10 von 16

11 die Funktion des Neues Spiel-Buttons auch gleich bei jedem Start des Programms ausgeführt werden. Wir ergänzen also im Code des FormCreate()-Ereignisses des Formulars: procedure TForm1.FormCreate(Sender: TObject); // Ende der for-schleife // jeder Programmstart ist auch ein Spielstart BtnStartClick(Self); Damit wird bei jedem Programmstart praktisch auch gleich der Button virtuell angeklickt, was wir mit F9 und ein paar Klicks schnell überprüft haben. ;-) 3.5 Spielzustände Wenn ein Karten-Button angeklickt wird, startet die entsprechende Ereignisprozedur, Button verstecken, Bild wird sichtbar, fertig. Wir merken schon, da gibt es ein Problem: Wir brauchen die Information, wie viele Karten bereits aufgedeckt sind und natürlich auch welche. Spätestens beim Anklicken der 3. Karte müssen die zwei bereits offenen Karten wieder verdeckt werden ( Button wieder sichtbar machen), wenn die Bilder nicht gleich sind! Die Lösung ist ein globaler Spielzustand, der die aktuelle Spielsituation wiederspiegelt. Aus den Spielregeln lassen sich folgende Zustände ableiten: Spiel läuft, keine Karte aufgedeckt Spiel läuft, eine Karte aufgedeckt Spiel läuft, zwei Karten aufgedeckt Spiel beendet, alle Karten aufgedeckt Der letzte Zustand, Spiel beendet, ist für uns allerdings bedeutungslos, da zu diesem Zeitpunkt gar keine Karten-Buttons mehr anklickbar sind und deshalb auch nichts mehr am Zustand des Spiels verändert werden kann. Auch diese Erkenntnisse wollen wir wieder im Code abbilden. Dazu ergänzen wir die type- Deklaration wie folgt um einen Aufzählungstyp: TPlayGround = Array[MIN..MAX] of TPosition; TGameState = ( gsopencards0, // keine Karte offen gsopencards1, // eine Karte offen gsopencards2); // zwei Karten offen TForm1 = class(tform) public Cards: TPlayGround; // unser Spielfeld (im Speicher!) GameState: TGameState; // Spielzustand Move1, Move2: Integer; // vorangegangene Züge Natürlich muss der Spielzustand am Anfang auch gesetzt werden, deshalb ergänzen wir: procedure TForm1.BtnStartClick(Sender: TObject); CardImage.GetBitmap(Cards[i].CardID,Cards[i].Image.Picture.Bitmap); GameState := gsopencards0; // kein Feld offen Den Spielzustand speichern zu können ist ja ganz nett, aber es nutzt uns noch nichts. Wir müssen jetzt an der Stelle ansetzen, wo sich dieser Zustand ändern kann bzw. muss, nämlich in der Ereignisprozedur der Karten-Buttons: procedure TForm1.Button1Click(Sender: TObject); (Sender as TButton).Visible := FALSE; // Button wegnehmen case GameState of gsopencards0: // kein Feld in der "Warteschlange" Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken Version 2.01 vom Seite 11 von 16

12 GameState := gsopencards1; // jetzt ist ein Feld offen gsopencards1: // ein Feld ist schon offen Move2 := (Sender as TButton).Tag; // 2. Zug vermerken // Pärchen gefunden? if (Cards[Move1].CardID = Cards[Move2].CardID) then GameState := gsopencards0 // ja, dann Karten offen lassen else GameState := gsopencards2; // nein, im nächsten Zug verdecken gsopencards2: // zwei (ungleiche) Felder vom Zug vorher noch offen Cards[Move1].Button.Visible := TRUE; // alte Felder verdecken Cards[Move2].Button.Visible := TRUE; Move1 := (Sender as TButton).Tag; // den neuen Zug vermerken GameState := gsopencards1; Die Grundfunktion, einen angeklickten Button zu verstecken, bleibt gleich. Neu ist jetzt, einen Zusammenhang zwischen den einzelnen Klicks herzustellen. Dazu benötigen wir zum einen die Variable GameState, um auf die Anzahl und Gleichheit der aufgedeckten Karten zu reagieren, und zum anderen die Variablen Move1 und Move2, um die Ansicht wieder in Ordnung zu bringen, wenn die aufgedeckten Karten nicht gleich waren. Wir wollen die neue Funktionalität mit einem Testlauf ( F9) sofort ausprobieren. Wie man sieht, sind die Spielregeln jetzt korrekt umgesetzt. 3.6 Punkte und Züge zählen Es fehlt nur noch eine interessante Funktion: Das Zählen (und Anzeigen!) der Punkte für gefundene Kartenpaare und nicht erfolgreiche Spielzüge (zwei ungleiche Karten). Dafür bietet sich der objektorientierte Ansatz an: Wir deklarieren interne Punktezähler als Eigenschaften der Formularklasse und übernehmen Änderungen der Werte in einer eigenen Methode, die dann auch gleich die Anzeige steuert. Wir ergänzen manuell in der type-deklaration: private FMoves, FPoints: Integer; // die internen Speicher für die Zähler procedure SetMoves(const Value: Integer); procedure SetPoints(const Value: Integer); public Cards: TPlayGround; // unser Spielfeld (im Speicher!) GameState: TGameState; // Spielzustand Move1, Move2: Integer; // vorangegangene Züge property Moves: Integer read FMoves write SetMoves default 0; property Points: Integer read FPoints write SetPoints default 0; Mit dieser Deklaration führen wir die Eigenschaften Moves und Points ein, die direkt gelesen werden können, aber über eine zugehörige Methode beschrieben werden. Die entsprechenden Methoden müssen wir natürlich noch erstellen (falls Strg+Shift+C nicht automatisch die entsprechenden Prozedurrümpfe erstellt [ab den Pro-Versionen der Delphi-IDE], muss man diese manuell eintippen): procedure TForm1.SetMoves(const Value: Integer); FMoves := Value; // Wert übernehmen EMoves.Text := IntToStr(Value); // und ausgeben procedure TForm1.SetPoints(const Value: Integer); FPoints := Value; // Wert übernehmen EPoints.Text := IntToStr(Value); // und ausgeben Version 2.01 vom Seite 12 von 16

13 Auf diese Weise sorgen wir dafür, dass Zuweisungen an die internen Punktezähler auch gleich zur Ausgabe im Formular gebracht werden. Damit haben wir jetzt die Möglichkeit, den Button zum Löschen der Punktezähler mit Leben zu füllen. Nach einem Doppelklick auf den Button Zurücksetzen wird wie gewohnt eine entsprechende Ereignisprozedur angelegt, in die wir folgenden Code einfügen: procedure TForm1.BtnClearClick(Sender: TObject); Moves := 0; Points := 0; Wir starten das Programm mit F9 und testen direkt die neue Funktion. Es fällt natürlich sofort auf, dass genau wie beim Spielstart diese Funktion eigentlich direkt nach dem Programmstart aufgerufen werden müsste, denn sonst sind ja noch die Texte aus der Entwurfsumgebung in den Eingabefeldern. Wir fügen also im Ereignis FormCreate() folgenden Code ein: BtnStartClick(Self); // deshalb auch die Zähler löschen BtnClearClick(Self); Wir müssen jetzt nur noch dafür sorgen, dass die entsprechenden Punkte auch gezählt werden. Deshalb ergänzen wir im Karten-Button-Ereignishandler: gsopencards1: // ein Feld ist schon offen Move2 := (Sender as TButton).Tag; // 2. Zug vermerken // Pärchen gefunden? if (Cards[Move1].CardID = Cards[Move2].CardID) then GameState := gsopencards0; Points := Points +1; // 1 Gummipunkt mehr ;) end else GameState := gsopencards2; Moves := Moves +1; // sonst ein Zug mehr Damit ist das Spiel praktisch fertig. Wir starten das Programm mit F9 und testen erst mal ausgiebig, ob denn auch alles funktioniert! ;-) 3.7 Programm beenden Zum Abschluss fehlt nur noch die Funktion des Buttons Beenden. Mit einem Doppelklick erstellen wir wie gewohnt den Ereignishandler-Rumpf und fügen ein: procedure TForm1.BtnExitClick(Sender: TObject); Application.Terminate; Dieser Befehl sorgt dafür, dass die Anwendung beendet wird. Damit ist das Programm komplett. Version 2.01 vom Seite 13 von 16

14 4 Zusammenfassung 4.1 Schlusswort Ich hoffe, dass dieses Tutorial einen recht brauchbaren Einblick in die Entwicklung einer Anwendung gegeben hat. Normalerweise würde zwar deutlich mehr theoretische Planung in der Vorbereitungsphase anfallen, aber das macht den Stoff zu trocken für Anfänger. 4.2 Vollständiger Quelltext Achtung! Der folgende Quelltext kann nicht einfach in ein leeres Delphi-Projekt eingefügt werden, da sonst die entsprechenden Ereignisprozeduren in den Objekten nicht zugewiesen sind! Bitte dem Ablauf wie im Text beschrieben folgen. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ImgList; const MIN = 1; // kleinste Spielfeldposition MAX = 18; // größte Spielfeldposition BTN_NAME = 'Button'; // Namenspräfix der Buttons IMG_NAME = 'Image'; // Namenspräfix der Images type TPosition = record CardID: Integer; // Kartennummer zur Identifikation Button: TButton; // zugehöriger Button Image: TImage; // zugehöriges Image TPlayGround = Array[MIN..MAX] of TPosition; TGameState = ( gsopencards0, // keine Karte offen gsopencards1, // eine Karte offen gsopencards2); // zwei Karten offen TForm1 = class(tform) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Image9: TImage; Image10: TImage; Image11: TImage; Image12: TImage; Image13: TImage; Image14: TImage; Image15: TImage; Image16: TImage; Image17: TImage; Image18: TImage; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; Button18: TButton; BtnStart: TBitBtn; Version 2.01 vom Seite 14 von 16

15 BtnExit: TBitBtn; BtnClear: TBitBtn; Label1: TLabel; EMoves: TEdit; Label2: TLabel; EPoints: TEdit; CardImage: TImageList; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure BtnStartClick(Sender: TObject); procedure BtnClearClick(Sender: TObject); procedure BtnExitClick(Sender: TObject); private FMoves, FPoints: Integer; // die internen Speicher für die Zähler procedure SetMoves(const Value: Integer); procedure SetPoints(const Value: Integer); public Cards: TPlayGround; // unser Spielfeld (im Speicher!) GameState: TGameState; // Spielzustand Move1, Move2: Integer; // vorangegangene Züge property Moves: Integer read FMoves write SetMoves default 0; property Points: Integer read FPoints write SetPoints default 0; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i: Integer; procedure CreateCard; // Bildsymbol in zufälliger Farbe erzeugen var OSB: TBitmap; dx,dy: Integer; Symbol: Char; OSB := TBitmap.Create; // OffScreen-Bitmap anlegen OSB.PixelFormat := pf24bit; // truecolor oder 24bit OSB.Width := CardImage.Width; // Größe der Bildgröße in OSB.Height := CardImage.Height; // der ImageList anpassen with OSB.Canvas do Brush.Color := RGB(Random(256), // zufällige Farbe Random(256), // bestimmen und Random(256)); // richtig formatieren FillRect(Rect(0,0,CardImage.Width,CardImage.Height)); // Hintergrund füllen Font.Name := 'Arial'; Font.Size := 72; Font.Style := [fsbold]; Font.Color := Brush.Color xor $00FFFFFF; // Farbe umkehren Symbol := Char(65 +CardImage.Count); // Buchstabe bestimmen dx := OSB.Canvas.TextWidth(Symbol); // Breite des Zeichens dy := OSB.Canvas.TextHeight(Symbol); // und Höhe bestimmen TextOut((CardImage.Width -dx) div 2, // und dann (CardImage.Height -dy) div 2, // mittig ausgeben Symbol); CardImage.Add(OSB,NIL); // Bild in die ImageList aufnehmen OSB.Free; // und OffScreen-Bitmap wieder freigeben Randomize; // wirklich zufällige Zahlen while (CardImage.Count < 9) do // weniger als 9 Bilder? dann -> CreateCard; // ein weiteres Bild erstellen // Komponentenreferenzen ermitteln und eintragen for i := MIN to MAX do Cards[i].Button := TButton(Form1.FindComponent(BTN_NAME+IntToStr(i))); Cards[i].Image := TImage(Form1.FindComponent(IMG_NAME+IntToStr(i))); Cards[i].Button.Tag := i; // Trick zum späteren identifizieren Cards[i].CardID := (i -MIN) div 2; // Karten-ID vorbelegen // jeder Programmstart ist auch ein Spielstart BtnStartClick(Self); // deshalb auch die Zähler löschen BtnClearClick(Self); procedure TForm1.BtnStartClick(Sender: TObject); var Version 2.01 vom Seite 15 von 16

16 i, j, tmp: Integer; // Karten mischen for i := MIN to MAX do j := Random(MAX -MIN +1) +MIN; tmp := Cards[i].CardID; Cards[i].CardID := Cards[j].CardID; Cards[j].CardID := tmp; // Karten "umdrehen" und Vorderseiten passend raussuchen for i := MIN to MAX do Cards[i].Button.Visible := TRUE; // Button anzeigen CardImage.GetBitmap(Cards[i].CardID,Cards[i].Image.Picture.Bitmap); GameState := gsopencards0; // kein Feld offen procedure TForm1.Button1Click(Sender: TObject); (Sender as TButton).Visible := FALSE; // Button wegnehmen case GameState of gsopencards0: // kein Feld in der "Warteschlange" Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken GameState := gsopencards1; // jetzt ist ein Feld offen gsopencards1: // ein Feld ist schon offen Move2 := (Sender as TButton).Tag; // 2. Zug vermerken // Pärchen gefunden? if (Cards[Move1].CardID = Cards[Move2].CardID) then GameState := gsopencards0; Points := Points +1; // 1 Gummipunkt mehr ;) end else GameState := gsopencards2; Moves := Moves +1; // sonst ein Zug mehr gsopencards2: // zwei (ungleiche) Felder vom Zug vorher noch offen Cards[Move1].Button.Visible := TRUE; // alte Felder verdecken Cards[Move2].Button.Visible := TRUE; Move1 := (Sender as TButton).Tag; // den neuen Zug vermerken GameState := gsopencards1; procedure TForm1.SetMoves(const Value: Integer); FMoves := Value; // Wert übernehmen EMoves.Text := IntToStr(Value); // und ausgeben procedure TForm1.SetPoints(const Value: Integer); FPoints := Value; // Wert übernehmen EPoints.Text := IntToStr(Value); // und ausgeben procedure TForm1.BtnClearClick(Sender: TObject); Moves := 0; Points := 0; procedure TForm1.BtnExitClick(Sender: TObject); Application.Terminate; end. Version 2.01 vom Seite 16 von 16

Delphi eine Einführung

Delphi eine Einführung Delphi eine Einführung 1. Die Entwicklungsumgebung Delphi ist ein sogenanntes RAD Werkzeug. RAD = Rapid Application Development = schnelle Anwendungsentwicklung Merkmale: - es gibt vorgefertigte Komponenten

Mehr

Datei Erweiterungen Anzeigen!

Datei Erweiterungen Anzeigen! Einleitung Beim Kauf eines PCs werden die Dateierweiterungen sowie einige Dateien nicht angezeigt. Grund: Es gibt sehr viele Dateien die für das System ganz wichtig sind. Diese Dateien und auch Ordner

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen? Anleitung für Evident Seite 1 Anleitung für Evident-Anwender: Einbinden der MIZ-Dokumente in Evident. Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen? Zunächst müssen Sie entscheiden,

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Trennen der Druck- und der Online-Version.. 4 Grunddaten ändern... 5 Weitere Artikel-eigenschaften...

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

Programmierung in Delphi

Programmierung in Delphi Berufsbildende Schule Wirtschaft Trier Programmierung in Delphi (Einführung in die IDE) Unterrichtsmaterialien von Christoph Oberweis Stand: 13.11.2011 1 Einführung in die Delphi-Programmierung Delphi-Entwicklungssystem

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden. Der Serienversand Was kann man mit der Maske Serienversand machen? 1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden. 2. Adressen auswählen,

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Stammdatenanlage über den Einrichtungsassistenten

Stammdatenanlage über den Einrichtungsassistenten Stammdatenanlage über den Einrichtungsassistenten Schritt für Schritt zur fertig eingerichteten Hotelverwaltung mit dem Einrichtungsassistenten Bitte bereiten Sie sich, bevor Sie starten, mit der Checkliste

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Satzhilfen Publisher Seite Einrichten

Satzhilfen Publisher Seite Einrichten Satzhilfen Publisher Seite Einrichten Es gibt verschiedene Möglichkeiten die Seite einzurichten, wir fangen mit der normalen Version an, Seite einrichten auf Format A5 Wählen Sie zunächst Datei Seite einrichten,

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

Mehr

Einleitung. Hauptteil. Wir befinden uns nun im Demoarchiv.

Einleitung. Hauptteil. Wir befinden uns nun im Demoarchiv. Dublettenprüfung Einleitung Herzlich willkommen zum ELOoffice 8 Video-Training Dublettenprüfung. Mein Name ist Andreas Schulz, ich bin bei ELO für das Produktmanagement verantwortlich und werde Sie in

Mehr

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen Dateiname: ecdl_p3_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Microsoft Access 2010 Navigationsformular (Musterlösung)

Microsoft Access 2010 Navigationsformular (Musterlösung) Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2010 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2010) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 Die Installation der FuxMedia Software erfolgt erst NACH Einrichtung des Netzlaufwerks! Menüleiste einblenden, falls nicht vorhanden Die

Mehr

3. Die tägliche E-Mail-Flut effizient verwalten

3. Die tägliche E-Mail-Flut effizient verwalten 3. Es ist wie im normalen Leben: Wenn man etwas vernünftig einsortiert, findet man es auch rasch wieder. In Outlook ist das ähnlich. Denn mit der Zeit sammeln sich sehr viele E-Mails an. Wer da keine logische

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Anleitung zur Erstellung einer Gefährdungsbeurteilung

Anleitung zur Erstellung einer Gefährdungsbeurteilung Anleitung zur Erstellung einer Gefährdungsbeurteilung 1 Vorbereiten der Gefährdungsbeurteilung 1.1 Richten Sie mit Hilfe des Windows-Explorers (oder des Windows-Arbeitsplatzes) einen neuen Ordner ein,

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

QTTabBar Einrichtung, ein Tutorial

QTTabBar Einrichtung, ein Tutorial QTTabBar Einrichtung, ein Tutorial Von Heiko Schulze Eines der ganz entscheidenden Dinge, das im Explorer fehlt ist das tabunterstützte Navigieren. Dafür gibt es bereits seit Jahren die QTTabBar. Sie wurde

Mehr

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Die Textvorlagen in Microsoft WORD und LibreOffice Writer Die Textvorlagen in Microsoft WORD und LibreOffice Writer Liebe Teilnehmer(-innen) am Landeswettbewerb Deutsche Sprache und Literatur Baden- Württemberg, Diese Anleitung soll Ihnen helfen Ihren Wettbewerbsbeitrag

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE! 9 TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE! An den SeniorNETclub 50+ Währinger Str. 57/7 1090 Wien Und zwar gleich in doppelter Hinsicht:!"Beantworten Sie die folgenden Fragen und vertiefen Sie damit Ihr

Mehr

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Seite 1/7 Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Hier sehen Sie eine Anleitung wie man einen Serienbrief erstellt. Die Anleitung

Mehr

Jederzeit Ordnung halten

Jederzeit Ordnung halten Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Dateiname: ecdl5_01_02_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Access

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Anzeige von eingescannten Rechnungen

Anzeige von eingescannten Rechnungen Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Grunddaten ändern... 5 Weitere Artikeleigenschaften... 5 Der WYSIWYG-Editor... 6

Mehr

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen.

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen. Mediathek Die Mediathek von Schmetterling Quadra ist Ihr Speicherort für sämtliche Bilder und PDF-Dateien, die Sie auf Ihrer Homepage verwenden. In Ihrer Mediathek können Sie alle Dateien in Ordner ablegen,

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen 1. Einführung Über die Tabellen-Auswertungen können Sie eigene Auswertungen nach Ihren Wünschen erstellen. Diese Auswertungen werden immer anhand der aktuellen Daten aus orgamax ermittelt, Sie können also

Mehr

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge

Mehr

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Kontakte Kontakte Seite 1 Kontakte Seite 2 Inhaltsverzeichnis 1. ALLGEMEINE INFORMATIONEN ZU DEN KONTAKTEN 4 2. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 3. STAMMDATEN FÜR DIE KONTAKTE 4 4. ARBEITEN

Mehr

1. Trennlinie mit hr Eine dünne Trennlinie wie die obige in der Regio-Farbe (gelb) kann man recht einfach erstellen. Dafür reicht der Befehl

1. Trennlinie mit hr Eine dünne Trennlinie wie die obige in der Regio-Farbe (gelb) kann man recht einfach erstellen. Dafür reicht der Befehl Bilder bearbeiten In diesem Artikel geht es um Bilder im Backoffice, Bildformate, Trennlinien, Rahmen, das Ändern von Bildunterschriften, ein Grafik-Programm und einiges mehr in Sachen Grafik. Hierzu diese

Mehr

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7 Tutorial: Wie kann ich Kontakte erfassen In myfactory können Sie Kontakte erfassen. Unter einem Kontakt versteht man einen Datensatz, der sich auf eine Tätigkeit im Zusammenhang mit einer Adresse bezieht.

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Lieferschein Lieferscheine Seite 1 Lieferscheine Seite 2 Inhaltsverzeichnis 1. STARTEN DER LIEFERSCHEINE 4 2. ARBEITEN MIT DEN LIEFERSCHEINEN 4 2.1 ERFASSEN EINES NEUEN LIEFERSCHEINS 5 2.1.1 TEXTFELD FÜR

Mehr

Der Kalender im ipad

Der Kalender im ipad Der Kalender im ipad Wir haben im ipad, dem ipod Touch und dem iphone, sowie auf dem PC in der Cloud einen Kalender. Die App ist voreingestellt, man braucht sie nicht laden. So macht es das ipad leicht,

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

4.1 Wie bediene ich das Webportal?

4.1 Wie bediene ich das Webportal? 4.1 Wie bediene ich das Webportal? Die Bedienung ist durch ein Redaktionssystem sehr einfach möglich. Das Tutorial zeigt Ihnen wie Sie SMS-News und Top-News erstellen und veröffentlichen können. Schritt

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

Viele Bilder auf der FA-Homepage

Viele Bilder auf der FA-Homepage Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet

Mehr

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1 CMS.R. Bedienungsanleitung Modul Cron Revision 1 Copyright 10.09.2009 www.sruttloff.de CMS.R. - 1 - WOZU CRON...3 VERWENDUNG...3 EINSTELLUNGEN...5 TASK ERSTELLEN / BEARBEITEN...6 RECHTE...7 EREIGNISSE...7

Mehr

Schuljahreswechsel im Schul-Webportal

Schuljahreswechsel im Schul-Webportal Schuljahreswechsel im Schul-Webportal Seite 1 von 8 Schuljahreswechsel im Schul-Webportal Ablauf Übersicht: Schritte 1 bis 10: Schritte 11 bis 16: Schritte 17 bis 20: Vorbereitung des Schuljahreswechsels

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Domino Feldplaner 3.3

Domino Feldplaner 3.3 Domino Feldplaner 3.3 Handbuch - 2 - Inhaltsverzeichnis 1. Vorbemerkung (Seite 3) 2. Systemvoraussetzungen (Seite 3) 3. Der erste Start des Feldplaners (Seite 3) 4. Funktionen des Feldplaners (Seite 4)

Mehr

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Folgender Artikel soll veröffentlicht und mit dem Editor TinyMCE gestaltet werden: Eine große Überschrift Ein Foto Hier kommt viel Text. Hier kommt

Mehr

Windows 7 Ordner und Dateien in die Taskleiste einfügen

Windows 7 Ordner und Dateien in die Taskleiste einfügen WI.005, Version 1.1 07.04.2015 Kurzanleitung Windows 7 Ordner und Dateien in die Taskleiste einfügen Möchten Sie Ordner oder Dateien direkt in die Taskleiste ablegen, so ist das nur mit einem Umweg möglich,

Mehr

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Inhalt 1. Die Funambol Software... 3 2. Download und Installation... 3 3.

Mehr

Photopaint - Linsen. (Speichere deine Arbeit von Anfang an regelmäßig unter dem Namen Linsen.cpt )

Photopaint - Linsen. (Speichere deine Arbeit von Anfang an regelmäßig unter dem Namen Linsen.cpt ) Photopaint - Linsen Arbeiten mit Linsen (Speichere deine Arbeit von Anfang an regelmäßig unter dem Namen Linsen.cpt ) Für diese Übung öffne die Datei Winter.jp2 du kannst natürlich auch mit jeder anderen

Mehr

Visual Basic Express erstes Projekt anlegen

Visual Basic Express erstes Projekt anlegen Inhalt Dokument Beschreibung... 1 Erstes Projekt anlegen... 1 Verweise hinzufügen... 2 Imports setzen... 5 Public Class vorbereiten... 6 Mehrere Tools programmieren... 7 Dokument Beschreibung Nach der

Mehr

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Klicken Sie auf Neu anlegen, um Ihre neue Angebotseite zu erstellen..

Mehr

TYPO3-Zusatzkurs für www.durlacher.de

TYPO3-Zusatzkurs für www.durlacher.de TYPO3-Zusatzkurs für www.durlacher.de In diesem Zusatzkurs (Kapitel 14 bis 18) gehen wir die Dinge an, die im alltäglichen Umgang mit TYPO3 auf www.durlacher.de hilfreich sind. Verschieben, Löschen, Blind

Mehr

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: 11.09.2014 Änderungen vorbehalten

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: 11.09.2014 Änderungen vorbehalten Präventionsforum+ Erfahrungsaustausch HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch Stand: 11.09.2014 Änderungen vorbehalten Anlage zum Endnutzer-Handbuch Handout Gruppen-Administratoren

Mehr

Tutorial: Gnumeric installieren und Jahres-Kostenübersicht erstellen mit Diagramm

Tutorial: Gnumeric installieren und Jahres-Kostenübersicht erstellen mit Diagramm Gnumeric Mittwoch, 8. Mai 2013 01:05 Tutorial: Gnumeric installieren und Jahres-Kostenübersicht erstellen mit Diagramm In diesem Tutorial will ich Ihnen zeigen, wie man Gnumeric installiert und wie man

Mehr

E Mail Versand mit der Schild NRW Formularverwaltung

E Mail Versand mit der Schild NRW Formularverwaltung -Seite 1- E Mail Versand mit der Schild NRW Formularverwaltung Seit der Version 1.12.3.97 der Reportverwaltung ist die Möglichkeit integriert, E Mails direkt, d.h. ohne Umweg über einen externen Mailclient

Mehr

192.168.0.1. Wenn wir also versuchen auf einen anderen PC zuzugreifen, dann können wir sowohl per Name als auch mit der Adresse suchen.

192.168.0.1. Wenn wir also versuchen auf einen anderen PC zuzugreifen, dann können wir sowohl per Name als auch mit der Adresse suchen. Windows Netzwerk Sie haben einen oder mehrere PC mit einander verbunden? Dann sollte man das auch nutzen. Generelles: Ein PC hat in der Regel IMMER eine feste Nummer / Adresse (egal ob wechselnd oder immer

Mehr

Mit dem sogenannten Seriendruck können Etiketten und Briefe mit einer Adressdatei (z. B. Excel) verknüpft werden.

Mit dem sogenannten Seriendruck können Etiketten und Briefe mit einer Adressdatei (z. B. Excel) verknüpft werden. WORD 2010 Etiketten drucken Mit dem sogenannten Seriendruck können Etiketten und Briefe mit einer Adressdatei (z. B. Excel) verknüpft werden. Diese Anwendung erfolgt über die Registerkarte Sendungen 1

Mehr

Einführung in Powerpoint M. Hasler 2010. Wie erstelle ich eine Präsentation mit Powerpoint? - Eine Kurzanleitung

Einführung in Powerpoint M. Hasler 2010. Wie erstelle ich eine Präsentation mit Powerpoint? - Eine Kurzanleitung Wie erstelle ich eine Präsentation mit Powerpoint? - Eine Kurzanleitung 1 Als erstes musst du wissen, was du präsentieren willst logisch - sonst bleiben deine Folien ohne Inhalt. Vielleicht willst du die

Mehr

Folgeanleitung für Fachlehrer

Folgeanleitung für Fachlehrer 1. Das richtige Halbjahr einstellen Folgeanleitung für Fachlehrer Stellen sie bitte zunächst das richtige Schul- und Halbjahr ein. Ist das korrekte Schul- und Halbjahr eingestellt, leuchtet die Fläche

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Anleitung directcms 5.0 Newsletter

Anleitung directcms 5.0 Newsletter Anleitung directcms 5.0 Newsletter Jürgen Eckert Domplatz 3 96049 Bamberg Tel (09 51) 5 02-2 75 Fax (09 51) 5 02-2 71 - Mobil (01 79) 3 22 09 33 E-Mail eckert@erzbistum-bamberg.de Im Internet http://www.erzbistum-bamberg.de

Mehr

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten. Personenverzeichnis Ab dem Wintersemester 2009/2010 wird das Personenverzeichnis für jeden Mitarbeiter / jede Mitarbeiterin mit einer Kennung zur Nutzung zentraler Dienste über das LSF-Portal druckbar

Mehr

Fallbeispiel: Eintragen einer Behandlung

Fallbeispiel: Eintragen einer Behandlung Fallbeispiel: Eintragen einer Behandlung Im ersten Beispiel gelernt, wie man einen Patienten aus der Datenbank aussucht oder falls er noch nicht in der Datenbank ist neu anlegt. Im dritten Beispiel haben

Mehr

Filialpreisverwaltung

Filialpreisverwaltung Filialpreisverwaltung Ab jetzt kann man Filialpreise pro Artikel nach Filialen und Farben verwalten. Hierzu wurde ein neuer Tabellentyp geschaffen. Der Pfad für diese Preistabellen (PTAB s) wird mit dem

Mehr

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Massenversand Massenversand Seite 1 Massenversand Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. STAMMDATEN FÜR DEN MASSENVERSAND 4 2.1 ALLGEMEINE STAMMDATEN 4 2.2

Mehr

Produktschulung WinDachJournal

Produktschulung WinDachJournal Produktschulung WinDachJournal Codex GmbH Stand 2009 Inhaltsverzeichnis Einleitung... 3 Starten des Programms... 4 Erfassen von Notizen in WinJournal... 6 Einfügen von vorgefertigten Objekten in WinJournal...

Mehr

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung Ablauf für die Erfassung der Fehler in der Fertigung Voraussetzung ist die Zuordnung der Erzeugnisse zu Produktgruppen. Wie das funktioniert ist der Anleitung Neue Produktgruppe anlegen und mit Erzeugnissen

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Grunddaten ändern... 5 Weitere Artikeleigenschaften... 5 Der WYSIWYG-Editor... 6

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Gegenüber PowerPoint 2003 hat sich in PowerPoint 2007 gerade im Bereich der Master einiges geändert. Auf Handzettelmaster und Notizenmaster gehe ich in diesen Ausführungen nicht ein, die sind recht einfach

Mehr

Kurz-Anleitung Veranstaltungskalender AHG

Kurz-Anleitung Veranstaltungskalender AHG Babiel GmbH Moskauer Str. 27 40227 Düsseldorf www.babiel.com info@babiel.com Seite: 2 von 17 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Neue Veranstaltungsansicht im Portal... 3 1.2 Neue Veranstaltungsübersicht

Mehr

Evident VDDS-Anbindung von MIZ

Evident VDDS-Anbindung von MIZ Evident VDDS-Anbindung von MIZ Die VDDS Schnittstelle erlaubt die Übernahme der Patientendaten aus Evident in MIZ. Außerdem können Sie aus Evident heraus (aus der Patientenkarteikarte) MIZ oder den MIZViewer

Mehr

PowerPoint: Text. Text

PowerPoint: Text. Text PowerPoint: Anders als in einem verarbeitungsprogramm steht in PowerPoint der Cursor nicht automatisch links oben auf einem Blatt in der ersten Zeile und wartet auf eingabe. kann hier vielmehr frei über

Mehr

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

P&P Software - Adressexport an Outlook 05/29/16 14:44:26 Adressexport an Outlook Wozu? Aus EASY können viele Daten im Excelformat ausgegeben werden. Diese Funktion kann zum Beispiel zum Export von Lieferantenadressen an Outlook genutzt werden. Hinweis Wir können

Mehr

Microsoft Visual Studio Community 2015

Microsoft Visual Studio Community 2015 Microsoft Visual Studio Community 2015 Visual Studio Community 2015 ist eine kostenlose IDE mit leistungsfähigen Programmier- und Entwicklungswerkzeugen für Windows, ios und Android. Sie ist für einzelne

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

Installationsleitfaden kabelsafe backup professional unter MS Windows

Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsanleitung und Schnelleinstieg kabelsafe backup professional (kabelnet-obm) unter MS Windows Als PDF herunterladen Diese

Mehr