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

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

Моё меню [D7, WinXP]


Страницы:   1 2

Borland ©   (2005-08-07 09:28:00) 

Как сделать чтобы при правом щелчке по форме появлялось моё всплывающее меню,


Borlan   (2005-08-08 15:13:00) [1]

Большое спасибо!


Borlan   (2005-08-08 15:12:00) [2]

Большое спасибо!


Ega23   (2005-08-08 15:02:00) [3]

Например, можно так. Только сначала придётся фокус в конкретный Edit перевести.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Menus;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Edit4: TEdit;
   Edit5: TEdit;
   PopupMenu1: TPopupMenu;
   hhh1: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure EditClear(Sender : TObject);
   procedure hhh1Click(Sender: TObject);
   procedure EditEnter(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }

  ActiveEdit:TEdit;

 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.EditClear(Sender: TObject);
begin
if (Sender is TEdit) then TEdit(Sender).Text:='';
end;

procedure TForm1.EditEnter(Sender: TObject);
begin
if (Sender is TEdit) then ActiveEdit:=TEdit(Sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
 if (Components[i] is TEdit) then
  begin
   TEdit(Components[i]).OnDblClick:=EditClear;
   TEdit(Components[i]).OnEnter:=EditEnter;
   TEdit(Components[i]).PopupMenu:= PopupMenu1;
  end;
end;

procedure TForm1.hhh1Click(Sender: TObject);
begin
if assigned(ActiveEdit) then ActiveEdit.Text:='';
end;

end.


Borlan   (2005-08-08 14:18:00) [4]

А можно показать на моём случае?


Ega23   (2005-08-08 14:06:00) [5]

А это потому, что в моём случае в качестве Sender выступал именно TEdit, а в твоём - PopupMenuItem.


Borlan   (2005-08-08 14:00:00) [6]

Я подумал и подставил
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TEdit) then
 TEdit(Components[i]).OnDblClick:=EditClear;
end;


В обработчик по нажатию кнопки на PopupMenu1, но не срабатывает!
Вернее по Двойному нажатию на Edit'е а, не по нажатию на кнопке всплывающего меню. чего-то до меня не доходит как сделать правильно.


Ega23   (2005-08-08 13:34:00) [7]

А подумать чуть-чуть?


Borlan   (2005-08-08 13:28:00) [8]

Мне надо с использованием PopupMenu


Ega23   (2005-08-08 13:21:00) [9]

или может можно как-то сделать чтобы при шелчке по Edit1...5 очищался только он?

Можно. Пример:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Edit4: TEdit;
   Edit5: TEdit;
   procedure FormCreate(Sender: TObject);
   procedure EditClear(Sender : TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.EditClear(Sender: TObject);
begin
if (Sender is TEdit) then TEdit(Sender).Text:='';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
 if (Components[i] is TEdit) then
  TEdit(Components[i]).OnDblClick:=EditClear;
end;

end.


Borlan   (2005-08-08 13:08:00) [10]

Возникла ещё одна проблема:
У меня 5 Edit'ов я создаю popupmenu1 в котором есть пункт который должен очищать Edit. Так вот мне что нужно для каждого Edit'а на форму кидать по popupmenu, или может можно как-то сделать чтобы при шелчке по Edit1...5 очищался только он?


Borlan   (2005-08-08 13:03:00) [11]

Спасибо. Всё получилось.


Leonid Troyanovsky   (2005-08-07 22:33:00) [12]


> Borlan   (07.08.05 22:22) [8]
> Ну я не понимаю как сделать [1].
> Поэтому нужен код.


Поищи в своем компьютере menu.dpr

--
Regards, LVT.


Dimp   (2005-08-07 22:29:00) [13]

Form1.PopupMenu:=PopupMenu1;


Borlan   (2005-08-07 22:23:00) [14]

Ой. простите


Borlan   (2005-08-07 22:22:00) [15]

Ну я не понимаю как сделать [1].
Поэтому нужен код.


Borlan   (2005-08-07 22:22:00) [16]

Ну я не понимаю как сделать [1].
Поэтому нужен код.


Borlan   (2005-08-07 22:21:00) [17]

Ну я не понимаю как сделать [1].
Поэтому нужен код.


Borlan   (2005-08-07 22:21:00) [18]

Ну я не понимаю как сделать [1].
Поэтому нужен код.


Alexander Panov   (2005-08-07 14:30:00) [19]

Borland ©   (07.08.05 14:11) [3]
Вот если что не получится, тогда пожалуйста.


Borland   (2005-08-07 14:11:00) [20]

А можно какой нибудь пример, а то так с ходу ...


Страницы:   1 2

Наверх

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