Spiel - Bilder werden nicht angezeigt

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Onid
Beiträge: 5
Registriert: So 16. Mär 2025, 17:16

Spiel - Bilder werden nicht angezeigt

Beitrag von Onid »

Hallo,
ich muss ne Projektarbeit erstellen.
Dazu wollt ich nen kleines Spiel in Lazarus zum laufen bringen.
Von dem Code her klappt's, also es werden keine Fehler angezeigt, wenn ich das Programm dann aber starte funktionieren die Button nicht und die TImages werden nicht angezeigt, bzw.
überhaupt geladen.
Ich weiß nicht, ob ich den ganzen Code reinschicken soll, weil dieser ca. 350 Zeilen umfasst.

Code: Alles auswählen

    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure ShowPastorDialog(Phase: Integer);
    procedure ShowBedienungDialog(Phase: Integer);
    procedure ShowPriesterDialog(Phase: Integer);
    procedure ShowSektenfuehrerDialog(Phase: Integer);
    procedure ShowMutterDialog(Phase: Integer);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    Ort: string;
    erhaltenNotizblatt: Boolean;
    OrtKirche: Boolean;
    erhaltenBriefSektenfuehrer: Boolean;
    OrtPriesterBuero: Boolean;
    gefundenTagebuch: Boolean;
    OrtKinderzimmer: Boolean;
    erhaltenKinderzeichnung: Boolean;
    gefundenBibel: Boolean;
    DialogPhase: Integer;
    AktuellePerson: String;

  public
    {Public-Deklarationen}
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromFile('Start.png');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Ort:= 'Dorf';
  Image1.Picture.LoadFromFile('Dorf.png');
  Image2.Picture.LoadFromFile('Pastor.png');
  AktuellePerson:= 'Pastor';
  DialogPhase:= 1;
  ShowPastorDialog(DialogPhase);
end;

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Herzlich Willkommen im Lazarusforum.

Wenn Du hier Code posten willst, dann nutze im Editor bitte den Button "</>", dann landet der Code in eines Box und man kann ihn scrollen.
Gerade zu Anfang, lieber einmal mehr die Vorschau-Funktion des Editors hier nutzen.

Bei mir funktioniert das hier auf Anhieb.

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    image1.Picture.Loadfromfile(OpenDialog1.FileName);
   // image1.show;

  end;
end;

end.

Gruß Kralle
(Admin)
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von af0815 »

Ohne den Code tiefer angeschaut habe: Versuch einmal den vollen Dateinamen inklusive Pfad anzugeben, eines der ersten Schwierigkeiten ist oft, das die Dateien nicht gefunden werden, weil das default Directory nicht zusammenpasst. Deswegen einmal die ersten Bilder mit absoluten Pfad. Funktioniert das plötzlich, so kann man dann eine Lösung finden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Onid
Beiträge: 5
Registriert: So 16. Mär 2025, 17:16

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von Onid »

Hi, sorry, ich glaub, dass es offensichtlich ist, dass ich nicht wirklich Ahnung habe.

Wenn ich das aber genauso mit dem OpenDialog eingebe kommt bei dem (OpenDialog1.) folgende Fehlermeldung:
"identifier" expected but "const string" found

Ich hab auch noch nie mit TOpenDialog gearbeitet, also kenn ich mich absolut garnicht damit aus.

Das mit dem Dateipfad hab ich auch beachtet (den ganzen Pfad angeben), es wird auch kein Problem dabei angezeigt, von wegen dass das Bild nicht gefunden werden kann.
Wenn ich das Programm starte werden halt weder die Bilder angezeigt, noch erfüllen die Buttons ihre Funktion.
Ich weiß auch nicht, ob ich den ganzen Code rein schicken soll, aber der ist halt etwas länger.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Angenommen Dein Bild liegt unter "c:\windows\benutzer\onid\bilder\bild001.jpg" und
Dein Programm liegt unter "c:\programme\onid\meinprogramm.exe".

Dann würdest Du bei einem absoluten Pfad das angeben: "c:\windows\benutzer\onid\bilder\bild001.jpg" .
Ein relativer Pfad bezieht sich auf das Startverzeichnis Deines Programms.
Das bedeutet, damit Dein Programm bei relativen Pfadangaben Deine Bilder findet, müssten Deine Bilder z.B. in dem Verzeichnis
c:\programme\onid\bilder\" liegen.

Füge bei meinem Beispiel noch ein "TLabel" ein und ergänzen den Code um:

Code: Alles auswählen

	image1.Picture.LoadfromFile(openDialog1.Filename)
	label1.caption:=OpenDialog1.FileName;  // Diese Zeile ergänzen
Dann führe das Programm in Lazarus aus und navigiere zu Deinen Bildern.
Schaue Dir den Pfad an.
Jetzt verlässt Du die Lazarus, startest das ausführbare Programm und navigierst wieder zu Deinen Bildern.
Schaue Dir den Pfad an.

Man kann Lazarus so konfigurieren, das der Quellcode in dem einem Verzeichnis landet und die ausführbare Datei in einem anderen und schon kann es passieren´, das einer von beiden die Bilder nicht findet.

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Onid hat geschrieben: So 16. Mär 2025, 19:17 Wenn ich das aber genauso mit dem OpenDialog eingebe kommt bei dem (OpenDialog1.) folgende Fehlermeldung:
"identifier" expected but "const string" found
Nicht in Deinen Code einbauen, sondern ein neues Programm erstellen,
F12, einen

Code: Alles auswählen

TButton
, ein

Code: Alles auswählen

TImage
, ein

Code: Alles auswählen

TLabel
und den

Code: Alles auswählen

TOpenDialog
auf Formular packen,
meinen Code reinkopieren (der der unterhalb von

Code: Alles auswählen

{ TForm1 }
steht) und starten.

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Onid
Beiträge: 5
Registriert: So 16. Mär 2025, 17:16

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von Onid »

Kann es sein, dass das Bild-Problem damit zusammenhängt, dass die Buttons nicht funktionieren? Weil es zeigt mir keine Fehlermeldung bei dem Pfad.
Ich meine es zeigt allgemein keine Fehlermeldung.... Ich hab alle Buttons definiert (procedure TForm1.Button1Click....), aber wenn ich nach dem Start des Programms drauf klicke passiert nichts. So sollten sich ja auch eigentlich die Bilder ändern.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Kann es sein, das Du im Objektinspektor das Formular deaktiviert hast und das deshalb nichts funktioniert?

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von theo »

...oder sind vielleicht die Eventhandler im Objektinspektor bei Ereignisse (TButton OnClick) gar nicht eingehängt?
Wenn du nur den Code in den Editor kopierst passiert nämlich nichts.

Onid
Beiträge: 5
Registriert: So 16. Mär 2025, 17:16

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von Onid »

Verändert hab ich nichts daran und ich hab mittlerweile auch schon mehrmals probiert in neu erstellten Projekten und da müsste dürfte die Form ja nicht deaktiviert sein.
Also am Objektinspektor hab ich nichts verändert, müsste theoretisch am funktionierenden Code liegen, was aber nicht wirklich Sinn macht, außer ich hab halt was vergessen.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Markiere mal auf dem Formular den TButton, gehe dann in den Objektinspektor (F11 falls er nicht sichtbar ist) , dort auf den Reiter "Ereignisse" und was steht da rechts von "OnClick"?
Es sollte dort "Button1Click" drin stehen.
Wenn es das nicht macht, klicke in das Feld und wähle "Button1Click" aus.

Klicke mal irgendwo auf das Formular (nicht auf den Button) oder markiere im Objektinspektor "Form1: TForm1".
Was steht unter Eigenschaften rechts von "Enabled"? Da sollte ein Haken gesetzt sein und "(True)" stehen.

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Upps,
theo hat geschrieben: So 16. Mär 2025, 21:46 ...oder sind vielleicht die Eventhandler im Objektinspektor bei Ereignisse (TButton OnClick) gar nicht eingehängt?
Wenn du nur den Code in den Editor kopierst passiert nämlich nichts.
ich hätte das dazu schreiben sollen.

Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Onid
Beiträge: 5
Registriert: So 16. Mär 2025, 17:16

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von Onid »

Ja gut, ich hab die procedures immer rein kopiert, daran lag's 😭
VIELEN, VIELEN LIEBEN DANK AN EUCH BEIDE, ihr habt mir meinen Arsch gerettet :]

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1193
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Spiel - Bilder werden nicht angezeigt

Beitrag von kralle »

Wenn das Spiel fertig ist, schicke mal einen Download-Link.
Wenn das nicht für alle lesbar machen möchtest, unter unseren Userbilder, sind die Kontaktdaten oder einfach auf den User klicken und dann "PN" schicken.

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Antworten