Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TImage während Laufzeit erzeugen (https://www.delphipraxis.net/173417-timage-waehrend-laufzeit-erzeugen.html)

Mentos56 23. Feb 2013 15:17

TImage während Laufzeit erzeugen
 
Hallo,

ich bin echt verzweifelt. Ich habe ein Programm mit 2 Buttons, der 1. Button erzeugt einen anderen ( das funktioniert) und der 2. Button sollte ein Bild erzeugen(funktioniert noch nicht)

Wie mache ich das? Habe mich schon belesen, aber es hat nicht funktioniert.

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Bild : TImage;
  Button3:TButton;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button3 := TButton.Create(Form1);
  Button3.Parent:=self;
  Button3.Name := 'Button3';
  Button3.Enabled := true;
  Button3.Top := 50;
  Button3.Left := 50;
  Button3.Caption := 'Button3';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Bild:= Timage.create(Form1);
  Bild.Parent:= self;
  Bild.Left:=1;
  Bild.Top:=1;
  Bild.visible:=true;
  Bild.picture.LoadFromFile('Bilde.bmp');
  Bild.autosize:=true;
  showmessage('Bild');
end;

end.

Könntet ihr mir bitte helfen.

Klaus01 23. Feb 2013 15:33

AW: TImage während Laufzeit erzeugen
 
Hallo,

du könntest dem Button2 noch ein onClick Ereignis spendieren.

Delphi-Quellcode:
Button2.onClick := Button2Click;
Grüße
Klaus

Mentos56 23. Feb 2013 15:47

AW: TImage während Laufzeit erzeugen
 
Du meinst, das ich dem erzeugten Button ein OnClick-Ereignis spendieren soll?

Klaus01 23. Feb 2013 15:49

AW: TImage während Laufzeit erzeugen
 
Zitat:

Zitat von Mentos56 (Beitrag 1204844)
Du meinst, das ich dem erzeugten Button ein OnClick-Ereignis spendieren soll?

ja - woher soll der Button den sonst wissen was er tun soll.

Grüße
Klaus

Mentos56 23. Feb 2013 16:13

AW: TImage während Laufzeit erzeugen
 
naja, eigentlich wollte ich wissen wie ich das Bild während der Laufzeit erstelle. Aber danke für den Hinweiß mit dem OnClick-Ereignis.

DeddyH 23. Feb 2013 16:17

AW: TImage während Laufzeit erzeugen
 
Delphi-Quellcode:
Button3.OnClick := Button2Click;
Und dann mal auf den Button klicken ;)

Mentos56 23. Feb 2013 21:16

AW: TImage während Laufzeit erzeugen
 
Könnte mir bitte jemand erklären, wie ich ein Image während der Laufzeit erzeuge und ein Bild da rein lade.

Mentos56

DeddyH 23. Feb 2013 21:39

AW: TImage während Laufzeit erzeugen
 
Was gefällt Dir denn an Deinem eigenen Code nicht?

Mentos56 24. Feb 2013 08:06

AW: TImage während Laufzeit erzeugen
 
Wenn ich auf den Button 2 klicke erscheint das Bild nicht.

Sir Rufo 24. Feb 2013 08:38

AW: TImage während Laufzeit erzeugen
 
Zitat:

Zitat von Mentos56 (Beitrag 1204875)
Wenn ich auf den Button 2 klicke erscheint das Bild nicht.

Wird denn die Message mit "Bild" ausgegeben?

Mentos56 24. Feb 2013 08:41

AW: TImage während Laufzeit erzeugen
 
Nein, wenn ich den Button klicke passiert gar nichts.

Mentos56

DeddyH 24. Feb 2013 08:59

AW: TImage während Laufzeit erzeugen
 
Das OnClick hast Du aber zugewiesen?

Mentos56 24. Feb 2013 09:04

AW: TImage während Laufzeit erzeugen
 
Ohh, das hatte ich aus irgendeinem Grund vergessen. Vielen Dank für die schnelle Hilfe.

Mentos56

Mentos56 24. Feb 2013 14:14

AW: TImage während Laufzeit erzeugen
 
Und wie mache ich, dass das der Speicherplatz des Objektes beim Löschen wieder freigegeben wird?

RaSoWa1 24. Feb 2013 14:54

AW: TImage während Laufzeit erzeugen
 
Da Form1 der Besitzer der Komponenten ist, erledigt er das für dich, wenn er freigegegen wird.

Ich habe mir aber angewöhnt alle selbst erzeugten Objekt auch selbst wieder freizugeben. Ich habe deshalb kaum mit Speicherlecks zu kämpfen.
Deshalb einfach
Delphi-Quellcode:
Bild.Free
bzw.
Delphi-Quellcode:
Button3.Free
an geeigneter Stelle aufrufen. Spätestes im
Delphi-Quellcode:
TForm1.FormDestroy
.

Gruß Klaus

Sir Rufo 24. Feb 2013 16:34

AW: TImage während Laufzeit erzeugen
 
Zitat:

Zitat von RaSoWa1 (Beitrag 1204926)
Da Form1 der Besitzer der Komponenten ist, erledigt er das für dich, wenn er freigegegen wird.

Ich habe mir aber angewöhnt alle selbst erzeugten Objekt auch selbst wieder freizugeben. Ich habe deshalb kaum mit Speicherlecks zu kämpfen.
Deshalb einfach
Delphi-Quellcode:
Bild.Free
bzw.
Delphi-Quellcode:
Button3.Free
an geeigneter Stelle aufrufen. Spätestes im
Delphi-Quellcode:
TForm1.FormDestroy
.

Gruß Klaus

Ketzerisch gesagt heißt das, dass man nicht weiß, was man tut.

Wenn ich die Verwaltung eines Objekts delegiere (Owner bei Components oder bei Listen OwnsObjects), dann sollte man die Freigabe nur in Ausnahmefällen selber vornehmen (gerade bei Listen mit OwnsObjects kann das zu Exceptions führen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz