AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser mehrmals aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser mehrmals aufrufen

Offene Frage von "joseph_l"
Ein Thema von joseph_l · begonnen am 10. Apr 2006 · letzter Beitrag vom 12. Apr 2006
Antwort Antwort
joseph_l

Registriert seit: 26. Jan 2006
7 Beiträge
 
Delphi 2006 Professional
 
#1

TWebbrowser mehrmals aufrufen

  Alt 10. Apr 2006, 16:11
hallo! (meine 1. frage in diesem forum)
Ich habe TWebbrowser implementiert und möchte zwischen Eingabemasken und Webdarstellung wechseln. zB. so:
if webform then
begin
wb.Visible:=true;
wb.Align:=alclient ;
end
else
begin
wb.Stop;
wb.Visible:=false;
wb.Align:=alNone;
wb.height:=0;
wb.Width:=0;
end;
Das funktioniert genau einmal. Nach Umschalten von der Webdarstellung auf die Eingabemasken wird die Webseite nicht mehr dargestellt, obwohl die richtigen Routinen bis zum Erstellen der jew. aufzurufenden xml-datei durchlaufen werden incl. des navigate-Befehls:
wb.Navigate(ort+'\data\datei.xml');
augenscheinlich baut sich die Seite im hintergrund auf!?

im Forum habe ich dazu nichts Passendes gefunden. Hat jemand einen Tip?
joseph_l
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TWebbrowser mehrmals aufrufen

  Alt 10. Apr 2006, 19:27
Hallo Joseph_I,

herzlich willkommen in der Delphi-PRAXiS.

Da muss mehr sein als der Code den du zeigst, damit der von dir beobachtete Fehler auftritt. Beschreibe mal genau, wie man den Fehler reproduzieren kann - oder noch besser: erstelle ein kleines Demoprojekt. Übrigens ist das Ändern der VCL-Eigenschaft Visible nicht nötig:

Delphi-Quellcode:
procedure TDemoForm.ToggleButtonClick(Sender: TObject);
begin
  with WebBrowser do
  begin
    Tag := 1 - Tag;
    if Odd(Tag) then
    begin
      Align := alNone;
      Width := 0;
      Height := 0;
    end else Align := alClient;
  end;
end;
Wenn du wissen willst, wieso meine Code-Zeilen viel schöner gerendert werden als deine: Einfach deinen Code markieren und im Beitragseditor auf den Button Delphi in der Werkzeugleiste klicken.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
joseph_l

Registriert seit: 26. Jan 2006
7 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TWebbrowser mehrmals aufrufen

  Alt 11. Apr 2006, 15:15
hallo marabu,

ich habe ein simples demoprojekt erstellt:
ein menu mit 2 menupunkten (webdarstellung->fest mit einem html-file verbandelt/keine webdarstellung->einfach form anzeigen),
ein leeres panel1 mit align=alLeft,
ein weiteres panel2 irgendwo auf der form mit align=alCustom,
und natürlich den webbrowser (wb) mit obigen definitionen.

egal wo ich den wb plaziere: auf der form oder auf einem der panels, das ergebnis ist immer das gleiche: die seite wird einmal angezeigt - in den dimensionen des jew. parent-elements und dann nicht mehr.

das problem tritt nur in einer konstellation nicht auf: plazierung des wb auf der form und panel1 mit align<>alLeft, aber dann wird die ganze form belegt und panel1 überklatscht, was ich aber in meiner anwendung nicht gebrauchen kann, da sich auf panel1 ein dbGrid befindet, was die ganze angelegenheit steuert.

wie bringe ich dem wb bei, daß er sich nicht so breit macht??

grüße
joseph_l
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TWebbrowser mehrmals aufrufen

  Alt 11. Apr 2006, 17:13
Joseph, ich bin nicht sicher, ob ich alles verstehe, was du erklärst. Bei mir keimt der Verdacht, dass der WebBrowser auf deiner Form das falsche Parent-Control hat. Grundsätzlich ist es kein Problem, die Abmessungen der WebBrowser-Komponente nach Belieben zu steuern. Schade dass du dein Demo-Projekt nicht zum Download angehängt hast.

Du schreibst alCustom - bist du sicher, dass du nicht mit alClient arbeiten möchtest?

In deinem ersten Beitrag hast du Code gezeigt, der den WebBrowser wahlweise unsichtbar macht. Soll sich der WebBrowser den Anzeigebereich mit anderen Eingabefeldern teilen? Kannst du beschreiben, wie die Benutzerschnittstelle später aussehen und funktionieren soll?

marabu
  Mit Zitat antworten Zitat
joseph_l

Registriert seit: 26. Jan 2006
7 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TWebbrowser mehrmals aufrufen

  Alt 11. Apr 2006, 21:54
marabu, wenn es kein problem ist,
Zitat:
die abmessungen der webbrowser-komponente nach belieben zu steuern
, würde ich gerne wissen wie.

eigentlich dachte ich, ich hätte mein problem gut erklärt. dem ist wohl nicht so.
hier mein demo-projekt (obwohl es eigentlich nichts besonderes ist):
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    web1: TMenuItem;
    keinweb1: TMenuItem;
    web2: TMenuItem;
    Panel2: TPanel;
    Label1: TLabel;
    Panel1: TPanel;
    wb: TWebBrowser;
    ..........
procedure TForm1.FormCreate(Sender: TObject);
begin
wb.Navigate('about:blank');
wb.Align:=alnone;
wb.Height:=0;
wb.Width:=0;
end;

procedure TForm1.keinweb1Click(Sender: TObject);
begin
label1.Caption:='kein WEB';
wb.Align:=alnone;
wb.Height:=0;
wb.Width:=0;
end;

procedure TForm1.web2Click(Sender: TObject);
begin
label1.Caption:='WEB!!!!!!!!!';
wb.Align:=alclient;
wb.Navigate('d:\diverses\irgendwas.html');
while (WB.ReadyState <> READYSTATE_COMPLETE) and not (Application.Terminated) do
  begin
    Application.ProcessMessages;
    Sleep(0);
  end;
end;
was ich will, ist, daß der webbrowser sich mit dem panel an der linken formkante verträgt und sich nicht nach einmaligem auftauchen verabschiedet - es sei denn, er bekommt den ganzen 'form'-platz eingeräumt (bzw. mindestens die linke form-kante, das panel mit align=alRight stört ihn nicht).

zur geplanten benutzerschnittstelle:
auf dem linken panel(align=alLeft) befindet sich ein dbgrid. die jeweils selektierten datensätze werden im übrigen formbereich angezeigt, entweder im editierformat (dh. das form mit allen TEdits und Buttons und was dazugehört -zwecks ergänzung/änderung oder auch neueingabe) oder im html-format (nur anzeige). gesteuert wird der modus über eine TActionToolBar. der webbrowser muß sich den anzeigebereich mit keinem anderen element teilen.
joseph_l
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TWebbrowser mehrmals aufrufen

  Alt 11. Apr 2006, 22:54
Warum packst du dein Demo-Projekt nicht - ohne EXE und DCU - in ein ZIP-Archiv - so dass ich es auf meiner Maschine betrachten und korrigieren kann? Da ich allerdings nur D7 habe, müsstest du darauf achten, dass die DFM-Dateien im Textformat gespeichert sind.

Die Dimensionierung geschieht wie bei allen VCL-Komponenten über die Eigenschaften Top, Left, Height, Width, die Anchors und Align, aber das weißt du doch sicher.

Hast du schonmal überlegt, ob du deine Edit-Komponenten und den WebBrowser nicht einfach auf zwei verschiedene Seiten eines PageControls legen möchtest? Zum Anzeigen oder Bearbeiten könnte der Benutzer dann die entsprechende Seite aus dem Register wählen.

Gute Nacht

marabu
  Mit Zitat antworten Zitat
joseph_l

Registriert seit: 26. Jan 2006
7 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TWebbrowser mehrmals aufrufen

  Alt 12. Apr 2006, 13:28
das demo-projekt habe ich angehangen.
bitte folgende konstellationen überprüfen:
  • TWebBrowser (wb) auf form1 und panel1.align=alLeft ->funktioniert genau einmal
  • wb auf panel2, panel1.align beliebig ->funktioniert genau einmal
  • wb auf form1 und panel1.align=alCustom ->funktioniert, aber panel1 wird überklatscht
  • wb auf form1 und panel1.align=alRight ->funktioniert
  • wb auf tabsheet, panel1.align beliebig ->funktioniert

dh. 2 möglichkeiten bleiben:
entweder das panel1 rechts anzuordnen, das ist aber für meine anwendung unmöglich
oder, wie vorgeschlagen, ein PageControl zu verwenden (das ist mir aber zu häßlich).

Was kann ich tun?
Vielleicht kann man dem wb doch beibringen, sich mit dem panel auf der linken seite zu vertragen? ich weiß nur nicht wie.
oder man baut sich ein PageControl, dem man die häßlichen tabs entfernt (was wohl nicht geht, aber wenn, dann weiß ich das nicht).
oder man baut sich ein panel mit den bestimmten PageControl/TabSheet-eigenschaften, die der wb offensichtlich versteht und akzeptiert.

joseph_l
Angehängte Dateien
Dateityp: zip zwi_142.zip (6,7 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: TWebbrowser mehrmals aufrufen

  Alt 12. Apr 2006, 16:26
Hallo Joseph,

ich habe mir dein Demoprojekt angesehen. Wenn du mit "funktioniert einmal" meinst, dass die Umschaltung zwischen "web" und "kein web" im Menü nur einmal funktioniert, dann muss ich dich enttäuschen - bei mir unter D7 gibt es keine Probleme. Die Anzeige verhält sich mit jeder Einstellung genau so, wie ich es erwarten würde. Entweder passiert bei dir etwas ganz anderes oder du hast nur eine falsche Erwartungshaltung oder ich habe nicht verstanden auf was ich achten soll.

Für meine Tests habe ich eine eigene XML-Datei und die Standardtransformation (DEFAULTSS) verwendet. Vielleicht testet ja noch jemand mit der gleichen Delphi-Version.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:21 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