AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tImage1 geht nur im Form1.OnCreate

Ein Thema von ReVenGer · begonnen am 24. Jan 2015 · letzter Beitrag vom 24. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#1

tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 13:00
Hi,
habe ein wahrscheinlich sehr triviales Problem mit einem Timage.
Wenn ich die gesamte Prozedur ins Form.Create schreibe funktioniert alles ohne Probleme.

Als extra Prozedur sagt Delphi mir "Image1 undeklarierter Bezeichner".

1. funktioniert
Code:


procedure TForm1.FormCreate(Sender: TObject);
var fAppPath: String;
begin
  fAppPath := ExtractFilePath(Application.Exename);
  UrlDownloadToFile(nil,
    Pwidechar(
    'http://myurl.com/banner.png'),
    Pwidechar(fAppPath + 'banner.png'), 0, nil);
  Image1.Picture.LoadFromFile(fAppPath + 'banner.png');
end;

2.funktioniert so nicht, warum?
Code:
 


procedure getbanner;
var fAppPath: String;
begin
  fAppPath := ExtractFilePath(Application.Exename);
  UrlDownloadToFile(nil,
    Pwidechar(
    'http://myurl.com/banner.png'),
    Pwidechar(fAppPath + 'banner.png'), 0, nil);
  Image1.Picture.LoadFromFile(fAppPath + 'banner.png');
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
getbanner;
end;

Geändert von ReVenGer (24. Jan 2015 um 13:32 Uhr)
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 13:42
Hallo,

du musst aus der Procedure getBanner eine Methode der Klasse TForm machen.
GetBanner kennt nicht die Komponenten der TForm Klasse.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider
Online

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 15:31
Oder du übergibst der procedure Image1 als Parameter:

Delphi-Quellcode:
procedure GetBanner(AImage: TImage);
var
  fAppPath: String;
begin
  fAppPath := ExtractFilePath(Application.Exename);
  UrlDownloadToFile(nil,
      Pwidechar(
      'http://myurl.com/banner.png'),
      Pwidechar(fAppPath + 'banner.png'), 0, nil);
  AImage.Picture.LoadFromFile(fAppPath + 'banner.png');
end;

procedure TForm6.FormCreate(Sender: TObject);
begin
  GetBanner(Image1);
end;
Frank
Frank Reim
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#4

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 15:51
@Klaus, wie mache ich aus getBanner eine Methode der Klasse TForm?

@Frank, vielen Dank für das Beispiel, aber wie verhält es sich wenn ich mehrere Komponenten mit einbinden möchte (z.B. progressbar, button usw.)
müssen die parameter dann alle einzeln zugewiesen werden?

Alles etwas anders als ich von Pascal gewohnt war.

Geändert von ReVenGer (24. Jan 2015 um 15:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 16:30
Delphi-Quellcode:
type
  TDeinForm = class(TForm)
  private
    (* Deklaration einer Methode der Klasse TDeinForm *)
    procedure GetBanner(AImage: TImage);
    ...
  end;

...

(* Implementation der Methode *)
procedure TDeinForm.GetBanner(AImage: TImage);
begin
  (* Code *)
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#6

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 17:55
Jetzt verstehe ich das auch. Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 17:59
wobei diese Möglichkeit auch noch besteht, wenn die Procedure eine Methode von Form1 ist:

Delphi-Quellcode:
type
   TDeinForm = class(TForm)
   private
     (* Deklaration einer Methode der Klasse TDeinForm *)
     procedure GetBanner;
     ...
   end;

 ...

(* Implementation der Methode *)
procedure TDeinForm.GetBanner;
var
  fAppPath: String;

begin
  fAppPath := ExtractFilePath(Application.Exename);
  UrlDownloadToFile(nil, Pwidechar('http://myurl.com/banner.png'), Pwidechar(fAppPath + 'banner.png'), 0, nil);
  Image1.Picture.LoadFromFile(fAppPath + 'banner.png');
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (24. Jan 2015 um 18:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#8

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 18:23
wobei diese Möglichkeit auch noch besteht, wenn die Procedure eine Methode von Form1 ist:
Siehe Antwort #2, aber so zumindestens als Beispiel.

Zitat:
PWiceChar
Bitte kein WideChar bei einer dynamischen Funktion oder einem dynamischen Typen

UrlDownloadToFile -> PChar
UrlDownloadToFileA -> PAnsiChar
UrlDownloadToFileW -> PWideChar

String -> PChar
AnsiString -> PAnsiChar
WideString und UnicodeString -> PWideChar
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider
Online

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 18:30
@Frank, vielen Dank für das Beispiel, aber wie verhält es sich wenn ich mehrere Komponenten mit einbinden möchte (z.B. progressbar, button usw.)
müssen die parameter dann alle einzeln zugewiesen werden?
Also, wenn es darum geht, mehrere Controls im Form zu initialisieren oder was auch immer, dann ist die Methode von Klaus natürlich eher geeignet.
Also als Methode der Form und nicht als Procedure.
Dann brauchst du auch keine Parameter, da du auf alle Eigenschaften des Form Zugriff hast.

Frank
Frank Reim
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#10

AW: tImage1 geht nur im Form1.OnCreate

  Alt 24. Jan 2015, 19:22
Danke erstmal an alle die sich hier so positiv mit meinem Problem befassen!

@himitsu: dachte mit PWideChar bin ich immer sicher was den Namen betrifft.

Wenn ich das ganze mit inifiles probiere, sagt er mir das Tinifiles nicht deklariert ist.

Code:
private
    { Private-Deklarationen }
    procedure getbanner;
    procedure readini;


procedure TForm1.readini;
var ini: Tinifiles;
begin
  Ini := TIniFile.Create('C:my.ini');
  try
    Edit1.Text := Ini.ReadString('Directory', 'MyCfg','1 ');
  finally
    Ini.Free;
  end;
end;
GetBanner funktioniert perfekt und ich dachte ich hätte es damit auch verstanden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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