Re: Browser programmieren
Also ich hab bisi rumgesearcht und folgendes gefindet:
Hier wurde das Problem irgendwie gelöst, bloss es ist für mich etwas zu hoch. 1. Ich kenne keine Komponente, die TBrowser heisst, nur TWebBrowser (vielleicht sind ja beide gleich?) 2. Was ist "Seitehinzufgen1Click" - ein Button, MenuItem oder... 3. Und vor allem - was zum Geier ist "TBrowser.spSkinListBox1ListBoxDblClick", wie erstellt man sowas? Ne ListBox hab ich schon. Daten aus dem Adressen Feld können dort abgelegt werden und werden beim FormCreate geladen. Vielleicht kann mir jemand sagen wie ich zu Laufzeit die MenuItems zur MainMenu hinzufügen kann - wäre auch hilfreich. Ich bin für alles offen. Danke! |
Re: Browser programmieren
Also ich kann dein Problem nicht ganz nachvollziehen. Du kannst doch alle Favouriten in einer Datei hinterlegen und aus dieser laden und schreiben.
Delphi-Quellcode:
Klappt wunderbar, müsstest du nur noch auf deine Verhältnise einstellen ;)
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; Button1: TButton; moep1: TMenuItem; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var NewItem : TMenuItem; begin NewItem := TMenuItem.Create(MainMenu1); //Zuweisung des Parents und erstellen des MenuItems NewItem.Caption := 'foobar'; //Name des MenuItems NewItem.Tag := 1; //Glaube hier wird die Position des MenuItems zugewiesen newItem.onClick := ClickMe; //damit wird die Prozedur ClickMe ausgeführt, wenn auf das Item geklickt wird moep1.Add(newItem); //Hinzufügen zum Menupunkt "moep" end; end. Und bitte : Editiere deine Einträge, solang diese nicht älter als 24 Tage sind. Und dann noch was: Eigentlich bloß eine Frage pro Thread *g Grüße aus Dresden Edit1: Kommentare zum besseren Verständnis hinzugefügt Edit2: Ich rate dir, alle Favouriten in einer Datei zu speichern. Diese kannst du mit einer StringList laden und somit auch bearbeiten und wieder speichern.
Delphi-Quellcode:
StringList.LoadFromFile(filename);
Delphi-Quellcode:
StringList.SaveToFile(filename);
|
Re: Browser programmieren
Danke für die Hinweise, bin erst kurz im Forum. Werde sie zu beachten.
Nun zum Code. Ja ma kann es auch mit StringList machen, ich habs eben mit ListBox probiert. Aber egal. Mir geht es darum, die einträge aus der StringList (bzw. ListBox) als die Menupunkte darzustellen. Sie werden ja bereits abgespeichert in fav.ini und von dort gelanden. Aber eben in die STRINGLIST und Nicht in MAINMENU - das ist mein Problem. Sorry, dass ich dich mit meinem Unwissen nerve, aber ich komme einfach nicht weiter und bin etwas verzweifelt. Edit1: Warte mal ich glaub, ich habs. Einen Moment noch... |
Re: Browser programmieren
Die Daten müssen vorerst in ein StringList, um von dort aus in das MainMenu geschrieben werden.
Dabei gehst du wie folgt vor.
Delphi-Quellcode:
So ungefähr (code ungetestet)
StringList.Create;
StringList.LoadFromFile(filename); for i:= 0 to StringList.Count - 1 do begin newItem := TMenuItem.Create(MainMenu); newItem.Caption := StringList.Strings[i]; newItem.Tag := i; newItem.onClick := GoToFavURL; //oder sonstewie MenuItem.Add(newItem); end; |
Re: Browser programmieren
Ich habs! Und so Funzt es:
Laden der Favoriten:
Delphi-Quellcode:
Hinzufügen einer Adresse zu den Favoriten:
procedure TForm1.FormCreate(Sender: TObject);
var NewItem : TMenuItem; begin StringList := TStringList.Create; StringList.LoadFromFile('./Favoriten/fav.ini'); for i:= 0 to StringList.Count - 1 do begin newItem:=TMenuItem.Create(favoriten1); // favoriten1 ist mein menupunkt Favoriten newItem.Caption := StringList.Strings[i]; newItem.Tag := i; newItem.onClick := clickme; //ClickMe soll der Link des jeweiligen Favoritseintrages sein favoriten1.Add(newItem); end; end;
Delphi-Quellcode:
Was noch fehlt, ist die Verlinkung der Favoriten mit z.B. Procedure Clickme
procedure TForm1.Hinzufgen1Click(Sender: TObject); // Hinzufgen1 ist mein menupunkt im Menu Favoriten
var NewItem : TMenuItem; begin NewItem := TMenuItem.Create(mm1); //Zuweisung des Parents und erstellen des MenuItems NewItem.Caption := edtadresse.Text; //Name des MenuItems NewItem.Tag := 0; //Glaube hier wird die Position des MenuItems zugewiesen newItem.onClick := ClickMe; //damit wird die Prozedur ClickMe ausgeführt, wenn auf das Item geklickt wird favoriten1.Add(newItem); //Hinzufügen zum Menupunkt "favoriten" StringList.Add(edtadresse.Text); StringList.SaveToFile('./Favoriten/Fav.ini'); end; Meine Idee:
Delphi-Quellcode:
Oder so änlich. Bei mir spuckt er nen Fehler raus: Zugriffsverletzung blablabla...
Procedure TForm1.ClickMe(Sender: TObject);
begin WebBrowser1.Navigate(newitem.caption); end; Weiss jemand wie das Verlinken der Menupunkte geht? |
Re: Browser programmieren
Die Zugriffsverletzung wird wohl kommen, weil du die StringListe nirgends deklariert hast?
Delphi-Quellcode:
Hiermit übergibst du aus dem MainMenu das erste item und davon wiederum das erste Unteritem.
procedure TForm1.clickMe(sender: TObject);
begin WebBrowser1.Navigate(MainMenu.Items[0].Items[0].Caption); end; end. Eventuell solltest du noch die passende ID übergeben und die Procedure somit erweitern :) Grüße |
Re: Browser programmieren
Danke. Es funzt zwar, nur die Verlinkung ist ist auf den ItemXY beschränkt. Ich Überleg grad folgendes: die caption vom jeweiligem Item ist gleich die Adresse, auf die der Browser gehen soll (sonst würde es ja nicht gehen). Könnte man vielleicht sowas in der Art machen:
var i: TMenuItem; begin i:=mainmenu1.selectedItem; //keine Ahnung ob es sowas gibt wbb.Navigate(mainmenu1.Items[0].Items[i].Caption); end; Ist nur n Beispiel(ungetestet) |
Re: Browser programmieren
Vergiss nicht am TMainMenu die AutoHotkeys auf maManual umzustellen!
Wenn du mehrere Items hast kannst du das so machen:
Delphi-Quellcode:
Die Verwendung der Delphi-Hilfe würde dich sehr viel weiter bringen ;)
procedure TForm1.ClickMe(Sender: TObject);
begin WebBrowser.Navigate(self.httpwwwgooglede1.Caption); end; (F1). Grüße |
Re: Browser programmieren
Hi @ alle.
@ quendolineDD Also ich hab Delphi Online Hilfe benutzt. Ich habe versucht noch örgentwas sinvolles zu "navigate" oder zu "self" rauszufinden. Er spuckt mir dann örgentein Krempel, vonwegen oleVariant und Automatisierte Abläufe, von dem ich sowieso kein Peil hab. Dazu ist auch schön im Delphi-Fach-Timbuktisch geschrieben. Ich bin ein einfacher Mensch und verstehe diesen Fach-esimpel nicht. Deswegen wende ich mich an die aus dem Forum. Die Leute hier können mir das Gleiche, was in der Hilfe steht, in normaler "Umgangssprache sagen", oder direkt den Code schreiben. Ich bastelle damit rum und so verstehe ich, wie der oder der Befehl funktioniert. Ich habe angefangen Delphi zu lernen erst in diesem Schuljahr und bin mittlerweile dabei ein Browser zu estellen. Ich persönlich bin der Meinung, dass das schon immerhin ein Fortschritt ist. Statt Delphi-Hilfe benutze ich Google, dort findet man auch jede Menge. Ich bin nicht faul zu suchen. Es ist nur so. Ich stelle hier eine Frage, auf die ich eine Antwort von den Leuten, die davon Ahnung haben, erwarte. Zum Code. Beim oben genannten Möglichkeit wird "httpwwwgooglede1" rot unterstrichen - was ist damit gemeint? Und was bedeutet "self"? Folgendes fehlt mir im Moment: Beim Click auf den MenuItemXY soll der Browser zu dessen Caption oder Name navigieren. Bitte um Verständnis für mein Unwissen. |
Re: Browser programmieren
Zitat:
Zitat:
Delphi-Quellcode:
procedure TForm1.MenuClick(Sender: TObject);
begin WebBrowser1.Navigate((Sender as TMenuItem).Caption); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 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