Например, есть класс
- Код: Выделить всё
 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) естественно.    
  endlA_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;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1