unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg, XPMan, StdCtrls, ComCtrls, Menus, ToolWin,
Buttons, Contnrs, JvGIF, JvComponent, JvRollOut;
type
TForm1 =
class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Panel2: TPanel;
CoolBar1: TCoolBar;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
StaticText1: TStaticText;
Panel1: TPanel;
JvRollout1: TJvRollout;
Image2: TImage;
CoolBar2: TCoolBar;
Panel3: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Bevel1: TBevel;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Panel4: TPanel;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button11: TButton;
Panel5: TPanel;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Image3: TImage;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TMapObject =
class(TControl)
private
image: TImage;
// Für das entsprechende Einheitenbild besser vielleicht Imagelist, kann imagelist nur bmp ich brauch aber gif?
Edit: TEdit;
// Eingabefeld für Einheitenname
Einheitenname: TStaticText;
// Anzeige des Einheitennamens
X,Y: Integer;
// Position der Einheit auf Karte Y
Typ:
String;
// z.B. "Infantry", Image ist abhaengig vom Einheitentyp wo kann ich diese Abhaengigkeit berechnen oder festlegen z.B wenn Einheitentyp = 2 dann image.picture.'Panzer.bmp"
//draggen ermoeglichen und draggingstatus
procedure EditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure DblClick(Sender: TObject);
reintroduce;
virtual;
published
property Einheitentyp :
String read Typ
write Typ;
property MapX :Integer
read x
write x;
property MapY :Integer
read y
write y;
// procedure zeichnen(Mapx,Mapy:integer);
public
constructor Create(Owner: TComponent; MapX: Integer; MapY: Integer; Einheitentyp:
String);
reintroduce;
virtual;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
mapobject:tmapobject;
i,
index:integer;
Liste:TObjectList;
implementation
{$R *.dfm}
constructor TMapObject.Create(Owner: TComponent; MapX: Integer; MapY: Integer; Einheitentyp:
String);
begin
//inherited;
Image := TImage.Create(self);
// So muss das heißen
Image.Left:=mapx;
Image.Top:=mapy;
image.autosize:=true;
Image.Transparent:=true;
if Einheitentyp = '
Panzer'
then Image.Picture:=Form1.image3.picture;
if Einheitentyp = '
test'
then Image.Picture.loadfromfile('
unbenannt-3.gif');
Image.Parent := TWinControl(owner);
Edit := TEdit.Create(self);
Edit.Left:=MapX+50;
// Positionberechnung
Edit.Top:=mapy+25;
//
Edit.Parent := TWinControl(owner);
Edit.SetFocus;
Einheitenname := TStaticText.Create(self);
Einheitenname.Left:=mapx+50;
Einheitenname.Top:=mapy+25;
Einheitenname.Height:= 20;
Einheitenname.BevelInner:= bvLowered;
Einheitenname.BevelKind:= bkSoft;
Einheitenname.BevelOuter:= bvRaised;
Einheitenname.Font.Charset:= DEFAULT_CHARSET;
Einheitenname.Font.Color:= clWindowText;
Einheitenname.Font.Height:= -13;
Einheitenname.Font.
Name:= '
MS Sans Serif';
Einheitenname.Font.Style:= [fsBold];
Einheitenname.ParentFont:= False;
Einheitenname.TabOrder:= 1;
Einheitenname.Transparent:= False;
Einheitenname.Visible:= False;
Einheitenname.Parent := TWinControl(owner);
Edit.OnKeyDown := EditKeyDown;
Image.OnDblClick:=Dblclick;
Einheitenname.OnDblClick:=DblClick;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Const NamePrefix='
Mapobject';
begin
if ssleft
in shift
then
begin
TMapObject.Create(self,X,Y,'
Panzer').
Name := NamePrefix+inttostr(i);
//object erstellen
Liste.add(MapObject);
Label1.caption:=inttostr(Liste.count);
Label2.Caption:=inttostr(x)+'
, '+inttostr(y);
Form1.Image1.OnMouseDown:=nil;
end;
end;
procedure tmapobject.DblClick(Sender: TObject);
begin
Form1.Image1.OnMouseDown:=nil;
Einheitenname.Hide;
Edit.show;
Edit.SetFocus;
end;
procedure TMapObject.EditKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_Return)
And (edit.text<>'
')
then
begin
Einheitenname.caption:='
'+edit.text+'
';
Edit.Hide;
Einheitenname.Show;
Form1.Image1.OnMouseDown:=form1.image1MouseDown;
end;
if (Key=VK_Return)
And (edit.text='
')
then
begin
form1.Label1.caption:='
Fehler Sie muessen einen Namen Vergeben!';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
Statictext1.doublebuffered:=true;
Liste := TObjectList.create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Liste.free;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
form1.StaticText1.caption:='
Map X = '+inttostr(x)+'
Map Y = '+inttostr(y);
end;
end.