Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.07.2009, 13:28
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию Вопрос по PopUpMenu

Прошу помощи у знающих людей.
Умаялся с этой задачей...
Итак суть.Необходимо сделать следующее:
При нажатии кнопки - выскакивает попап меню со строками количество и название которых берется из тхт файла. Меню появляется соотвественно у указателя мыши.

Вот что у меня получилось...

Код:
var
  Form1: TForm1;
  mousP2: TPoint;
  f:TextFile;
  s:string;
  i: integer;

procedure TForm1.Button1Click(Sender: TObject);
 begin
   AssignFile(F, 'items.txt');
    Reset(f);
     While not eof(f) do
     begin
      ReadLn(f, s);
       with PopUpMenu1.Items do
        begin
         i:=i+1;
         Add(NewItem(s,0,False,True,nil,0,'MenuItem'+ inttostr(i)));
         GetCursorPos(mousP2);
         PopupMenu1.Popup(mousP2.X, mousP2.Y);
        end;
     end;
 end;

procedure TForm1.FormCreate(Sender: TObject);
 begin
  i:=0;
 end;
end.

Где-то ошибка.
В итоге в попап меню одна строчка - последняя. В то время как в файле - три.
Ответить с цитированием
  #2  
Старый 12.07.2009, 13:29
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Надеюсь объяснил понятно, что к чему...
Ответить с цитированием
  #3  
Старый 12.07.2009, 13:44
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Что-то не очень понятно, зачем вы вызываете метод Popup внутри цикла while. Вынесите вызов этого метода вниз, за пределы цикла.
Ответить с цитированием
  #4  
Старый 12.07.2009, 17:19
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Спасибо.Действительно, что-то совсем очевидное решение

Еще была проблема - повторное создание пунктов меню. То есть, одно нажатие на кнопку - 3 пункта, второе 6 и т.д.
Вылечил - добавлением PopupMenu1.Items.Clear;
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #5  
Старый 12.07.2009, 18:09
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Вопрос в догонку.
Как сделать так, что бы при щелчке на созданный пункт меню, его заголовок заносился в Edit ?

Код:
Add(NewItem(s,0,False,True,MenuItemClick,0,'MenuItem'+ inttostr(i)));
- это созданный пункт меню.
MenuItemClick - это соотвественно процедура обработки нажатия.

Она будет одна на все пункты меню

Код:
procedure TForm1.MenuItemClick(Sender: TObject);
begin
Edit1.Text:= _______
end;

И что нужно писать в _______? Как идентифицировать нажатый пункт меню? Есть идеи?
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #6  
Старый 12.07.2009, 19:04
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Код:
Edit1.Text:= (Sender as TMenuItem).Caption;
Ответить с цитированием
  #7  
Старый 12.07.2009, 19:45
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Огромное спасибо!
Работает!

Сначала была проблема...
Вставлялся текст в виде

1&27.0.0.1
&192.168.0.1
1&92.168.0.1

Срабатывало свойство попапа - Autohotkeys.
Для лечения - сменить его с maAutomatic на maManual

Еще раз спасибо. Возьму прием на вооружение!
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter