Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Funktion soll TImage in erstelltem Form befüllen -> Fehler (https://www.delphipraxis.net/65828-funktion-soll-timage-erstelltem-form-befuellen-fehler.html)

Whistler 21. Mär 2006 02:45


Funktion soll TImage in erstelltem Form befüllen -> Fehle
 
Moin,

folgende Funktion steht im Hauptformular:
Delphi-Quellcode:
function TfrmMain.LoadJPEG(Bildname:String; Ziel: TImage): Boolean;
var
  TEMPJPEG: TJPEGImage;
  ResStream: TResourceStream;
begin
  ResStream := TResourceStream.Create(HInstance, Bildname, 'JPEG');
  TEMPJPEG := TJPEGImage.Create;
  try
    TEMPJPEG.LoadFromStream(ResStream);
    Ziel.Picture.Bitmap.Assign(TEMPJPEG);
    Result := True;
  finally
    FreeAndNil(ResStream);
    FreeAndNil(TEMPJPEG);
  end;
end;
In "frmMain" gibt es dann folgende Prozedur:
Delphi-Quellcode:
procedure TfrmMain.LoadMainForm();
var
  Neuesform: TForm;
begin
  Neuesform:= TfrmZweitesForm.Create(Self);
  LoadJPEG('Main_Hintergrund', frmZweitesForm.imgHintergrund);
  try
    Neuesform.ShowModal;
  finally
    Neuesform.Release;
    Close;
  end;
end;
Gewünschtes Verhalten:
"frmMain" erstellt "frmZweitesForm" zur Laufzeit und holt dann ein JPEG Bild aus dem Res-File und assigned es einem "TImage" auf "frmZweitesForm".

Die Funktion für sich funktioniert prima wenn ich ein TImage auf dem "frmMain" befüllen will...

Sobald aber das andere Form angesprochen wird, gibt EAccessViolation...

cruiser 21. Mär 2006 04:31

Re: Funktion soll TImage in erstelltem Form befüllen -> F
 
mh... smells like MDI

Code:
LoadJPEG([color=#0000cc]'Main_Hintergrund'[/color], [color=#df0000]Neuesform[/color].imgHintergrund);
immer schön den Bezeichner auf den created wurde nutzen ;)

Whistler 21. Mär 2006 12:44

Re: Funktion soll TImage in erstelltem Form befüllen -> F
 
Nein, ist kein MDI.

Und wenn ich hier "Neuesform." nehme, meldet der Compiler, dass er kein imgHintergrund kenne...
Logisch - existiert ja erst zur Runtime.

Nur wie sage ich das Delphi? ;)

Whistler 21. Mär 2006 16:11

Re: Funktion soll TImage in erstelltem Form befüllen -> F
 
...kann es sein, dass die "Instanz" lediglich auf Form1 existiert, beim Zuweisen auf Form2 hat Form2 hierbei keinen Zugriff auf jene und es kommt zwangsweise zum Austieg...?


...oder weil das Fenster nicht "richtig" initialisiert wurde?
Wenn ich es beim Start erstellen lasse, geht es nämlich!

Ja genau! Das ist mein Problem. "Form2.Images..." Aufruf geht nicht, weil "Form2" Nil ist... doch wie ändern?

Whistler 23. Mär 2006 17:04

Re: Funktion soll TImage in erstelltem Form befüllen -> F
 
Mein Problem war, dass zum Zeitpunkt der Zuweisung der Zeiger leer war.
Problem wurde nun gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.

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