Autor Beitrag
hibbert
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Fr 29.08.03 19:33 
Hi,
wenn ich mein Programm schließe, soll noch eine Seite im TWebbrowser aufgerufen werden
ausblenden 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
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Fr 29.08.03 21:50 
Hi,
mach mal
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: 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 :wink: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Sa 30.08.03 19:59 
DANKE!!

thx hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
FeG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 30.08.03 23:30 
... stimmt. Das Zauberwort heißt OnDocumentComplete und ist ein Ereignis des WebBrowsers. Es würde so gehen:

ausblenden Delphi-Quelltext
1:
2:
3:
<span style="font-weight: bold">OnCloseQuery</span> {Form}
CanClose:=False;
WebBrowser1.Navigate('http://www.auq.de');


und dann

ausblenden Delphi-Quelltext
1:
2:
<span style="font-weight: bold">OnDocumentComplete</span> {Browser}
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: Sa 30.08.03 23:34 
Terra23 hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
OnCloseQuery {Form}
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: 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. :wink:

Hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: 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.