Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TPicture mit eigener BMP-Extension (https://www.delphipraxis.net/169761-tpicture-mit-eigener-bmp-extension.html)

haentschman 11. Aug 2012 05:25

AW: TPicture mit eigener BMP-Extension
 
Nochmal...

wenn dein Timer bereits im OnCreate oder im Objektinspektor aktiviert wird könnte dein erstes Timer Event bereits vor OnShow auftreten. Da du die Objekte erst im OnShow erzeugst könnten sie zu dem Zeitpunkt noch nicht vorhanden sein.
--> Timer erst nach dem Erzeugen der Images aktivieren.
8-)

Dennis07 11. Aug 2012 09:51

AW: TPicture mit eigener BMP-Extension
 
Achso, so meinst du das....
Nein, der Timer wird natürlich auch erst im OnShow-Ereignis aktiviert, und zwar nachdem die Bilder in den RAM geladen wurden...
Hierran kann es also nicht liegen.

Dennis

Bummi 11. Aug 2012 10:14

AW: TPicture mit eigener BMP-Extension
 
Delphi-Quellcode:
unit Unit2;

interface

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

type
  TBitMapArray=Array[0..3] of TBitMap;
  TForm2 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    FBitMapArray:TBitMapArray;
    FIndex:Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

Procedure BMPCreateAndLoadFromFile(var bmp:TBitmap;const fn:String);
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile(fn);
end;


procedure TForm2.FormCreate(Sender: TObject);
Const
  Path='C:\Bilder\IconCollection\ix_ap_all\48x48\plain_bitmap\';
begin
  BMPCreateAndLoadFromFile(FBitMapArray[0],Path + 'about.tex');
  BMPCreateAndLoadFromFile(FBitMapArray[1],Path + 'add.xxx');
  BMPCreateAndLoadFromFile(FBitMapArray[2],Path + 'add2.yyy');
  BMPCreateAndLoadFromFile(FBitMapArray[3],Path + 'bookmark.aaa');
end;

procedure TForm2.FormDestroy(Sender: TObject);
var
 i:Integer;
begin
  for I := 0 to High(FBitMapArray) do
      FreeAndNil(FBitMapArray[i]);

end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
    Image1.Picture.Assign(FBitMapArray[FIndex]);
    inc(FIndex);
    if FIndex > 3 then Findex := 0;

end;

end.

Dennis07 11. Aug 2012 10:57

AW: TPicture mit eigener BMP-Extension
 
Hallo,
Und es gibt keine Möglichkeit, den TFileStream zu umgehen?
Ich verstehe nicht, wieso ich nicht einfach Vier Bilder erzeugen kann und diese dann bei bedarf in das TImage einlesen kann....
Weiß jemand von euch einen möglichen Grund?

freeway 11. Aug 2012 11:46

AW: TPicture mit eigener BMP-Extension
 
du kannst auch ohne TFileStream die Bilder in das array laden, anderseits was spricht gegen TFileStream ?
TFileStream erkennt an der Extension um welches Format es sich handelt

Dennis07 11. Aug 2012 12:11

AW: TPicture mit eigener BMP-Extension
 
Ja, nun ist das aber ja genau nicht das, was ich will.
Mein Problem entstand ja erst durch die abgeänderte extension. Ich darf die BMP-Endung nicht verwenden, die Dateien sind aber im BMP-Format.
Kann ich nicht dem TPicture sagen, es soll die TEX-Datei wie eine BMP-Datei behandeln?

Bummi 11. Aug 2012 12:27

AW: TPicture mit eigener BMP-Extension
 
intern wird eh in einem Stream geladen, nimmt sich also nichts.
Du kannst MyGraphic.pas aus Posting #6 auch problemlos so umbauen dass Du *.TEX als Bitmap direkt per Image1.Picture.LoadfromFile('Pfad\beispiel.TEX') laden kannst.

EDIT:
oberes (#13) angepasst (ohne sichtbare Streams)

haentschman 11. Aug 2012 14:10

AW: TPicture mit eigener BMP-Extension
 
Zitat:

Nein, der Timer wird natürlich auch erst im OnShow-Ereignis aktiviert, und zwar nachdem die Bilder in den RAM geladen wurden...
...dann ist der Part gut. Kontrolliere trotzdem nochmal ob sich nicht im OI ein Häckchen verirrt hat. Ich glaube, daß die Lösung einfacher ist als die vielen Beispiele. So viele, eigentlich funktionierende, Varianten können nicht irren... 8-)

Dennis07 11. Aug 2012 15:00

AW: TPicture mit eigener BMP-Extension
 
Zitat:

Zitat von haentschman (Beitrag 1177819)
...dann ist der Part gut. Kontrolliere trotzdem nochmal ob sich nicht im OI ein Häckchen verirrt hat. Ich glaube, daß die Lösung einfacher ist als die vielen Beispiele. So viele, eigentlich funktionierende, Varianten können nicht irren... 8-)

Nein, da kann ich dich beruhigen. Bevor ich mir die Mühe mache und hier im Forum einen Post schreibe, habe ich solche Fehlerquellen bereits überprüft... :-D
Danke aber trotzdem, häufig tauchen meine Fehler nähmlich wegen solchen Unaufmerksamkeiten auf.

Zitat:

Zitat von Bummi (Beitrag 1177810)
intern wird eh in einem Stream geladen, nimmt sich also nichts.
Du kannst MyGraphic.pas aus Posting #6 auch problemlos so umbauen dass Du *.TEX als Bitmap direkt per Image1.Picture.LoadfromFile('Pfad\beispiel.TEX') laden kannst.

Wie kann ich es denn so umbauen?
Danke;

Bummi 11. Aug 2012 17:48

AW: TPicture mit eigener BMP-Extension
 
Liste der Anhänge anzeigen (Anzahl: 1)
Halte ich zwar für oversized nur um eine Endung laden zu können, eigentlich eher dafür gedacht ein eigenes Format zu implementieren, aber der Anhang tut was Du willst.

Delphi-Quellcode:
uses TEXBMP.pas;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Image2.Picture.LoadFromFile('C:\Bilder\Bummi.TEX');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
Seite 2 von 3     12 3      

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