Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

TNotifyEvent   Найти похожие ветки 

 
Steep ©   (2007-04-05 07:44) [0]

Как создать вручную этот самый нотифи?
Неужели нужно создавать такой класс?
TMyClass = class(TObject)
private
protected
public
  constructor Create; override;
  destructor Destroy; override;
published
end;


 
MBo ©   (2007-04-05 08:05) [1]

Задача какая?


 
Steep ©   (2007-04-05 08:06) [2]

задача создать кнопку в RealTime и на нее повесить открытие файла
указанного пользователем


 
Сергей М. ©   (2007-04-05 08:10) [3]


> Неужели нужно создавать такой класс?


Вовсе не обязательно.
Можно воспользоваться любым уже имеющимся классом, например, классом какой-либо формы, имеющейся в проекте. Достаточно добавить в этот класс процедурный метод с прототипом TNotifyEvent


 
Steep ©   (2007-04-05 08:24) [4]


> Достаточно добавить в этот класс процедурный метод с прототипом
> TNotifyEvent

Это как? И возможно ли это будет сделать - ведь кол-во этих самых кнопок и их действий заранее неизвестно...


 
Думкин ©   (2007-04-05 08:27) [5]

> Steep ©   (05.04.07 08:24) [4]

Что стоит за фразой -

> и их действий заранее неизвестно... ??


 
Steep ©   (2007-04-05 08:33) [6]


> Что стоит за фразой - > и их действий заранее неизвестно.
> .. ??

Ну я ж не знаю какой файл они хотят запустить этой кнопкой...
Я только знаю что запустить
А узнать только когда будет создаватся сама кнопка т.е. в real-tim"е


 
Думкин ©   (2007-04-05 08:37) [7]

> Steep ©   (05.04.07 08:33) [6]

То есть, можно писать некоторую процедуру с входными данными, которая выполняет определенные действия. Так?
Ну и цепляй процедурный метод к соответствующей кнопке и выполняй внутри нее процедуру.
Вопрос в том, как получить внешние параметры? так тебе лучщше знать откуда они вообще возьмутся.

Все-таки стоит, хотя бы для себя расписать, что же все-таки нужно и если после этого не ясно - то дать это же описание и сюда.


 
Steep ©   (2007-04-05 08:51) [8]

Итак ;)
1. Есть поле Edit на форме, кнопка и ScrollBox
2. Пользователь вводит в поле ввода например C:\Windows\Notepad.exe
и жмет кноку - создается кнопка (FastButton1) в ScrollBox которая запускат блокнот
3. Пользовател еще кнопку опять вводит например D:\games\hl.exe -cstrike
и опять давит по батону - получаем кнопку (FastButton2) в ScrollBox корая запускает контру ;)

Код создания кнопки:
FBC количество кнопок (с 0) для расчета положения следующей кнопки
Path - путь к приложению
begin
 With TSpeedButton.Create(Self) do
 begin
   Parent := ScrollBox1;
   //Координаты - расчет
   SetBounds( 1, (32*FBC)+(1*(FBC+1)), 32, 32 );
   //Caption := IntToStr(FBC);//"Кнопка";
   Glyph.LoadFromFile("FastButton.bmp");
   Name := "FastButton"+IntToStr(FBC);
   Anchors := [akTop, akLeft];
   {//Предположения насчет события..
   OnClick := ShellExecute(handle, "open", Path, NULL, NULL, SW_SHOWNORMAL);}
   inc(FBC);
 end;
end;


 
Сергей М. ©   (2007-04-05 08:59) [9]

type
TMyForm = class(TForm)
..
 procedure DoOnButtonCkick(Sender: TObject);
..
end;

..

procedure TMyForm.DoOnButtonCkick(Sender: TObject);
begin
   ShowMessage(TMyButton(Sender).Name + " click event")
end;

Button1 := TMyButton.Create(..);
Button1.Name := "Button1";
..
Button1.OnClick := MyForm.DoOnButtonCkick;
..
ButtonN := TMyButton.Create(..);
ButtonN.Name := "ButtonN";
..
ButtonN.OnClick := MyForm.DoOnButtonCkick;


 
Steep ©   (2007-04-05 09:01) [10]


> procedure TMyForm.DoOnButtonCkick(Sender: TObject);begin
>    ShowMessage(TMyButton(Sender).Name + " click event")end;
> Button1 := TMyButton.Create(..);Button1.Name := "Button1";
> ..Button1.OnClick := MyForm.DoOnButtonCkick;


Прол это я думал... но тут на все кнопки работает 1 событие...


 
Сергей М. ©   (2007-04-05 09:04) [11]


> тут на все кнопки работает 1 событие


И что ?

Событие - оно и в Африке событие)

В данном случае - событие нажатия некоей кнопки.

А вот какой конкретно - об этом (см. пример выше) скажет параметр Sender.

Зная же какая конкретно кнопка была нажата, ты уже ветвишь алгоритм реакции на нажатие кнопки соответствующим образом.


 
Думкин ©   (2007-04-05 09:04) [12]

TmyButton = class(TSpeedButton)
Opereation : string;
end;

procedure TMyForm.DoOnButtonCkick(Sender : TObject);
var Path : string;
begin
    Path := (Sender as TMyButto).Operation;
    ShellExecute(handle, "open", Path, NULL, NULL, SW_SHOWNORMAL)
end;

With TMyButton.Create(Self) do
begin
  Parent := ScrollBox1;
  //Координаты - расчет
  SetBounds( 1, (32*FBC)+(1*(FBC+1)), 32, 32 );
  //Caption := IntToStr(FBC);//"Кнопка";
  Glyph.LoadFromFile("FastButton.bmp");
  Name := "FastButton"+IntToStr(FBC);
  Anchors := [akTop, akLeft];

  Operation := Edit.Text;
  onClick :=  MyForm.DoOnButtonCkick;
 inc(FBC);
end;


Если грубо.


 
Steep ©   (2007-04-05 09:06) [13]

О... допедрил ;)
Нужно создать массив типа string

var PathArray: array of string;

и в него заносить все path (с таким же номером что и кнопка ;) ), а потом
только нужно как-то узнать от какого номера кноки произошел клик..
Не подскажете как?

procedure TMyForm.DoOnButtonCkick(Sender: TObject);
begin
 ShellExecute(handle, "open", PathArray[?], NULL, NULL, SW_SHOWNORMAL);
end;


 
Steep ©   (2007-04-05 09:08) [14]


> Думкин ©

О... а что это за параметр у кнопки (Operation := Edit.Text;) ?
Можно прописать несколько таких? типа: Operation1 := Edit2.Text; ?


 
Сергей М. ©   (2007-04-05 09:11) [15]


> Не подскажете как?


При создании кнопки занеси ее порядковый номер в ее св-во Button.Tag.
Значение этого св-ва и будет выступать в кач-ве индекса массива PathArray[]


 
Steep ©   (2007-04-05 09:11) [16]

А понял ;)
Мы дописываем к кслассу кнопки сий путь ;) (блин до такого я точно бы не догодался ;) )

TmyButton = class(TSpeedButton)
Opereation : string;
end;

Большое спасибо вам! Сергей М. © и Думкин © !



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

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
10-1131429028
john_mag
2005-11-08 08:50
2007.04.22
работа с msword


2-1175715209
Чаййник
2007-04-04 23:33
2007.04.22
запус по времени


10-1131360802
Dysan
2005-11-07 13:53
2007.04.22
не копируються данные из TWebBrowser


15-1174942974
Германн
2007-03-27 01:02
2007.04.22
Ещё один великий Мастер ушел из жизни!


2-1175666969
s.k
2007-04-04 10:09
2007.04.22
запуск приложения