Hallo, ich habe folgenden Quellcode den ich gern zu einer Komponente machen würde. Leider habe ich von Komponentenerstellung noch keinerlei Ahnung.
Könnte mir eventuell jemand den folgenden Code zu einer Komponente machen so dass ich erst mal im groben sehen kann wie es funktioniert?
var
Form1: TForm1;
z : boolean;
t, h : integer; //Top, height (range)
r : integer; //Richtung (0 = vertikal, 1 = horizontal)
implementation
{$R *.dfm}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
z := True;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
z := False;
end;
//Regler mit der Maus verschieben
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if z then
begin
//Vertikal bewegen
if r=0 then
begin
if(x>=0) AND (x<=Image1.Width) then
begin
if(Image1.Top > t) AND (Image1.Top < h) then
Image1.Top:=y+(Image1.Top-Image1.Height div 2);
if(Image1.Top <= t) then Image1.Top := t+1;
if(Image1.Top >= h) then Image1.Top := h-1;
end;
end;
// Horizontal bewegen
if r=1 then
begin
if(y>=0) AND (y<=Image1.Height) then
begin
if(Image1.Left > t) AND (Image1.Left < h) then
Image1.Left:=x+(Image1.Left-Image1.Width div 2);
if(Image1.Left <= t) then Image1.Left := t+1;
if(Image1.Left >= h) then Image1.Left := h-1;
end;
end;
end;
end;
//Regler mit Tasten verschieben
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//vertikale Ausrichtung
if r=0 then
begin
if(Image1.Top > t) AND (Image1.Top < h) then
begin
if(key = VK_DOWN) then
Image1.Top:=Image1.Top+10;
if(key = VK_Up) then
Image1.Top:=Image1.Top-10;
end;
if(Image1.Top <= t) then Image1.Top := t+1;
if(Image1.Top >= h) then Image1.Top := h-1;
end;
//horizontale Ausrichtung
if r=1 then
begin
if(Image1.Left > t) AND (Image1.Left < h) then
begin
if(key = VK_RIGHT) then
Image1.Left:=Image1.Left+10;
if(key = VK_LEFT) then
Image1.Left:=Image1.Left-10;
end;
if(Image1.Left <= t) then Image1.Left := t+1;
if(Image1.Left >= h) then Image1.Left := h-1;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered := true;
t := 20;
h := 300;
r := 1;
end;
Vielen Dank
Könnte mir eventuell jemand den folgenden Code zu einer Komponente machen so dass ich erst mal im groben sehen kann wie es funktioniert?
var
Form1: TForm1;
z : boolean;
t, h : integer; //Top, height (range)
r : integer; //Richtung (0 = vertikal, 1 = horizontal)
implementation
{$R *.dfm}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
z := True;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
z := False;
end;
//Regler mit der Maus verschieben
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if z then
begin
//Vertikal bewegen
if r=0 then
begin
if(x>=0) AND (x<=Image1.Width) then
begin
if(Image1.Top > t) AND (Image1.Top < h) then
Image1.Top:=y+(Image1.Top-Image1.Height div 2);
if(Image1.Top <= t) then Image1.Top := t+1;
if(Image1.Top >= h) then Image1.Top := h-1;
end;
end;
// Horizontal bewegen
if r=1 then
begin
if(y>=0) AND (y<=Image1.Height) then
begin
if(Image1.Left > t) AND (Image1.Left < h) then
Image1.Left:=x+(Image1.Left-Image1.Width div 2);
if(Image1.Left <= t) then Image1.Left := t+1;
if(Image1.Left >= h) then Image1.Left := h-1;
end;
end;
end;
end;
//Regler mit Tasten verschieben
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//vertikale Ausrichtung
if r=0 then
begin
if(Image1.Top > t) AND (Image1.Top < h) then
begin
if(key = VK_DOWN) then
Image1.Top:=Image1.Top+10;
if(key = VK_Up) then
Image1.Top:=Image1.Top-10;
end;
if(Image1.Top <= t) then Image1.Top := t+1;
if(Image1.Top >= h) then Image1.Top := h-1;
end;
//horizontale Ausrichtung
if r=1 then
begin
if(Image1.Left > t) AND (Image1.Left < h) then
begin
if(key = VK_RIGHT) then
Image1.Left:=Image1.Left+10;
if(key = VK_LEFT) then
Image1.Left:=Image1.Left-10;
end;
if(Image1.Left <= t) then Image1.Left := t+1;
if(Image1.Left >= h) then Image1.Left := h-1;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered := true;
t := 20;
h := 300;
r := 1;
end;
Vielen Dank
Comment