|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Вопрос по 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
|
||||
|
||||
Надеюсь объяснил понятно, что к чему...
|
#3
|
|||
|
|||
Что-то не очень понятно, зачем вы вызываете метод Popup внутри цикла while. Вынесите вызов этого метода вниз, за пределы цикла.
|
#4
|
||||
|
||||
Спасибо.Действительно, что-то совсем очевидное решение
Еще была проблема - повторное создание пунктов меню. То есть, одно нажатие на кнопку - 3 пункта, второе 6 и т.д. Вылечил - добавлением PopupMenu1.Items.Clear; Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие |
#5
|
||||
|
||||
Вопрос в догонку.
Как сделать так, что бы при щелчке на созданный пункт меню, его заголовок заносился в Edit ? Код:
Add(NewItem(s,0,False,True,MenuItemClick,0,'MenuItem'+ inttostr(i))); MenuItemClick - это соотвественно процедура обработки нажатия. Она будет одна на все пункты меню Код:
procedure TForm1.MenuItemClick(Sender: TObject); begin Edit1.Text:= _______ end; И что нужно писать в _______? Как идентифицировать нажатый пункт меню? Есть идеи? Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие |
#6
|
|||
|
|||
Код:
Edit1.Text:= (Sender as TMenuItem).Caption; |
#7
|
||||
|
||||
Огромное спасибо!
Работает! Сначала была проблема... Вставлялся текст в виде 1&27.0.0.1 &192.168.0.1 1&92.168.0.1 Срабатывало свойство попапа - Autohotkeys. Для лечения - сменить его с maAutomatic на maManual Еще раз спасибо. Возьму прием на вооружение! Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие |