![]() |
Neues Fenster erstellen
Hallo Leute,
ich bin grad voll am verzweifeln. Ich bin grad dabei so nen kleinen Browser zu proggen. Dafür hab ich auch so ne Art Downloadmanager gebastelt-besser gesagt: Ich bin noch dabei. Und jetzt fangen meine Probleme an. Ich wollte es so handhaben, dass wenn die Endung der Datei in der Adressleiste z.B. 'exe' ist ein kleines Form (nennen wir es DownloadForm) aufgeht, und die datei herunterlädt. Funktionier auch. Nun wollte ich aber so haben, dass ich bzw. der User nicht nur eine datei runterladen kann, sondern mehrere DownloadForms gleichzeitig auf haben kann. Ich dachte, man kann das so lösen:
Delphi-Quellcode:
In der Prozedur Fenster.StartDownload steht folgended:
.
. . var Fenster: TDownloadForm; begin Fenster := TDownloadForm.Create(MainForm); Fenster.StartDownload(URL); end;
Delphi-Quellcode:
Wenn ich das DownloadForm jetzt klassisch über DownloadForm.StartDownload(URL); aufrufe klappt alles prima!
var
DownloadingFileName: String; DownloadingFilePath: String; begin DownloadingFileName := GetFileNameOfURL(URL); DownloadingFilePath := GetPathOfDataURL(URL); FileNameLabel.Caption := DownloadingFileName; OrtLabel.Caption := DownloadingFilePath; Save.FileName := DownloadingFileName; URLOfFile := URL; DownloadDataForm.Show; end; Rufe ich es aber wie oben beschreiben über meine Fenster Variable auf, klappt außer dem DownloadForm.Show; nichts. D.h. die Label's z.B. bekommen keine neue Caption usw. Kann mir evtl. jemand sagen, woran das liegen könnte? |
Re: Neues Fenster erstellen
Delphi-Quellcode:
mfG
var
DownloadingFileName: String; DownloadingFilePath: String; begin DownloadingFileName := GetFileNameOfURL(URL); DownloadingFilePath := GetPathOfDataURL(URL); FileNameLabel.Caption := DownloadingFileName; OrtLabel.Caption := DownloadingFilePath; Save.FileName := DownloadingFileName; URLOfFile := URL; // DownloadDataForm.Show; Self.Show; // <-- !! end; mirage228 |
Re: Neues Fenster erstellen
ja.
Delphi-Quellcode:
laß einfach DownloadDataForm. weg oder schreibe Self.
DownloadDataForm.Show;
am besten entferne auch gleich die automatisch von Delphi angelegte Variable DownloadDataForm, dann kannst du darauf später nicht mehr reinfallen. Roderich |
Re: Neues Fenster erstellen
@mirage228
wir sollten heiraten, denken das gleiche :lol: Roderich |
Re: Neues Fenster erstellen
Cool!
EINIGES klappt jetzt schon! Also die Labels bekommen jetzt die Caption, die sie bekommen sollen. Wenn ich das problem richtig verstanden hatte, lag es daran, dass ich DownForm hab anzeigen lassen, aber in einer Kopie von DownForm sachen geändert hab. Nun hab ich ein weiteres Problem: Meine Download-Routine ( ![]() Noch was: Der Download an sich funktioniert nur die Fortschritsanzeige etc. funkt nicht. Hat jemand eine Idee? |
Re: Neues Fenster erstellen
Zitat:
Übergeb der Klasse dann immer die aktuelle Instanz von TDownloadForm. Du speicherst diese dann immer in einem privaten Feld der Klasse und greifst dann auf diese zu. mfG mirage228 |
Re: Neues Fenster erstellen
Woah!
Sorry aber son profi bin ich dann doch nicht! Kannst du mal kurz erläutern, wie das dann in etwa aussieht! Und, was ist denn eine Instanz? |
Re: Neues Fenster erstellen
Hi,
wenn du diese Klasse ( ![]()
Jetzt musst du im Code alle aufrufe von DownloadForm durch FForm (bzw. Form) ersetzen. Nun musst du immer das aktuell ausgewählte Form der Klasse übergeben und schon funktionierts ;) mfG mirage228 |
Re: Neues Fenster erstellen
Ähm, ja.
Zwei Sachen noch: 1. Wann muss ich denn FForm nehmen, und wann Form? 2. Zitat:
Kannst du es mir bitte erklären? |
Re: Neues Fenster erstellen
Zitat:
zu 2) In dem Fall, dass du in der DownloadForm selbst die Klasse erstellst und auch wieder freigibst, musst du einfach cDownStatus := cDownloadStatusCallBack.Create(Self); schreiben. mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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