Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Fr 04.09.09 13:00 
Moderiert von user profile iconNarses: Abgetrennt von [url=www.delphi-forum.de/...?t=94384]hier[/url].

Hab genau dazu auch eine Frage:
Ich will auf meinem Formular eine Menge n von kleinen bmp/gif-Dateinen verwenden.
Auf eine Benutzeraktion (Testmodus: TButtonKlick) wird ein Bild erzeugt (timage.create?), welches später mit Image1.left / image1.top beliebig platzierbar sein muss. Davon soll es beliebig viele geben können, deshalb kann ich die nicht vorher festlegen. Alle diese erschaffenen Images sollen dann auf eine bmp im Quellverzeichnis zugreifen.
Wie krieg ich hin, dass die Images die bmp/gif-Dateien laden?

ausblenden Delphi-Quelltext
1:
2:
image.picture:=ExtractFilePath(ParamStr(0))+'x.bmp'
//Funktioniert natürlich nicht, aber veranschaulicht gut, was ich am Ende haben will...


LG
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Fr 04.09.09 13:15 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

TPicture hat die Methode LoadFromFile:
ausblenden Delphi-Quelltext
1:
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'x.bmp');					


Mehrere Images die zur Laufzeit erstellt werden, würde ich in einer Liste verwalten.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
uses
  .., ContNrs;

...

type
  Form1 = class(TForm)
    ...
    MyImages: TObjectList;
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyImages := TObjectList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyImages.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to StrToIntDef(Edit1.Text, 0) -1 do //Im Edit steht die Anzahl der zu erstellenden Images
  begin
    with TImage.Create(Self) do
    begin
      Parent := Form1;
      Picture.LoadFromFile(...);
      ...
      MyImages.Add(); //Der ObjectList hinzufügen
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to MyImages.Count -1 do
    (MyImages[i] as TImage).Free;  //Alle Images löschen
end;


Wenn du die Bilder nicht in einzelnen Dateien mit der Exe liefern möchtest, du aber Ressourcen nicht verstehst, wäre wohl die einfachste Variante eine TImageList.