Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание пунктов меню, их поиск и перемещение 
V
    Опции темы
Pavelbej
Дата 30.3.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Здравствуйте!

Задача состоит в том, чтобы создать в контекстном меню максимум 10 пунктов с записями о последних посещяемых веб страницах. Но при этом, нужно следить чтобы записи в меню не повторялись.
То есть, если я заходил на адрес 
1
2
3

а потом снова на 3, то пункты должны расположится уже так:
3
1
2

а не:
3
1
2
3

Логика вроде такая:

Если (ссылок меньше 10) тогда
       если (такой ссылки нет) тогда
                добавляем ее
       иначе (перемещяем ее на первую позицию)
Иначе (перемещяем ее на первую позицию)

Вот код:
Код

procedure TForm1.CreateTop10(Descriptions, links: widestring);
var MenuItem1, menuitem: TTntMenuItem;
    i, y: byte;
    exists: boolean;
begin
    exists:=false;
    if PopupTray.Tag<=9 then
    begin
        for i:=0 to PopupTray.Items.Count-1 do 
            if PopupTray.Items[i].Caption=Descriptions then //Если ссылка найдена
            begin
                exists:=true; //этот строчка не выполняется-----------------------------------
                break;
            end;
        if exists then
        begin
               //Перемещяем пункт если ссылка найдена
        end
        else
        begin //Добавляем пункт меню
            MenuItem1:=TTntMenuItem.Create(PopupTray);
            MenuItem1.Caption:=Descriptions;
            MenuItem1.OnClick:=OnClickNewMenuItem;
            PopupTray.Items.Add(MenuItem1);
            PopupTray.Items[MenuItem1.MenuIndex].MenuIndex:=0;

            PopupTray.Tag:=PopupTray.Tag+1;
        end;
    end
    else
    begin
        ...

    end;
end;

    
А проблема собственно в том что поиск ничего не дает, не находит нужную мне запись, одна и та же добаляется снова и снова. Где я ошибся? Стукните меня!
PM MAIL   Вверх
VICTAR
Дата 30.3.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Точно не уверен, но насколько корректно сравнивать AnsiString и WideString?

Добавлено через 1 минуту и 52 секунды
Упс, сорри, не заметил 
Код

MenuItem1, menuitem: TTntMenuItem;

PM MAIL   Вверх
aktuba
Дата 30.3.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(Pavelbej @  30.3.2008,  14:56 Найти цитируемый пост)
Если (ссылок меньше 10) тогда
       если (такой ссылки нет) тогда
                добавляем ее
       иначе (перемещяем ее на первую позицию)
Иначе (перемещяем ее на первую позицию)

Наверное все-таки немного иначе:

Если (ссылок меньше 10) тогда
       если (такой ссылки нет) тогда
                добавляем ее
       иначе (перемещяем ее на первую позицию)
Иначе
       удаляем последнюю ссылку
       добавляем новую ссылку и помещаем ее на первую позицию

А вообще, мне например, твой код ничего не дал. Сделай тестовый проект и выложи - проще будет.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Pavelbej
Дата 30.3.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Вот выложил.

Существующие записи не должны добавлятся, а не выходит. Что-то с поиском, или я упустил чего?

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Test.zip 6,28 Kb
PM MAIL   Вверх
Rrader
  Дата 30.3.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Код

Procedure TForm1.CreateTop10(Descriptions: String);
Var
  MenuItem1, MenuItem2: TMenuItem;
Begin
  MenuItem2 := PopupTray.Items.Find(Descriptions);
  If Not Assigned(MenuItem2) Then
    If (PopupTray.Items.Count < 10) Then
    Begin
      MenuItem1 := TMenuItem.Create(PopupTray);
      MenuItem1.Caption := Descriptions;
      PopupTray.Items.Add(MenuItem1);
      PopupTray.Items[MenuItem1.MenuIndex].MenuIndex := 0;
    End
    Else
  Else MenuItem2.MenuIndex := 0;
End;



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Pavelbej
Дата 30.3.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Rrader,   smile . Спасибо!

Вот результат:
Код

procedure TForm1.CreateTop10(Descriptions, links: widestring);
var MenuItem1, MenuItem2: TMenuItem;
    i, y: byte;
    exists: boolean;
begin
    MenuItem2 := PopupTray.Items.Find(Descriptions);
    if not Assigned(MenuItem2) then
    begin
        if PopupTray.tag < 10 then
        begin
            MenuItem1 := TTntMenuItem.Create(PopupTray);
            MenuItem1.ImageIndex:=1;
            MenuItem1.Caption:=Descriptions;
            MenuItem1.Hint:=links;
            MenuItem1.OnClick:=OnClickNewMenuItem;
            PopupTray.Items.Add(MenuItem1);
            PopupTray.Items[MenuItem1.MenuIndex].MenuIndex := 0;
            PopupTray.Tag:=PopupTray.Tag+1;
        end
        else
        begin
            PopupTray.Items.Delete(PopupTray.Tag-1);
            MenuItem1 := TTntMenuItem.Create(PopupTray);
            MenuItem1.ImageIndex:=1;
            MenuItem1.Caption:=Descriptions;
            MenuItem1.Hint:=links;
            MenuItem1.OnClick:=OnClickNewMenuItem;
            PopupTray.Items.Add(MenuItem1);
            PopupTray.Items[MenuItem1.MenuIndex].MenuIndex := 0;
        end;
    end
    else MenuItem2.MenuIndex := 0;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.