Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создавать события? 
:(
    Опции темы
TDM
Дата 14.4.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



Например On N=2 ???? Это возможно?
PM MAIL ICQ   Вверх
Демо
Дата 14.4.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Код

type
  TMyEvent=procedure(Sender: TObject; ValueN: Integer) of object;

  TMyClass=class
  private
    FN: Integer;
    procedure SetFN(Value: Integer);
    FEvent: TMyEvent;
  public
    property N: Integer read FN write SetFN;
    property OnSetN: TMyEvent read FEvent write FEvent;
  end;

implementation

procedure TMyClass.SetFN(value: Integer);
begin
  FN := Value;
  if Assigned(FEvent) then FEvent(Self, FN);
end;



--------------------
    
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 15.4.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(TDM @ 14.4.2006, 18:08 Найти цитируемый пост)
Например On N=2
Очень похоже на mIRC-скрипт. Тебе что конкретно надо?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
TDM
Дата 16.4.2006, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



Poseidon Это значит когда пременная N станет =2 то, например показывать сообщения.
PM MAIL ICQ   Вверх
Yanis
Дата 16.4.2006, 03:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Код

if N = 2 then ShowMessage('');

 smile  


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
TDM
Дата 16.4.2006, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



Yanis  Крут! Как я сам не догадался! буду писать после каждог оператора это! Или ставить таймер на 1 мс и проверять равно ли N двум!  
PM MAIL ICQ   Вверх
Yanis
Дата 16.4.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Скорее всего у тебе неправильно организована логика программы, если требуется проверять значение после каждого оператора. 
Как вариант, создай класс с помощью которого будешь читать, писать переменную. В классе же реализуй проверку на изменение значения. Естественно, что значение класс будет проверять только при изменении переменной. Там то и генерируй определённое событие.

Добавлено @ 21:21 
Цитата(TDM @  16.4.2006,  20:31 Найти цитируемый пост)
Yanis  Крут!

Ещё бы!  smile  


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
TDM
Дата 17.4.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



Можешь код дать? 
PM MAIL ICQ   Вверх
Yanis
Дата 17.4.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(TDM @  17.4.2006,  15:36 Найти цитируемый пост)
Можешь код дать?

Правда, по моему по извращенски получилось smile. Но всё же:
Код

unit uTVariable;

interface

uses
  Classes;

type
  TVariableType = Integer;
  TVariable = class
  private
    FOnCondition: TNotifyEvent;
    FVariableValue: TVariableType;
    FTrueValue: TVariableType;

    procedure SetVariableValue(const Value: TVariableType);
    function ConditionTest(const Value, TrueValue: TVariableType): Boolean;
  public
    constructor Create(const ConditionValue: TVariableType; Event: TNotifyEvent);
    property Value: TVariableType read FVariableValue write SetVariableValue;
  end;

implementation

constructor TVariable.Create(const ConditionValue: TVariableType; Event: TNotifyEvent);
begin
  FTrueValue := ConditionValue;
  FOnCondition := Event;
end;

procedure TVariable.SetVariableValue(const Value: TVariableType);
begin
  if FVariableValue <> Value then
    FVariableValue := Value;

  if ConditionTest(Value, FTrueValue) then
    FOnCondition(Self);
end;

function TVariable.ConditionTest(const Value, TrueValue: TVariableType): Boolean;
begin
  Result := Value = TrueValue;
end;

end.


Использование:
Код

unit UfrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uTVariable;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure MyEvent(Sender: TObject);
  end;

var
  Form1: TForm1;
  vi: TVariable;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.MyEvent(Sender: TObject);
begin
  ShowMessage('Это свершилось!!! =)');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(vi);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  vi := TVariable.Create(666, MyEvent);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Randomize;
  for i := 1 to 20 do
    vi.Value := RandomRange(660, 670);
end;

end.


P. S. Я извращенец  smile  


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
TDM
Дата 17.4.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



Круть! Пойду попробую!  
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.