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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение KOL48 » 09.03.2011 11:51:32

Здравствуйте.

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

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

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

Спасибо.
Последний раз редактировалось KOL48 09.03.2011 14:07:37, всего редактировалось 1 раз.
KOL48
новенький
 
Сообщения: 14
Зарегистрирован: 16.04.2010 10:10:48

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

Сообщение Mr.Smart » 09.03.2011 12:38:37

Код: Выделить всё
  case PopupMenu1.PopupComponent.Tag of
   0:
   1:
   ....

соответственно прописать у Кнопок свойства Tag.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение Maxizar » 09.03.2011 12:41:13

Ну самый простой способ – это решить задачу в лоб:
Иметь для каждой кнопки свое меню.

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. Опередили... :)
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

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

Сообщение Vadim » 09.03.2011 12:49:00

KOL48
А Вы этот самый IP-шник присвойте свойству Caption кнопки, тогда вообще никаких дополнительных переменных не нужно. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

Рейтинг@Mail.ru