Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

Пишу компонент TButton + TPopupMenu   Найти похожие ветки 

 
GhostDog   (2003-11-14 11:41) [0]

Всем привет !
Подскажите кто может, ниже приведен листинг моего полуфабриката ничего сложного. Смылс такой, Кнопка у нее есть свойство Link куда записывается любое приложение которое надо запустить при нажатии на кнопку. После запуска имя этого приложения добавляется в PopupMenu(история запусков) и мне необходимо
при нажатии на элемет меню это приложение повторно занаво запускалось. Дак вот как отловить при нажатии на любой элемент его имя или заголово а потом в зависимости что у него в заголовке запускать необходимое приложение !

type
TMyButton = class(TButton)
private
fLink : string;
{ Private declarations }
protected
NewItem : TMenuItem;
MyPopupMenu : TPopupMenu;
Access,Twice : Boolean;
History : array of String;
i: Integer;
{ Protected declarations }
public
{ Public declarations }
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Click; override;
procedure Start;
procedure ReOpen(Sender: TObject);
published
property Link : string
read fLink write fLink ;
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("Standard", [TMyButton]);
end;

{ TMyButton }

procedure TMyButton.Click;
var
j: Integer ;
begin
if not Access then Start;
if Link <> "" then
begin
for j := 1 to 99 do
if History[j] = Link then
begin
Twice := true;
break;
end else Twice := false;
if not Twice then
begin
History[i] := Link;
inc(i);
NewItem := TMenuItem.Create(self);
NewItem.Caption := Link ;
NewItem.Name := "item"+IntToStr(i);
NewItem.Tag := i-1;
MyPopupMenu.Items.Add(NewItem);
end;
ShellExecute(1, "open", PChar(Link), nil, nil, SW_SHOWNORMAL);
end;
Inherited Click;
end;

procedure TMyButton.ReOpen;
begin
Caption:= MyPopupMenu.Items[0].Caption ;
end;

procedure TMyButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
var
k:integer;
begin
if (ssRight in Shift) and Access then begin
with Mouse do
MyPopupMenu.Popup(CursorPos.X,CursorPos.Y);
******MyPopupMenu.Items[0].OnClick := ReOpen;************
//как сделать чтобы при нажатии на элемент он определял его имя
//а не как у меня написано как конкретный элемент !!!
end;

end;

procedure TMyButton.Start;
begin
i := 1;
Access := true;
SetLength(History,100);
MyPopupMenu := TPopupMenu.Create(self);
end;

end.


 
Alles55   (2003-11-14 12:22) [1]

Ato napisano v Delphi Help>
procedure TForm1.AddButtonClick(Sender: TObject);
var
index: Integer;
NewItem: TMenuItem;
begin
for index := 0 to 3 do
begin
NewItem := TMenuItem.Create(PopupMenu1); // create the new item
PopupMenu1.Items.Add(NewItem);// add it to the Popupmenu
NewItem.Caption := "Menu Item " + IntToStr(index);
NewItem.Tag := index;
NewItem.OnClick = PopupMenuItemsClick;// assign it an event handler
end;

end;

procedure TForm1.PopupMenuItemsClick(Sender: TObject);
begin
//ATO TO TEBE NUJNO !!!
with Sender as TMenuItem do
begin
case Tag of
0: ShowMessage("first item clicked");
1: ShowMessage("second item clicked");
2: ShowMessage("third item clicked");
3: ShowMessage("fourth item clicked");
end;
end;
end;

To edit or destroy an item, grab its pointer via the Items property.

procedure TForm1.EditButtonClick(Sender: TObject);
var
ItemToEdit: TMenuItem;
begin
ItemToEdit := PopupMenu.Items[1];
ItemToEdit.Caption := "Changed Caption";
}

procedure TForm1.DestroyButtonClick(Sender: TObject);
var
ItemToDelete: TMenuItem;
begin
ItemToDelete := PopupMenu.Items[2];
ItemToDelete.Free;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
3-78812
Vi0let
2003-11-05 08:29
2003.11.24
Нужно: DBComboBox отображает наименования, а возвращает код


1-78943
AntonVS
2003-11-12 09:43
2003.11.24
в StringGrid запихать разные объекты


1-79011
SkyRanger
2003-11-14 10:06
2003.11.24
Шаринг и 98 мастай


14-79124
Style
2003-10-28 16:13
2003.11.24
SM80, SM300


1-79018
Ru
2003-11-13 16:52
2003.11.24
Как скопировать текст из JvxRichEdit?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский