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

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

Добавление нового пункта в pop-up меню [D5, XP]


Страницы:   1 2 3

DJ Kondakov ©   (2008-04-25 12:12:00) 

Подскажите, каким образом можно добавить пункт в меню? Функция ADD предполагает наличие уже готового пункта.


Anatoly Podgoretsky   (2008-04-28 13:18:00) [21]

> DJ Kondakov  (28.04.2008 13:12:29)  [29]

А если вернуться назад, в начало начал?


DJ Kondakov   (2008-04-28 13:12:00) [22]

Проблема в том, что я начинал изучение Дельфи не с основ ООП, а сразу с компонентов и процедур. Поэтому мне сейчас сложновато понять, что такое "метод формы"


Kolan   (2008-04-28 13:10:00) [23]

> у меня Дельфи английский

Да, сочувствую… :)


Palladin   (2008-04-28 13:05:00) [24]

ууу... молкаю...


DJ Kondakov   (2008-04-28 13:04:00) [25]

Как создать метод формы?


Palladin   (2008-04-28 13:03:00) [26]

создать метод формы и в методе формы вызывать процедуру из dll


DJ Kondakov   (2008-04-28 13:01:00) [27]

Е-мое, у меня Дельфи английский, я в инглише почти ничего (почти!) не смыслю. Объясните мне, дураку, как сделать, чтобы при нажатии на динамически созданный пункт меню выполнялась процедура из DLL-модуля!


Palladin   (2008-04-28 12:55:00) [28]

свойство TMenuItem.OnClick, как ты видишь из справки (я надеюсь, что ты в нее заглядываешь), имеет тип TNotifyEvent, тип TNotifyEvent в свою очередь означает Procedure (Sender:TObject) of Object, где для тебя новое это of Object, про которое ты конечно так и не почитал, так вот, приставка of Object, означает, что эта процедура не просто так сама по себе процедура, она метод конкретного объекта


DJ Kondakov   (2008-04-28 12:51:00) [29]

То есть я сейчас должен описать эту самую MainProc так:
type
MainProc = procedure of object;


{RASkov}   (2008-04-28 11:38:00) [30]

> [19] DJ Kondakov   (28.04.08 11:26)
> > Сделать процедуру - методом.
>
> Поподробнее, пожалуйста...

Такое не рассказывают... Это нужно знать...
Процедура "внутри" класса - метод. А просто процедура в программе - регулярная называется.
т.е.
RegProc = procedure;
MetodProc = procedure of Object;


Palladin   (2008-04-28 11:38:00) [31]

of object + F1


DJ Kondakov   (2008-04-28 11:26:00) [32]


> Сделать процедуру - методом.

Поподробнее, пожалуйста...


Leonid Troyanovsky   (2008-04-28 10:57:00) [33]


> DJ Kondakov   (28.04.08 06:33) [16]

> mainproc - это процедура, адрес которой получаю из DLL-ки.
>  Возникает ошибка компиляции Incompatible types: method
> pointer and regular procedure.
> Что делать?

Не передавать адреса методов из библиотеки.
Хотя, есть более радикальный способ - разместить весь
код в экзешнике, т.е., отказаться от оной длл.

--
Regards, LVT.


Ega23   (2008-04-28 09:40:00) [34]

Сделать процедуру - методом.


DJ Kondakov   (2008-04-28 06:33:00) [35]

А вот новая проблема: пишу
var
mainproc:procedure;
begin
...
onClick:=mainproc;
...
mainproc - это процедура, адрес которой получаю из DLL-ки. Возникает ошибка компиляции Incompatible types: method pointer and regular procedure.
Что делать?


ANB   (2008-04-25 15:23:00) [36]


> {RASkov} ©   (25.04.08 12:33) [12]

Да и с первого раза понятно было :)
Хотя и переменная ничем не мешает.


ZENsan   (2008-04-25 13:10:00) [37]

Да.. на самом деле.. если захотеть можно в космос полететь.. :)


{RASkov}   (2008-04-25 12:35:00) [38]

procedure TForm1.Button1Click(Sender: TObject);
begin
 PopupMenu1.Items.Add(TMenuItem.Create(PopupMenu1));
 with PopupMenu1.Items[PopupMenu1.Items.Count-1] do begin
  Caption:='Item '+IntToStr(PopupMenu1.Items.Count);
  OnClick:=Button1Click;
 end;
end;


{RASkov}   (2008-04-25 12:33:00) [39]

> [8] ANB   (25.04.08 12:17)
> Хотя не. Не получится совсем без переменной.

begin
PopupMenu1.Items.Add(TMenuItem.Create(PopupMenu1));
with PopupMenu1.Items[PopupMenu1.Items.Count-1] do begin
 Caption:='asdasdas';
 OnClick:=хххххх;
end;
end;
:)


Ega23   (2008-04-25 12:29:00) [40]


var
 NewItem: TMenuItem;
 I : integer;
begin
 { first create the separator }
 NewItem := TMenuItem.Create(Self);
 NewItem.Caption := '-';
 { add the new item to the Windows menu }
 Windows.Add(NewItem);
 { now create and add a menu item for each form }
 for  I := 0 to Screen.FormCount-1 do
 begin
   NewItem := TMenuItem.Create(Self);
   NewItem.Caption := Screen.Forms[I].Name;
   Windows.Add(NewItem);

 end;

end;


Страницы:   1 2 3

Наверх

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