| Autor |
Beitrag |
hibbert
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Fr 29.08.03 19:33
Hi,
wenn ich mein Programm schließe, soll noch eine Seite im TWebbrowser aufgerufen werden
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin webbrowser1.Navigate('http://meineseite.login.php?user=ich&logout=true'); end; |
Das ist ja noch recht einfach, aber das Programm soll erst geschlossen werden, wenn diese Seite komplett geladen wurde.
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
kongreddgrass
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: Fr 29.08.03 21:50
Hi,
mach mal
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if webbrowser1.Navigate('http://meineseite.login.php?user=ich&logout=true'); then begin close; end; end; |
Müsste richtig sein
Gruß
Mike
PS: Ich glaube, dass so bei if...then was dazu gehört.
_________________ o.o
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Fr 29.08.03 22:11
Hi,
also bei deinem Vorschlage bekomme ich diese Fehlermeldung:
| Zitat: | | [Error] Unit1.pas(750): Type of expression must be BOOLEAN |
und ich weiß auch warum:
| kongreddgrass hat folgendes geschrieben: |
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if
webbrowser1.Navigate('http://meineseite.login.php?user=ich&logout=true');
then
begin
close;
end;
end; |
in der Zeile nach dem If ist am ende der Zeile ein ";", was da nicht stehen darf  auch wenn ich diese entferne, wirft der Compiler mir eine Fehlermeldung aus:
| Zitat: |
[Error] Unit1.pas(750): Type of expression must be BOOLEAN
|
Ok, also hab ich das umgestellt:
Delphi-Quelltext 1: 2: 3: 4:
| if webbrowser1.Navigate('http://meineseite.login.php?user=ich&logout=true')=true then begin close; end; |
und schonwieder eine Fehlermeldung:
| Zitat: | | [Error] Unit1.pas(750): Incompatible types |
Was nun ?
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: Sa 30.08.03 02:46
Da es anscheinend nur um das Ausloggen geht, kannst du doch einfach
anstatt dem WebBrowser lieber die Indy-HTTP-Komponente verwenden.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin IdHTTP1.Get('http://meineseite.login.php?user=ich&logout=true'); end; |
_________________ If accidentally read, induce vomitting.
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Sa 30.08.03 19:59
DANKE!!
thx hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
FeG
      
Beiträge: 77
Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
|
Verfasst: Sa 30.08.03 22:46
Hi,
nochmal zum Anfangsproblem:
Das: | Zitat: | | if webbrowser1.Navigate('http://meineseite.login.php?user=ich&logout=true')=true then |
KANN gar nicht gehen!
Die Hilfe verrät warum: Navigate ist eine Prozedur, und Prozeduren haben keinen Rückgabewert!! Nur Funktionen...
Also kann man auch nicht auf =true prüfen...
MfG,
FeG
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Sa 30.08.03 23:30
... stimmt. Das Zauberwort heißt OnDocumentComplete und ist ein Ereignis des WebBrowsers. Es würde so gehen:
Delphi-Quelltext 1: 2: 3:
| <span style="font-weight: bold">OnCloseQuery</span> CanClose:=False; WebBrowser1.Navigate('http://www.auq.de'); |
und dann
Delphi-Quelltext 1: 2:
| <span style="font-weight: bold">OnDocumentComplete</span> Close; |
Wenn das zu schwierig ist, warum rufst du dann nicht die Seite per ShellExecute auf? Dann wird das alles erst nach Close aufgerufen, denn ich verstehe irgendwie nicht, was du bezweckst, wenn das Tool nach dem Ladevorgang sofort beendet wird..
_________________ Hasta La Victoria Siempre
|
|
FeG
      
Beiträge: 77
Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
|
Verfasst: Sa 30.08.03 23:34
| Terra23 hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3:
| OnCloseQuery CanClose:=False; WebBrowser1.Navigate('http://www.auq.de'); | |
Na damit viel Spaß... Das Programm schließt nie... Da braucht's schon noch ne boolean-Variable, die solange auf "false" steht, bis OnDocumentComplete ausgelöst wurde...
| Zitat: | | denn ich verstehe irgendwie nicht, was du bezweckst, wenn das Tool nach dem Ladevorgang sofort beendet wird.. |
Ich allerdings auch nicht...
MfG,
FeG
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: So 31.08.03 04:25
Ich nehme an, dass Hibbert den User ausloggen will, wenn er das Programm schliesst. Der Rückgabewert der Seite ist hierbei egal.
Es kommt nur darauf an, dass der Server das logout=true erhält.
|
|
FeG
      
Beiträge: 77
Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
|
Verfasst: So 31.08.03 10:25
| Ex0rzist hat folgendes geschrieben: | | Es kommt nur darauf an, dass der Server das logout=true erhält. |
Eben, und deswegen müsste er (wenn er das im eigenen Programm und nicht über ShellExecute machen will), darauf warten, dass die Seite vollständig geladen wird, da sonst der Logout nicht durchgeführt wird.
Auch ShellExecute wäre in dem Fall problematisch, da der User ja einfach das aufgehende Browserfenster schließen könnte...
MfG,
FeG
|
|
hibbert 
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: So 31.08.03 14:33
ok, ich habe eine PHP Seite auf meinem Server, die mit einer MySQL Datenbank zusammenarbeitet.
Wenn man das Programm schließt, dann wird die PHP Seite aufgerufen, die Variabeln Username und Logout=true werden Übergeben und die Einträge in der MYSQL Datenbank werden geändert --> Der User ist ausgeloggt.
Der Rest der PHP Seite ist leer, es ist also egal ob der User die Seite sieht oder nicht.
Da ich es nicht geschafft habe Delphi direkt mit meiner MySQL Datenbank zu verknüfen habe ich das eben so gemacht.
Hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: So 31.08.03 14:40
| FeG hat folgendes geschrieben: | | ... und deswegen müsste er (wenn er das im eigenen Programm und nicht über ShellExecute machen will), darauf warten, dass die Seite vollständig geladen wird, da sonst der Logout nicht durchgeführt wird. |
Wozu? Angenommen auf der Logout-Seite sind viele Grafiken. Wozu müssen die geladen werden?
Der User ist ausgeloggt, sobald der Server die entsprechenden Befehle per GET erhalten hat. Das, was der User anschliessend lädt, ist für den eigentlichen Logoutvorgang völlig irrelevant.
|
|