![]() |
Re: Eigenes Favoriten-Menü
Also ich versteh nicht ganz, was die zwei Versionen sein sollen. Außerdem versuche ich gerade, das ganze mit einem neuen Dateiformat (also nicht *.url) zu machen. Ich möchte eigentlich, dass die Ini-Datei so aussieht:
Code:
Im Menü soll dann ein Eintrag erstellt werden, der "Delphi-Praxis" heißt und als OnClick den Browser "http://www.delphipraxis.net/" laden lässt. Ich hab schon eine Form erstellt, die die Ini-Datei schreibt. Jetzt versteh ich das nicht ganz mit dem
[URL]
Link=http://www.delphipraxis.net/ Name=Delphi-PRAXIS
Code:
Wenn ich den Code so reinschreib, dann kommt ein Fehler.
OnURLMenuItemClick(Sender: TObject);
Kannst du mir da weiterhelfen? Gruß S2B |
Re: Eigenes Favoriten-Menü
1. URL-Dateien tragen normalerweise den Namen, unter dem sie auch im Favoritenmenü auftauchen. Ein separater "name"-Eintrag in ihnen ist daher eigentlich nicht erforderlich. Will sagen: du nimmst den Namen der URL-Datei, entfernst die Endung ".url" und hast die Bezeichnung für den Menüeintrag.
2. Im Hint des Menüeintrags habe ich in Version 1 den Pfad und die Datei gespeichert. In Version 2 (s. Compilerschalter "TINIFILE") öffne ich die URL-Datei als INI und lese die Adresse aus und lege diese im Hint ab. In deinen eigenen Dateien ist das aber wohl der Eintrag "Link", also musst du logischerweise den Befehl:
Delphi-Quellcode:
anpassen.
mii.Hint := ini.ReadString('InternetShortcut','URL','');
3. Das das Menü erst zur Laufzeit erzeugt wird, musst du den Einträgen auch eine Klickprozedur zuweisen. Und das ist "OnURLMenuItemClick". Diese prüft ob der "Sender" ein Menüeintrag ist, und ob er einen Hint hat. Wenn ja, wird "ShellExecute" benutzt um den Hint quasi zu starten. Je nach Version ist das entweder Pfad+URL-Datei (klappt, weil der URL-Typ im System bekannt sein sollte) bzw. direkt die Web-Adresse (klappt auch, weil das Protokoll bekannt sein und ein Programm/Browser zugewiesen sein sollte). Wenn du bspw. den Namen für den Menüeintrag auch aus deiner Datei holen willst, dann musst du
Delphi-Quellcode:
(s. Code) durch den entsprechenden Lesebefehl ersetzen:
mii.Caption := ChangeFileExt(ds.Name,'');
Delphi-Quellcode:
mii.Caption := ini.ReadString('URL','Name','');
Das Problem mit dem Fehler bei "OnURLMenuItemClick" habe ich jetzt nicht verstanden. Was passiert, wenn du was machst? :gruebel: |
Re: Eigenes Favoriten-Menü
Ich hab die Procedure TForm1.OnURLMenuItemClick eingefügt und dann kamen mehrere Fehler:
Code:
Wie muss man die Procedure genau einbauen (du merkst, ich bin "neu" hier)? :oops:
1.
//Da hat er die Procedure nicht gefunden. mii.OnClick := OnURLMenuItemClick; 2. //bei "self" kam ein Fehler. ShellExecute(self.Handle,'open',pchar((Sender as TMenuItem).Hint), nil,nil,SW_SHOWNORMAL); Gruß S2B |
Re: Eigenes Favoriten-Menü
Ach so. Du musst die Prozedur noch als private- ... äh ... Methode/Prozedur deiner Form deklarieren:
Delphi-Quellcode:
Der tatsächliche Form-Name (vor dem Punkt) richtet sich damit nach dem Namen deiner Form. In meinem Fall "TForm1", bei dir kann das evtl. was ganz anderes sein.
type
TForm1 = class(TForm) { ... } private procedure OnURLMenuItemClick(Sender: TObject); procedure LoadLocalFavorites; end; |
Re: Eigenes Favoriten-Menü
Mal wieder das gute alte Problem! Delphi gibt einen Fehler aus, ich weiß aber nicht, was falsch ist:
Code:
Fehler: [Error] Unit1.pas(334): Undeclared identifier: 'OnURLMenuItemClick'
mii.OnClick := OnURLMenuItemClick;
Sonst stimmt alles! Ich hoffe, dass du mir weiterhelfen kannst! Gruß S2B |
Re: Eigenes Favoriten-Menü
Kann mir denn niemand helfen??????
|
Re: Eigenes Favoriten-Menü
Findest Du es nicht ein bisschen unverschämt, nach so kurzer Zeit schon eine Schiebeposting zu tätigen? :evil:
Zeige mal ein bisschen mehr von Deinem Code. Den Interface-Teil z.B. Sonst kann man ja nur raten. |
Re: Eigenes Favoriten-Menü
Sorry, aber ich wollt des Projekt heute abschließen und da hab ich wohl viel zu schnell weitergeschrieben... :wall: Sorry!!
Hier ein Teil meines Codes:
Code:
Ich hoffe, dass jemand ne Antwort weiß! :pale:
type
TForm1 = class(TForm) {...} private FOleInPlaceActiveObject: IOleInPlaceActiveObject; procedure MsgHandler(var Msg: TMsg; var Handled: Boolean); procedure OnURLMenuItemClick(Sender: TObject); {...} procedure TForm1.OnURLMenuItemClick(Sender: TObject); begin if(Sender is TMenuItem) and ((Sender as TMenuItem).Hint <> '') then ShellExecute(self.Handle,'open',pchar((Sender as TMenuItem).Hint), nil,nil,SW_SHOWNORMAL); end; //Im Code zum Suchen der Links: mii.OnClick := OnURLMenuItemClick; Gruß S2B |
Re: Eigenes Favoriten-Menü
Hm, so auf Anhieb sehe ich keinen Fehler. Ist die Funktion, die das Zeugs zuweist, auch ein Member von TForm1?
|
Re: Eigenes Favoriten-Menü
Was soll "Member" in dem Zusammenhang heißen??? Ich kenn mich nicht so mit den ganzen Fachausdrücken aus, bin aber lernfähig :). Also wenn du meinst, dass sie in der Unit1 drinsteht, dann stimmt das! Wenn du meinst, dass man nur von der Unit1 drauf zugreift, dann stimmt das auch!
Gruß S2B |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz