Hi,
Ich habe einen RPG-Editor programmiert. Wenn das Level jetzt nicht ganz auf den Bildschirm passt benutze ich Scrollbars. Das funktioniert auch - einmal. Denn wenn man danach noch eine große Map erstellt, wo man die Scrollbars braucht, dann funktionieren die nicht mehr richtig.. Sie Scrollen nicht weit genug..
Quelltext:
Neue Map erstellen:
Delphi-Quellcode:
procedure TForm1.NeueMap1Click(Sender: TObject);
begin
Form2.ShowModal; // Einstellungen
World.Engine.Engine.X := 0; // An die Ausgangsposition gehn
World.Engine.Engine.Y := 0;
m1 := (World.lWidth)-(World.DXDraw.Width div 32); // Max von Horizontaler Scrollbar ausrechnen
m2 := (World.lHeight)-(World.DXDraw.Height div 32); // Min von Vertikaler Scrollbar ausrechnen
if m1 > 0 then begin // Wenn die Horizontale Scrollbar gebraucht wird...
DoScroll1 := 1; // nicht wichtig..
ScrollBar1.Min := 0;
ScrollBar1.Position := 0;
ScrollBar1.Max := m1;
end
else begin
DoScroll1 := 0;
ScrollBar1.Min := 1;
ScrollBar1.Max := 1;
end;
if m2 > 0 then begin // Wenn die Horizontale Scrollbar gebraucht wird...
DoScroll2 := 1;
ScrollBar2.Min := 0;
ScrollBar2.Position := 0;
ScrollBar2.Max := m2;
end
else begin
DoScroll2 := 0;
ScrollBar2.Min := 1;
ScrollBar2.Max := 1;
end;
end;
ScrollbarChange
Delphi-Quellcode:
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
if ScrollBar1.Max <> ScrollBar1.Min then begin
if ScrollPos > ScrollAlt1 then begin
World.Engine.Engine.X := World.Engine.Engine.X - 32;
end;
if ScrollPos < ScrollAlt1 then begin
World.Engine.Engine.X := World.Engine.Engine.X + 32;
end;
ScrollAlt1:= ScrollPos;
end;
end;
Und damit die Scrollbar sich der Form anpasst:
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
m1 := (World.lWidth)-(World.DXDraw.Width div 32);
m2 := (World.lHeight)-(World.DXDraw.Height div 32);
end;
Ich weiß nicht warum das nicht funktioniert -.-
Bei der ersten Map die ich erstelle funktionierts und bei der zweiten nicht mehr..