procedure selbst erstellen

Für Fragen von Einsteigern und Programmieranfängern...
scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

procedure selbst erstellen

Beitrag von scihbam37 »

Hallo,
ich möchte zur Übersichtlichkeit einige Zeilen meines Programms als procedure erstellen und diese dort einfügen.
Ich habe das Problem das ich aber keine Buttons, Scrollbars usw. verlinken kann.

Code: Alles auswählen

procedure Ueberpruefung;
begin
  label5.Caption:=IntToStr(label1.Left);   //Überprüfung für die koordinaten
  label6.Caption:=IntToStr(image1.Left);
  label8.Caption:=IntToStr(label1.Top);
  label9.Caption:=IntToStr(image1.Top);
end;
Es kommt die Meldung
unit1.pas(78,9) Error: Identifier not found "label5"
unit1.pas(78,34) Error: Identifier not found "label1" ... usw.


was kann ich tun?
Zuletzt geändert von Lori am Do 2. Jun 2011, 18:29, insgesamt 1-mal geändert.
Grund: Highlighter

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: procedure selbst erstellen

Beitrag von MAC »

Herzlich willkommen hier im Forum.

Was kannst du tun :

Code: Alles auswählen

Form1.Label1.Caption := 'Es Klappt';
Der Hintergrund dazu:
Wenn du ein Button1CLick funktion hast, dann steht davor TForm1.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender:TObject);
Dies weist sozusagen zu das sich alle folgenden Befehle auf Form1 beziehen (in wirklichkeit ist es viel komplizierter, Objekt Orientierte Programmierung - schau es dir mal an sobalt du ein bisschen übung hast, vereinfacht das Programmieren später sehr)
Deine Procedure hat kein Verweis auf diese Procedure. Wenn du jetzt 2 Fenster machst ( das geht, Neu > Formular ), und in Beiden ein Label1 hättest. Würde in deiner Procedure nicht klar sein welches du meinst ...

Das heißt, jede Komponente von Form1 muss bei deiner Procedure als diese Makiert werden. Entweder als Form1.Label1. u.s.w oder du schreibst einmal

With Form1 do
begin
// hier wird automatisch Form1 genommen ...
end;


Was übrigenz auch geht: DIe Procedure direkt zu Form1 zu deklarieren: (also so dass davor ein TForm1. steht ...)

Code: Alles auswählen

TForm1 = class(TForm)
  private
    { private declarations }
  public
    { public declarations }
    procedure TueEtwas; // hier wird jetzt deine Procedure angekündigt
  end; 
 
//...
//...    
 
implementation    
//..
//..
 
procedure TForm1.TueEtwas; // hier steht jetzt die Richtige Procedure...
begin
Label1.Caption := 'Das Klappt Auch';
end;

So und wenn dich die Theorie des OOP (Object Orrientierte Programmierung) interessiert:
(Ist zwar eigentlich für Delphi, aber Lazarus hat viele gemeinsammkeiten, sodas vieles problemlos Funktioniert)

http://www.delphi-treff.de/tutorials/ob ... ammierung/" onclick="window.open(this.href);return false;

Code: Alles auswählen

Signatur := nil;

scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

Re: procedure selbst erstellen

Beitrag von scihbam37 »

Vielen Dank!
Das hat mir echt sehr geholfen...

ich bin gerade dabei ein Snake Spiel zu schreiben...
hier mal mein Quelltext.
Wenn ihr noch Verbesserungsvorschläge habt würde ich diese gerne hören. Ich bin aber noch nicht fertig ;)

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, StdCtrls, Menus;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Image1: TImage;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    ListBox1: TListBox;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem10: TMenuItem;
    MenuItem11: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    Timer4: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MenuItem3Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem7Click(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{ $R *.lfm }
 
procedure Ueberpruefung;
begin
  Form1.label5.Caption:=IntToStr(Form1.label1.Left);   //Überprüfung für die Koordinaten
  Form1.label6.Caption:=IntToStr(Form1.image1.Left);
  Form1.label8.Caption:=IntToStr(Form1.label1.Top);
  Form1.label9.Caption:=IntToStr(Form1.image1.Top);
end;
procedure Speed;
begin
  Form1.timer1.Interval:=Form1.scrollbar2.Position;       //Änderung der Spielgeschwindigkeit
  Form1.timer2.Interval:=Form1.scrollbar2.Position;
  Form1.timer3.Interval:=Form1.scrollbar2.Position;
  Form1.timer4.Interval:=Form1.scrollbar2.Position;
 
  Form1.label11.Caption:=IntToStr(Form1.scrollbar2.Position);
end;
procedure StartZufall;
 var  playerhoch:Integer;       //Beim Spielstart werden Die Koordinaten
      playerlinks: Integer;      //des Players und Futters zufällig ausgewählt
      links: Integer;
      hoch: Integer ;
 begin
    playerhoch:=random(40)*5;
    playerlinks:=random(57)*5;
    links:=random(57)*5;
    hoch:=random(40)*5;
 
    Randomize ;               //////////////////////////////////////////////////////
    Form1.image1.Top:=playerhoch;
    Form1.image1.Left:=playerlinks;
    Form1.label1.Top:=hoch  ;
    Form1.label1.Left:=links;
 end;
 
procedure Punktzahl;
begin
  if Form1.scrollbar1.Position=3 then     //Wenn eine bestimmte Punktzahl erreicht ist
  begin                             //erhöht sich die Geschwindigkeit, Schwierigkeitsgrad
   Form1.scrollbar2.Position:=500;
  end;
  if Form1.scrollbar1.Position=5 then
  begin
   Form1.scrollbar2.Position:=400;
  end;
  if Form1.scrollbar1.Position=8 then
  begin
   Form1.scrollbar2.Position:=300;
  end;
  if Form1.ScrollBar1.Position=10 then
  begin
   Form1.ScrollBar2.Position:=200;
  end;
end;
procedure SamePosition;
 var links: Integer;      //für die Left-Position des neuen "Futter"
     hoch: Integer;       // Senkrechte Position
begin
  links:=Random(57)*5;   //die Wagerechtekoordinate soll durch 5 teilbar sein damit
                        //das Smiley die genaue Position des "Futters" erreichen kann
  hoch:=Random(40)*5;   //Senkrechtekoordinate
 
 
if (Form1.image1.Left=Form1.label1.Left) and   //wenn der smiley die Position des "futters" erreicht
   (Form1.image1.Top=Form1.label1.Top) then
begin
 Form1.label1.Left:=links;               //wird das "futter" wird auf eine Randomposition zurückgesetzt
 Form1.label1.Top:=hoch;
 Form1.scrollbar1.Position:=Form1.scrollbar1.Position+1;  //und die Puntzahl steigt um 1 an
 Form1.label3.Caption:=IntToStr(Form1.scrollbar1.Position);
end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
 timer1.Enabled:=true;        //der zugehörige Timer wird aktiviert
 if timer1.Enabled=true then  //Wenn andere Timer aktiviert sind
 begin
 timer2.Enabled:=false;       //werden diese ausgeschaltet, erleichtert das Spiel
 timer3.Enabled:=false;
 timer4.Enabled:=false;
 end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  StartZufall;
end;
 
 
procedure TForm1.MenuItem3Click(Sender: TObject);
begin
  if listbox1.Visible=false then     //wenn man auf die Hilfe drückt erscheint
  begin                              //im unteren Bild eine Anleitung
  listbox1.Visible:=true;
  end
  else
  begin
  listbox1.Visible:=false;
  end;
end;
 
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
    StartZufall;                           //Neues Spiel:
    scrollbar1.Position:=0;          //die Positionen werden wieder zufällig gewählt
    scrollbar2.Position:=600;        //Geschwindigkeit und Punktzahl werden zurückgesetzt
end;
 
procedure TForm1.MenuItem5Click(Sender: TObject);
begin
   close                    //Das Spiel wird beendet
end;
 
procedure TForm1.MenuItem7Click(Sender: TObject);
var hintergrund:integer;       //hier kann man die Hintergrundfarbe ändern
begin
   label4.Color:=random(hintergrund)
end;
 
procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
  Speed;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 timer3.Enabled:=true;
 if timer3.Enabled=true then
 begin
 timer1.Enabled:=false;
 timer2.Enabled:=false;
 timer4.Enabled:=false;
 end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 timer4.Enabled:=true;
 if timer4.Enabled=true then
 begin
 timer1.Enabled:=false;
 timer2.Enabled:=false;
 timer3.Enabled:=false;
 end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 timer2.Enabled:=true;
 if timer2.Enabled=true then
 begin
 timer1.Enabled:=false;
 timer3.Enabled:=false;
 timer4.Enabled:=false;
 end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  image1.Left:=image1.Left+5;  //das Smiley bewegt sich um 5 Pixel nach rechts
  SamePosition;       //Smiley und Futter haben die gleiche Position
  Punktzahl;          //Die Punktzahl steigt an und die Geschwindigkeit ändert sich
  Ueberpruefung;      //nur für den Programmierer zum
                       //überprüfen der Koordinaten
 
 
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  image1.Left:=image1.Left-5;
   SamePosition;
   Punktzahl;
   Ueberpruefung;
end;
 
procedure TForm1.Timer3Timer(Sender: TObject);
begin
  image1.Top:=image1.Top-5;
  SamePosition;
  Punktzahl;
  Ueberpruefung;
end;
 
procedure TForm1.Timer4Timer(Sender: TObject);
begin
  image1.Top:=image1.Top+5;
  SamePosition;
  Punktzahl;
  Ueberpruefung;
end;
 
initialization
  {$I unit1.lrs}
 
end.

scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

Re: procedure selbst erstellen

Beitrag von scihbam37 »

ich hab noch eine spezielle frage:
wie kann ich einem Button eine Tastaturtaste zu weisen?

Ich möchte die "Schlange" mit den Pfeiltasten stuern können, also wenn ich auf "Pfeil nach oben" drücke soll die gleiche procedure ablaufen, wie wenn ich auf "Hoch (Button1)" drücke.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: procedure selbst erstellen

Beitrag von MAC »

Erstmal zum Code:
Der Typische 4-Bewegungs-Timer . seh ich irgendwie immer :D
Deine 4 Timer gleichen sich sehr stark.
Der einzige Unterschied ist eine Zahl.
Wär es nicht besser:

Code: Alles auswählen

var
bewegungx,bewegungy:integer; //global deklariert
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  image1.left:=image1.Left+bewegungx;
  image1.Top:=image1.Top+bewegungy;
  SamePosition;
  Punktzahl;
  Ueberpruefung;
end;
 
//Und beim Klick auf einen Button eben:
bewegungx := 5;
bewegungy := 0;
...
Schau dir mal eine Case abfrage an, das könnte den Code in der Procedure Punktzahl; verschönern...
http://www.delphi-treff.de/object-pascal/verzweigungen/" onclick="window.open(this.href);return false;

Noch besser wäre aber eine Formel so wie

Code: Alles auswählen

if Form1.scrollbar1.Position > 0 then Form1.scrollbar2.Position := round( 1000 / Form1.scrollbar1.Position);
  else Form1.scrollbar2.Position := 1000;
// Die abfragung der Null weil man sonnst durch 0 teilen würde
So zu deinem Problem...
Die Tasten kannst du mit OnKeyDown abfragen.
Ich empfehle dir das OnKeyDown event von der Form1 zu nehmen...
Damit das auch ausgeführt wird wenn ein Button makiert ist musst du Form1.Keypreview auf true setzen...
Folgender Code gibt die die Zahlen für die Tasten die du drückst im Ascii Code

Code: Alles auswählen

Form1.Caption := InttoStr(key);
Drück auf den Tasten rum und merk dir die Zahlen :)

Code: Alles auswählen

// Danach durch den Code ersetzen, Zahlen eventuell anpassen... // 
Case key of
38:Button1Click(Sender); // Button1Click ist auch nur eine Procedure, deshalb kann man diese verwenden wie man will. 
39:Button2Click(Sender);
40:Button3Click(Sender);
41:Button4Click(Sender);
end;

Code: Alles auswählen

Signatur := nil;

scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

Re: procedure selbst erstellen

Beitrag von scihbam37 »

vielen dank erstma.
nun meine fragen:
Kann ich irgenwie machen das meine Schlange länger wird? (labels oder so dranhängen oder das bild ersetzen)
das Bild ersetzen ist u aufwändig, wenn es keinen befehl gibt wie "image1=image2"
man muss ja die Bewegungsrichtung einbeziehen

Wenn ich nun mit den Tasten Spiele springt natürlich auch die Makierung herum... kann ich das verhindern?

Und zu Beginn jeden Spiels haben Schlange und Futter immer die selbe Position, sie sind nicht übereinander, aber immer die gleiche Posi im Raum... Was tun?

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: procedure selbst erstellen

Beitrag von MAC »

Zeig am besten mal ein Bild..
Also am einfachsten (es ist nicht einfach, aber es schränkt dich nicht so ein wie labels) ist es wenn du direkt auf Die Form / Oder ein Image zeichnest welches die ganze Form bedeckt.
z.B: mit Image1.Canvas.Line // oder so. wobei du das Line durch jede menge ersetzen kannst...
Dann hättest du einfach einen Array mit Positionen und würdest diesen um 1 erweitern...
es gibt einen Befehl wie Image1 = Image2 , und zwar Image1.Picture.Bitmap := Image2.Picture.Bitmap
Dabei werden glaub ich (hoff ich sogar, weil ich den oft verwende) der Inhalt der Images kopiert und nicht die Pointer.
Du meist dieser häßliche Gestrichete rand an den Buttons ???
versuch mal Button1.Tabstop := False;

Verwende Randomize einmal beim FormCreate oder irgendwann... einmal reicht, danach ist der zufall immer anders :)

Code: Alles auswählen

Signatur := nil;

scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

Re: procedure selbst erstellen

Beitrag von scihbam37 »

mit den image ersetzten funktioniert immer nur einmal..
so hätte ich mir das gedacht...

Code: Alles auswählen

if (image1.Picture.Bitmap<>image3.Picture.Bitmap) or
    (image2.Picture.Bitmap<>image3.Picture.Bitmap) or
    (image4.Picture.Bitmap<>image3.Picture.Bitmap) then
 begin
 image1.Picture.Bitmap:=image3.Picture.Bitmap;
 image2.Picture.Bitmap:=image3.Picture.Bitmap;
 image4.Picture.Bitmap:=image3.Picture.Bitmap;
 end;
bei formcreate hab ich das ja drin, aber trotzdem ist es immer die selbe posi

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: procedure selbst erstellen

Beitrag von carli »

Mach's lieber mit .Assign

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: procedure selbst erstellen

Beitrag von pluto »

schau dir das mal an: http://www.pluto.lazarusforum.de/Tutorials/MySnake.zip" onclick="window.open(this.href);return false;
das habe ich als Beispiel erstellt. Vielleicht hilft es dir ja weiter.
MFG
Michael Springwald

scihbam37
Beiträge: 32
Registriert: Mi 1. Jun 2011, 21:07

Re: procedure selbst erstellen

Beitrag von scihbam37 »

jo danke für die vielen hilfen
das wechseln der bilder habe ich hinbekommen


wie siehts nun aus mit dem verlängern des körpers?
bis jetzt mein versuch
ich krieg das bloß nicht dynamisch sondern nur linea hin ...

Code: Alles auswählen

procedure Rumpftop;                       //Verlängerung des Körpers auf der y-Achse
begin                                     //nicht fertig
      Form1.image5.Visible:=false;
      Form1.image12.Visible:=false;
      Form1.image13.Visible:=false;
      Form1.image14.Visible:=false;
      Form1.image15.Visible:=false;
      Form1.image16.Visible:=false;
 
  if (Form1.scrollbar1.Position=1) then
   begin
   Form1.image6.Top:=Form1.image1.Top+rumpfy;
   Form1.image6.Left:=Form1.image1.Left+rumpfx;
   Form1.image6.Visible:=true;
 
   end
  else
  if (Form1.scrollbar1.Position=2) then
   begin
   Form1.image7.Top:=Form1.image1.Top+2*rumpfy;
   Form1.image7.Left:=Form1.image1.Left+2*rumpfx;
   Form1.image7.Visible:=true;
 
   Form1.image6.Visible:=true;
 
   end
  else
  if (Form1.scrollbar1.Position=3) then
   begin
   Form1.image8.Top:=Form1.image1.Top+3*rumpfy;
   Form1.image8.Left:=Form1.image1.Left+4*rumpfx;
   Form1.image8.Visible:=true;
 
   Form1.image6.Visible:=true;
   Form1.image7.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=4) then
   begin
   Form1.image9.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image9.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.image9.Visible:=true;
 
   Form1.image6.Visible:=true;
   Form1.image7.Visible:=true;
   Form1.image8.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=5) then
   begin
   Form1.image10.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image10.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.Image10.Visible:=true;
 
   Form1.image6.Visible:=true;
   Form1.image7.Visible:=true;
   Form1.image8.Visible:=true;
   Form1.image9.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=6) then
   begin
   Form1.image11.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image11.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.Image11.Visible:=true;
 
   Form1.image6.Visible:=true;
   Form1.image7.Visible:=true;
   Form1.image8.Visible:=true;
   Form1.image9.Visible:=true;
   Form1.image10.Visible:=true;
   end;
end;
 
procedure Rumpfleft;
begin                                    //Verlängerung Körper x-Achse
      Form1.image6.Visible:=false;       //nicht fertig
      Form1.image7.Visible:=false;
      Form1.image8.Visible:=false;
      Form1.image9.Visible:=false;
      Form1.image10.Visible:=false;
      Form1.image11.Visible:=false;
 
  if (Form1.scrollbar1.Position=1) then
   begin
   Form1.image5.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image5.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.image5.Visible:=true;
 
   end
  else
  if (Form1.scrollbar1.Position=2) then
   begin
   Form1.image12.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image12.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.image12.Visible:=true;
 
   Form1.image5.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=3) then
   begin
   Form1.image13.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image13.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.image13.Visible:=true;
 
   Form1.image5.Visible:=true;
   Form1.image12.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=4) then
   begin
   Form1.image14.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image14.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.image14.Visible:=true;
 
   Form1.image5.Visible:=true;
   Form1.image12.Visible:=true;
   Form1.image13.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=5) then
   begin
   Form1.image15.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image15.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.Image15.Visible:=true;
 
   Form1.image5.Visible:=true;
   Form1.image12.Visible:=true;
   Form1.image13.Visible:=true;
   Form1.image14.Visible:=true;
   end
  else
  if (Form1.scrollbar1.Position=6) then
   begin
   Form1.image16.Top:=Form1.image1.Top+(Form1.ScrollBar1.Position*rumpfy);
   Form1.image16.Left:=Form1.image1.Left+(Form1.ScrollBar1.Position*rumpfx);
   Form1.Image16.Visible:=true;
 
   Form1.image5.Visible:=true;
   Form1.image12.Visible:=true;
   Form1.image13.Visible:=true;
   Form1.image14.Visible:=true;
   Form1.image15.Visible:=true;
   end;
 
   //Form1.Image5.Visible:=true;
   //Form1.Image6.Visible:=false;
end;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: procedure selbst erstellen

Beitrag von pluto »

In meinem Code, gibt es dafür eine Funktion. Da kannst du es die Abschauen.
MFG
Michael Springwald

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: procedure selbst erstellen

Beitrag von MAC »

Wenn ich genau wüsdte was das für images sind und so (qullcode des ganzen Programms) könnte man das bestimmt auf unter 30 Zeilen zusammenfassen

Code: Alles auswählen

Signatur := nil;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: procedure selbst erstellen

Beitrag von carli »

Kleiner Tipp: Erstelle deine Images dynamisch und nutze Arrays.


Oder noch besser (eigentlich die richtige Variante): Baue ein Formular mit einer großen Paintbox (align=alClient) und zeichne in deren Canvas (onPaint Methode besetzen, beim Timer dann .repaint aufrufen)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: procedure selbst erstellen

Beitrag von pluto »

Wenn ich genau wüsdte was das für images sind und so (qullcode des ganzen Programms) könnte man das bestimmt auf unter 30 Zeilen zusammenfassen
Das glaube ich kaum. Wobei: Wenn man es sehr, sehr einfach macht vielleicht.
MFG
Michael Springwald

Antworten