Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Избранное как в IE [D7, Win95/98]


Konstantin ©   (2005-01-03 06:53:00) 

Подскажите как сделать сабж, плиз. Получить список закладок и добавлять новые я могу, но как сделать это в MainMenu динамически???


volser   (2005-01-04 22:31:00) [1]

В OnShow создавай их сам. В чем проблема?


Konstantin   (2005-01-04 13:41:00) [2]

Функция GetIEFavourites для получения закладок(см. выше)

function GetIEFavourites(const favpath: string): TStrings;
var
 searchrec: TSearchrec;
 str: TStrings;
 path, dir, filename: string;
 Buffer: array [0..2047] of Char;
 found: Integer;
begin
 str := TStringList.Create;
 path := FavPath + '\*.url';
 dir := ExtractFilepath(path);
 found := FindFirst(path, faAnyFile, searchrec);
 while found = 0 do
 begin
   SetString(filename, Buffer, GetPrivateProfileString('InternetShortcut',
     PChar('URL'), nil, Buffer, SizeOf(Buffer), PChar(dir+searchrec.name)));
   str.Add(filename);
   found := FindNext(searchrec);
 end;
 found := FindFirst(dir + '\*.*', faAnyFile, searchrec);
 while found=0 do
 begin
   if ((searchrec.Attr and faDirectory) > 0) and (searchrec.name[1] <> '.') then
     str.AddStrings(GetIEFavourites(dir + '\' + searchrec.name));
   found := FindNext(searchrec);
 end;
 FindClose(searchrec);
 Result := str;
end;


Konstantin   (2005-01-03 23:49:00) [3]

Как динамически создавать пункты и подпункты меню я умею, а вот чтобы они сами создавались по имени закладки при запуске приложения что-то не догоняю (((


Konstantin   (2005-01-03 22:58:00) [4]

А вот так получить закладки:

procedure TForm1.Button2Click(Sender: TObject);
var
 pidl: PItemIDList;
 FavPath: array [0..MAX_PATH] of char;
begin
 SHGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pidl);
 SHGetPathFromIDList(pidl, favpath);
 ListBox1.Items := GetIEFavourites(StrPas(FavPath));//Где их показать.  
end;

Тут у меня и трабл. Не могу в MainMenu добавить динамически, чтобы пункты были по названию закладки, а по клику происходил переход на нужный URL.


Konstantin   (2005-01-03 22:53:00) [5]

Hi!!!
У меня так:

procedure TForm1.Button1Click(Sender: TObject);
const
 NotAllowed: set of Char = ['"'] + ['/'] + ['\'] + ['?'] + [':'] + ['*'] +
   ['<'] + ['>'] + ['|'];
var    url: TStringList;
 fav, title: string;
begin
 fav := Load('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Favorites');
 url := TStringList.Create;
 try
   url.Add('[InternetShortcut]');
   url.Add('URL=' + Form1.Webbrowser1.LocationURL);
   url.Add('WorkingDirectory=' + WinDir());
   url.Add('IconIndex=0');
   url.Add('ShowCommand=7');
   url.Add('IconFile=' + GetSysDir() + '\url.dll');
   title := Memo1.Text; //Название закладки
   url.SaveToFile(fav + '\' + title + '.url');
 finally
   url.Free;
 end;


volser   (2005-01-03 11:16:00) [6]

Подскажи, а как вообще управлять избранным (получить список и добавить новые)?


 Popup_Link: TPopupMenu;

procedure pop_item1Click(Sender: TObject);

Var
 pop_item, sub_item: TMenuItem;

 pop_item := TMenuItem.Create(Popup_Link);
 pop_item.OnClick:=pop_item1Click;
 pop_item.Caption:='Title1';
 Popup_Link.Items.Add(pop_item);

 sub_item := TMenuItem.Create(Popup_Link);
 sub_item.OnClick:=pop_item2Click;
 sub_item.Caption:='Title2';
 pop_item.Add(sub_item);


Наверх

Титульная страница Поиск, карта сайта Написать письмо