Например, есть класс
- Код: Выделить всё
type
TExample=class
AINT: Integer;
end;
Каким образом прикрутить либо на АINT, а желательно на TExample onchange event ?
Модератор: Модераторы
type
TExample=class
AINT: Integer;
end;
{TNotifyEvent = procedure(Sender: TObject) of object;}// есть и другие типы, но различие только в параметрах, которые нужны
....
FOnChangeBounds: TNotifyEvent;
....
property OnChangeBounds: TNotifyEvent read FOnChangeBounds write FOnChangeBounds;
type
TExample=class
private
A_AINT: Integer;
public
property AINT : Integer read A_AINT write A_AINTWRITE
procedure A_AINTWRITE;
end;
procedure TExample.A_AINTWRITE;
begin
A_AINT := AINT;
<CODE...>
end;
Type
TOnFilter = procedure() of object; // можно обозначить с параметрами типа procedure(sender:TObject; param1,param2:Intereg) of object;
TExample=class
private
FOnFilter:TOnFilter; // --- обявляем ссылочную переменную на процедуру типа [b]TOnFilter[/b]
function DoFilter();
public
OnFilter:TOnFilter read FOnFilter wite FOnFilter; //
// -- если поместим в published и объект будет виден в дизайнере то тогда это поле станет редактируемо в дизайнере, как типа TFom.OnCreate
end;
...
function TExample.DoFilter();
begin
if Assigned(FOnFilter) then // прjверям что FOnFilter<>nil
FOnFilter(); // вызываем Callback// FOnFilter(Self,param1,param2) естественно.
endl
A_AINT := AINT;
skobanev писал(а):Чет Я еще больше запутался ((((
// TNotifyEvent нет смысла объявлять повторно, т. к. она уже есть в коде библиотеки.
type
TExample=class
private
A_AINT: Integer;
Procedure A_AINTWRITE(Sender: TObject);
public
property AINT :TNotifyEvent read A_AINTWRITE write A_AINTWRITE;
end;
procedure TExample.A_AINTWRITE;
begin
// A_AINT := AINT;
<CODE...>
end;
skobanev писал(а):Но я до сих пор не понял как отлавливать изменения аттрибута ?
property Position: TPosition read FPosition write SetPosition default poDesigned;
type
TZakaziFilter = class
private
ZakazFilter_FilterType: Integer;
procedure P_FilterType(AValue:Integer);
public
property FilterType: Integer read ZakazFilter_FilterType write P_FilterType;
end;
procedure TZakaziFilter.P_FilterType(AValue:Integer);
begin
self.ZakazFilter_FilterType:=AValue;
ShowMessage(self.FilterType.ToString);
end;
type
TKlient = class
ID : Integer;
end;
TJob = class(TCollectionItem)
private
Job_JobID : Integer;
public
property JobID: Integer read Job_JobID write Job_JobID;
end;
type
TCurrentZakaz = class(TCollection)
private
Zakaz_ID : Integer;
Zakaz_Klient : TKlient;
function GetItem(AIndex: Integer): TJob;
public
property ID : Integer read Zakaz_ID write Zakaz_ID;
property Items[AIndex: Integer]: TJob read GetItem; default;
property Klient: TKlient read Zakaz_Klient write Zakaz_Klient;
public
constructor Create(Item_Class: TCollectionItemClass);
function InsertNew : TJob;
function Insert(AJob: TJob):TJob;
procedure GetData(ZakazID: Integer);
end;
type
TZakazi = class(TList)
Filter : TzakaziFilter;
constructor Create;
function GetItem(AIndex: Integer): TCurrentZakaz;
function LoadMainData(Deleted: boolean): boolean;
end;
уничтожатся только ссылки,данные списка останутся!!skobanev писал(а):ZAKAZI.Clear уничтожатся только ссылки а данные списка останутся ?
type
TMyClass = class
private
FData: integer;
public
property Data: integer read FData write FData;
end;
Сейчас этот форум просматривают: Google [Bot] и гости: 17