AGB  ·  Datenschutz  ·  Impressum  







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

Neues Fenster erstellen

Ein Thema von daniel8520 · begonnen am 23. Jul 2004 · letzter Beitrag vom 23. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
daniel8520
(Gast)

n/a Beiträge
 
#1

Neues Fenster erstellen

  Alt 23. Jul 2004, 15:58
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:
.
.
.
var
  Fenster: TDownloadForm;
begin
  Fenster := TDownloadForm.Create(MainForm);
  Fenster.StartDownload(URL);
end;
In der Prozedur Fenster.StartDownload steht folgended:
Delphi-Quellcode:
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;
Wenn ich das DownloadForm jetzt klassisch über DownloadForm.StartDownload(URL); aufrufe klappt alles prima!
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?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:03
Delphi-Quellcode:
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;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#3

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:04
ja.

DownloadDataForm.Show; laß einfach DownloadDataForm. weg oder schreibe Self.

am besten entferne auch gleich die automatisch von Delphi angelegte Variable DownloadDataForm, dann kannst du darauf später nicht mehr reinfallen.

Roderich
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#4

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:06
@mirage228
wir sollten heiraten, denken das gleiche

Roderich
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#5

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:12
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 (URLDownloadToFileURLDownloadToFile) ist ja eine eigene Klasse, in der Routine werden allerdings Dinge in dem DownForm geändert. Nun würde ich denken, dass die deshlab nicht funktioniert, weil ich ja nicht DownForm sehe, sondern nur eine Kopie. aber ich kann in der Routine ja nun schlecht mit Self arbeiten, da es ja eine eigene Klasse ist.
Noch was: Der Download an sich funktioniert nur die Fortschritsanzeige etc. funkt nicht.

Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:38
Zitat von daniel8520:
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 (URLDownloadToFileURLDownloadToFile) ist ja eine eigene Klasse, in der Routine werden allerdings Dinge in dem DownForm geändert. Nun würde ich denken, dass die deshlab nicht funktioniert, weil ich ja nicht DownForm sehe, sondern nur eine Kopie. aber ich kann in der Routine ja nun schlecht mit Self arbeiten, da es ja eine eigene Klasse ist.
Noch was: Der Download an sich funktioniert nur die Fortschritsanzeige etc. funkt nicht.

Hat jemand eine Idee?
*schnipp* Ich!

Ü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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#7

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:42
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?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:48
Hi,

wenn du diese Klasse ( http://www.delphipraxis.net/internal...downloadtofile ) verwendest, dann könntest du diese folgendermaßen ändern.
  • Füge unter "private" eine variable FForm vom Typ TDownloadForm ein.
  • Erstelle einen "public" Abschnitt in die Klasse.
  • Optional: Füge unter public einen Konstruktor ein, dem du als Parameter eine Variable vom Typ TDownloadForm übergibst, die im Konstruktor-Code in FForm gespeicher wird.
  • Schreibe in den public-Abschnitt folgende Zeile: property Form: TDownloadForm read FForm write FForm

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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#9

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 16:59
Ähm, ja.

Zwei Sachen noch:
1. Wann muss ich denn FForm nehmen, und wann Form?
2.
Zitat:
Nun musst du immer das aktuell ausgewählte Form der Klasse übergeben und schon funktionierts
hab ich nicht verstanden! Sorry!

Kannst du es mir bitte erklären?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Neues Fenster erstellen

  Alt 23. Jul 2004, 17:06
Zitat von daniel8520:
Ähm, ja.

Zwei Sachen noch:
1. Wann muss ich denn FForm nehmen, und wann Form?
2.
Zitat:
Nun musst du immer das aktuell ausgewählte Form der Klasse übergeben und schon funktionierts
hab ich nicht verstanden! Sorry!

Kannst du es mir bitte erklären?
zu 1) Das ist in diesem Fall eigentlich egal, welches du nimmst.

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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  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 18:20 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