Страница 1 из 1

Выбрать переменную в зависимости от свойств объекта [Решено]

СообщениеДобавлено: 09.03.2011 11:51:32
KOL48
Здравствуйте.

Имеется форма с несколькими объектами TButton. Также имеется объект TPopupMenu для организации контекстного меню.

При правом клике на любом объекте TButton, появляется конекстное меню. Каждый пункт меню (их четыре) будет запускать процесс iexplorer.exe с различными параметрами. Один из параметров -- IP-адрес, который, разумеется, разный у разных объектов TButton. IP-адреса объектов статические, задаются в переменных однажды, при запуске программы.

Вопрос: каким образом в строку запуска IE подставлять IP-адрес в зависимости от объекта, на котором произведен правый клик? Можно ли для этого использовать PopupMenu1.PopupComponent.Name (ведь имя уникально у каждого TButton)? Если да, то каким образом?

Спасибо.

Re: Выбрать переменную в зависимости от свойства объекта

СообщениеДобавлено: 09.03.2011 12:38:37
Mr.Smart
Код: Выделить всё
  case PopupMenu1.PopupComponent.Tag of
   0:
   1:
   ....

соответственно прописать у Кнопок свойства Tag.

Re: Выбрать переменную в зависимости от свойства объекта

СообщениеДобавлено: 09.03.2011 12:41:13
Maxizar
Ну самый простой способ – это решить задачу в лоб:
Иметь для каждой кнопки свое меню.

2. Можно и в вашем случае Нужно использовать значение Tag у кнопки.. Сво-во Тэг как раз и нужно для подобных вещей, чтобы различить какой компонент мы юзаем, в данном случае при вызове меню…
Для этого в самом меню… мы должны при действии разобрать значение тэга и сделать правильные подстановки..
Пример:
Форма, две кнопки + одно меню. У каждой кнопки свое уникальное (если нужно уникальное действие для меню) значение поля Тэг… при клике на пункте меню в Название формы пишем на какой кнопке было вызвано меню…. Вы же будите делать свои действия скажем подстовлять свои IP.
Так же добавил как вы изночально хотели через Name.. можно и так.. но я бы сделал через Tag.
Форма:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    MenuItem1: TMenuItem;
    PopupMenu1: TPopupMenu;
    procedure MenuItem1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.MenuItem1Click(Sender: TObject);
begin
  Caption:=IntToStr(PopupMenu1.PopupComponent.Tag);
   Caption:= Caption+ '  Name= '+ PopupMenu1.PopupComponent.Name;
end;

end.


PS. Если проблема решена.. подправте название темы на: Выбрать переменную в зависимости от свойства объекта[Решено]. Спасибо это поможет другим.
PS2. Опередили... :)

Re: Выбрать переменную в зависимости от свойства объекта

СообщениеДобавлено: 09.03.2011 12:49:00
Vadim
KOL48
А Вы этот самый IP-шник присвойте свойству Caption кнопки, тогда вообще никаких дополнительных переменных не нужно. :)