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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.114 c
15-1174902497
ProgRAMmer Dimonych
2007-03-26 13:48
2007.04.22
Помогите, плз, найти MIDI-файл


1-1172573346
Choco
2007-02-27 13:49
2007.04.22
Размер кадра видеофайла


4-1164498053
Dmitry_177
2006-11-26 02:40
2007.04.22
Своя отрисовка меню


2-1175345871
ctudent
2007-03-31 16:57
2007.04.22
как узнать заголовок странички в инете


5-1152100632
Romas81
2006-07-05 15:57
2007.04.22
компоненты MSSQL 2000





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский