|
Registriert seit: 18. Dez 2010 9 Beiträge |
#7
Code:
unit uControl;
//////////////////////////////////////////////////////////////////////////////// INTERFACE //////////////////////////////////////////////////////////////////////////////// uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, uObjekt, Buttons, StdCtrls; const Max = 100; type Datentyp = record Typ : Objekttyp; Nummer: integer; StartX: integer; StartY: integer; end; type Dateityp = file of Datentyp; var Datensatz: Datentyp; Datei: Dateityp; type TRaster = class(TObject) private // private Deklarationen rCanvas : TCanvas; public // öffentliche Deklarationen property Canvas : TCanvas read rCanvas write rCanvas; procedure Render(); end; type Welttyp = array[1..Max] of TObjekt; type TForm1 = class(TForm) MainMenu1: TMainMenu; Beenden1: TMenuItem; Datei1: TMenuItem; Speichern1: TMenuItem; Laden1: TMenuItem; Neu1: TMenuItem; Bearbeiten1: TMenuItem; Rueckgaengig1: TMenuItem; GroupBox1: TGroupBox; SpBtLeer: TSpeedButton; SpBtSW: TSpeedButton; SpBtWS: TSpeedButton; SpBtVoll: TSpeedButton; Image1: TImage; OpenDialog: TOpenDialog; SaveDialog: TSaveDialog; BtStart: TButton; procedure FormCreate(Sender: TObject); // Das Raster wird erschaffen procedure FormClose(Sender: TObject; var Action: TCloseAction); // Der belegte Speicherplatz des Rasters wird freigegeben procedure Speichern; procedure Beenden1Click(Sender: TObject); procedure Neu1Click(Sender: TObject); procedure Speichern1Click(Sender: TObject); procedure Laden1Click(Sender: TObject); procedure Rueckgaengig1Click(Sender: TObject); procedure SpBtLeerClick(Sender: TObject); procedure SpBtSWClick(Sender: TObject); procedure SpBtWSClick(Sender: TObject); procedure SpBtVollClick(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure BtStartClick(Sender: TObject); private // private Deklarationen Raster : TRaster; zBild: TBitmap; public // öffentliche Deklarationen function Bild: TBitmap; end; var Form1: TForm1; Raster: TRaster; Welt: Welttyp; NummerAktuell: integer; Typ : Objekttyp; //////////////////////////////////////////////////////////////////////////////// IMPLEMENTATION //////////////////////////////////////////////////////////////////////////////// //=============================================== Teil 1 - TRaster ===========// //-------------------------------------------------- Raster Render -----------// procedure TRaster.Render(); // Das Raster mit 12 * 12 Pixeln Feldgröße wird gezeichnet var i: integer; begin rCanvas.Pen.Color := clWhite; rCanvas.Rectangle(0, 0, 720, 480); Form1.Image1.Picture.LoadFromFile('Ressources\Bitmaps\Stickman_Ruhe.bmp'); rCanvas.Pen.Color := clGray; for i := 1 to 60 do begin rCanvas.MoveTo(12*i,0); rCanvas.LineTo(12*i,480); end; for i := 1 to 40 do begin rCanvas.MoveTo(0,12*i); rCanvas.LineTo(720,12*i); end; for i := 1 to Max do Welt[i].draw; end; //////////////////////////////////////////////////////////////////////////////// //================================================= Teil 2 - TForm ===========// //////////////////////////////////////////////////////////////////////////////// hier vielleicht? :
Code:
hier ist der rest://----------------------------------------------------- Form Create ----------// procedure TForm1.FormCreate(Sender: TObject); // Das Raster wird erschaffen var i : integer; begin NummerAktuell := 0; Raster := TRaster.Create; Raster.Canvas := Self.Canvas; zBild := TBitmap.Create; zBild.HandleType := bmDIB; self.DoubleBuffered := true; for i := 1 to Max do Welt[i] := TObjekt.create(Leer,i,(-11),(-11)); end;
Code:
//------------------------------------------------------ Form Close ----------//
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); // Der belegte Speicherplatz des Rasters wird freigegeben var i : integer; begin if MessageDlg('Vor dem Beenden speichern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Speichern; Raster.Free; for i := 1 to Max do Welt[i].Free; end; //-------------------------------------------------- Form MouseDown ----------// procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Form1.SpBtLeer.Down then Typ := Leer else if Form1.SpBtSW.Down then Typ := SW else if Form1.SpBtWS.Down then Typ := WS else if Form1.SpBtVoll.Down then Typ := Voll else abort; NummerAktuell := NummerAktuell +1; Welt[NummerAktuell].Reset(Typ,NummerAktuell,(x - x mod 12),(y - y mod 12)); Raster.Render; end; //-------------------------------------------------- Form Speichern ----------// procedure TForm1.Speichern; var Datum: Datentyp; x: Datentyp; i: integer; Datenarray: array [1..Max] of TObjekt; begin if SaveDialog.Execute then // if SaveDialog.Exist // Prüfen assignfile(Datei, SaveDialog.FileName); rewrite(Datei); for i := 1 to Max do Datenarray[i] := Welt[i]; Blockwrite(Datei, Datenarray, Max); closefile(Datei); end; //------------------------------------------------------- Form Bild ----------// function TForm1.Bild: TBitmap; begin result := zBild; end; //---------------------------------------------------- Menü Beenden ----------// procedure TForm1.Beenden1Click(Sender: TObject); begin Close; end; //-------------------------------------------------------- Menü Neu ----------// procedure TForm1.Neu1Click(Sender: TObject); var i : integer; begin if MessageDlg('Wollen sie vorher speichern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Speichern; { for i := 1 to Max do Welt[i].Free; NummerAktuell := 0; Counter := 0; Raster.Free; Raster := TRaster.Create; Raster.Canvas := Self.Canvas; Raster.zStickman := TBitmap.Create; Raster.zStickman.HandleType := bmDIB; Raster.zStickman.LoadFromFile('Ressources\Bitmaps\Stickman_Ruhe.bmp'); Form1.Canvas.Rectangle(0,0,); zBild.Free; zBild := TBitmap.Create; zBild.HandleType := bmDIB; } end; //-------------------------------------------------- Menü Speichern ----------// procedure TForm1.Speichern1Click(Sender: TObject); begin Speichern; end; //------------------------------------------------------ Menü Laden ----------// procedure TForm1.Laden1Click(Sender: TObject); var Datum: Datentyp; i: integer; x : Datentyp; Datenarray: array [1..Max] of TObjekt; count: integer; begin if MessageDlg('Wollen sie vorher speichern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Speichern; if OpenDialog.Execute then begin assignfile(Datei, OpenDialog.FileName); reset(Datei); Blockread(Datei, Datenarray, Max, count); for i := 1 to count do Welt[i].reset(Datenarray[i].Typ, Datenarray[i].Nummer, Datenarray[i].StartX, Datenarray[i].StartY); closefile(Datei); Raster.Render; BtStart.Visible := true; end; end; //------------------------------------------------- Menü Rückgängig ----------// procedure TForm1.Rueckgaengig1Click(Sender: TObject); begin end; //------------------------------------------------------- SpBtLeer ----------// procedure TForm1.SpBtLeerClick(Sender: TObject); begin zBild.LoadFromFile('Ressources\Bitmaps\Leer.bmp'); end; //--------------------------------------------------------- SpBtSW ----------// procedure TForm1.SpBtSWClick(Sender: TObject); begin zBild.LoadFromFile('Ressources\Bitmaps\Schwarz-Weiß.bmp'); end; //--------------------------------------------------------- SpBtWS ----------// procedure TForm1.SpBtWSClick(Sender: TObject); begin zBild.LoadFromFile('Ressources\Bitmaps\Weiß-Schwarz.bmp'); end; //------------------------------------------------------- SpBtVoll ----------// procedure TForm1.SpBtVollClick(Sender: TObject); begin zBild.LoadFromFile('Ressources\Bitmaps\Voll.bmp'); end; {$R *.dfm} procedure TForm1.BtStartClick(Sender: TObject); begin BtStart.Visible := false; Self.Refresh; Raster.Render; end; end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |