Benutzerdefinierte Container packen (Ccpack 5)


Überprüfung der dieses Freeware-Experten, die Ihnen, visuell hilft erstellen Verbundbauteile
BENUTZERDEFINIERTE CONTAINER PACK (CCPACK 5)
Was ist Custom Container Pack?
CCPack 5 ist ein Freeware-Paket, mit dem Sie visuell kombinieren, erweitern und VCL-Container erben. Das Paket wurde von Sergey Orlik, Product Manager von Inprise Moskauer Büro (Russland, GUS und Baltikum) entwickelt.
CCPack 5 arbeitet mit Delphi / C ++ Builder 5, und ist die Entwicklung von zwei bestehenden Delphi / C ++ Builder 3,4-add-ins: Custom Forms Pack (CFPack) und zusammengesetzte Bauteile (CCPack 4).
Eine der häufigsten Verwendungsmöglichkeiten von CCPack 5 ist die Schaffung von Komponenten aus verschiedenen Komponenten:
* CCPack Einführungsvideo ('337K)

Downloads
* Benutzerdefinierte Container Pack (CCPack 5) für Delphi / C ++ Builder 5 '(695K)
* CCPack 4.5 für Delphi / C ++ Builder 3 und 4 ('591K)
* CFPack 4.3 für Delphi / C ++ Builder 4 ('129K)
* CFPack 1.01 für Delphi / C ++ Builder 3 (alte und unveränderten Version) '(45K)
Der vollständige Quellcode wird bereitgestellt und Sie können es ändern, ohne Einschränkung für alle nicht-kommerzielle Projekte. Lassen Sie den Autor kennen, wenn Sie diese Software in Ihren kommerziellen Projekten per E-mail an Angabe in der Betreffzeile das Tool [email protected] verwenden möchten.

Eine zusammengesetzte Beispielkomponente
Nachdem Sie CCPack installiert haben, sind Sie bereit für das erste Beispiel.
Schließen Sie alle Delphi-Projekte. Wählen Sie im Menü 'Datei' 'Neu...', wählen Sie 'Custom Container' (oder 'Composite Control' in Delphi 3/4) in die 'neue Produkte' Dialogfeld, und klicken Sie 'OK'. Schreiben Sie in der 'Neuen Container' Dialogfeld Wählen Sie 'TFrame' 'TFileComposite' im Feld 'New class Name', und klicken Sie auf 'Fertig stellen'.
Ein Formular wird angezeigt. Seine Oberfläche ist die Oberfläche Ihrer neuen Delphi-Komponente. Legen Sie die folgenden Eigenschaften im Objektinspektor:
Width = 281
  Height = 164

Dies wird die Standardgröße der Komponente sein. Löschen eines Panels auf das Formular, und legen Sie seine Eigenschaften:
Align = alLeft
    Width = 130
    BevelOuter = bvNone
    Caption =
    Constraints.MinWidth = 110

Löschen Sie einen Splitter nach rechts, um die Leiste. Es wird automatisch auf die Seite des Bereichs ausgerichtet. Löschen Sie eines DriveComboBox und einer DirectoryListBox auf dem Panel und legen Sie deren Eigenschaften:
DriveComboBox:
      Left = 0
      Top = 0
      Width = 130
      Height = 19
      Anchors = [akLeft, akTop, akRight]
    DirectoryListBox:
      Left = 0
      Top = 19
      Width = 130
      Height = 145
      Anchors = [akLeft, akTop, akRight, akBottom]

Klicken Sie auf der rechten Seite des Formulars und legen Sie eine FileListBox ab:
Align = alClient
    TabOrder = 0

Mit diesem haben wir die visuelle Schnittstelle unserer zusammengesetzte Komponente abgeschlossen. Jetzt ist es Zeit, Code hinzufügen, um 'die Komponenten verknüpfen'. Doppelklicken Sie auf die DriveComboBox und in der Change-Ereignishandler schreiben:
procedure TFileComposite.DriveComboBox1Change(Sender: TObject);
  begin
    DirectoryListBox1.Drive := DriveComboBox1.Drive;
  end;

Doppelklicken Sie auf die DirectoryListBox und in der Change-Ereignishandler schreiben:
procedure TFileComposite.DirectoryListBox1Change(Sender: TObject);
  begin
    FileListBox1.Directory := DirectoryListBox1.Directory;
  end;

Mit diesem haben wir das grundlegende Verhalten von unseren zusammengesetzte Komponente, die für die Programmierschnittstelle die Methoden und Eigenschaften von TFrame erben wird abgeschlossen (die Basisklasse wählten wir, wenn wir die Komponente erstellt). Ein paar öffentliche Eigenschaften addieren: Dateiname und Verzeichnis. In der Deklaration der Klasse hinzufügen:
type
    TFileComposite = class(TFrame)
      :
      :
    protected
      { Protected declarations }
      function GetFileName: string;
      procedure SetFileName(FileName: string);
      function GetDirectory: string;

      procedure SetDirectory(Directory: string);
    public
      { Public declarations }
      property FileName: string read GetFileName write SetFileName;
      property Directory: string read GetDirectory write SetDirectory;
      :
      :

Die Umsetzung ist ganz einfach. Im Grunde wir abrufen und Festlegen der Dateiname des FileListBox und die Directory-Eigenschaft der DirectoryListBox:
function TFileComposite.GetFileName: string;
  begin
    Result := FileListBox1.FileName;
  end;
  procedure TFileComposite.SetFileName(FileName: string);
  begin
    FileListBox1.FileName := FileName;
  end;
  function TFileComposite.GetDirectory: string;
  begin
    Result := DirectoryListBox1.Directory;
  end;
  procedure TFileComposite.SetDirectory(Directory: string);
  begin
    DirectoryListBox1.Directory := Directory;
  end;

Jetzt addieren drei Ereignisse: Wandel, Click und DblClick. In der Deklaration der Klasse hinzufügen:
type
    TFileComposite = class(TFrame)
      :
      :
    private
      { Private declarations }
      FOnChange: TNotifyEvent;
      FOnClick: TNotifyEvent;
      FOnDblClick: TNotifyEvent;
    protected
      :
    public
      :
    published
      { Published declarations }
      property OnChange: TNotifyEvent read FOnChange write FOnChange;
      property OnClick: TNotifyEvent read FOnClick write FOnClick;
      property OnDblClick: TNotifyEvent read FOnDblClick write
        FOnDblClick;
    end;

Wie Sie erraten werden vielleicht, diese Ereignisse werden vom ändern, Click und DblClick-Ereignis die FileListBox ausgelöst werden, also die entsprechenden Ereignishandler zu generieren und schreiben Folgendes:
procedure TFileComposite.FileListBox1Change(Sender: TObject);
  begin
    if Assigned(FOnChange) then FOnChange(Self);
  end;
  procedure TFileComposite.FileListBox1Click(Sender: TObject);
  begin
    if Assigned(FOnClick) then FOnClick(Self);
  end;
  procedure TFileComposite.FileListBox1DblClick(Sender: TObject);
  begin
    if Assigned(FOnDblClick) then FOnDblClick(Self);
  end;

Wenn Sie wundern sich über die Funktion zugewiesen, bitte lassen Sie mich erklären. FOnChange ist ein Feld vom Typ TNotifyEvent, und dies bedeutet, dass es kann die Adresse einer Prozedur des Objekts, das einen Parameter 'Sender: TObject'... nimmt oder Nil, es sein kann, also wir dafür sorgen sollten, dass FOnChange Nil ist nicht bevor der Aufruf 'FOnChange(Self)'. Allerdings wird nicht die folgenden Arbeiten:
if FOnChange <> nil then ...
Der Grund ist, dass sich beziehen FOnChange vom Compiler als Aufruf der Prozedur genommen wird, auf den er verweist. Wir vergessen, da es ein Verfahren ist, es einen Wert nicht typkompatibel mit einem Zeiger schaltet (so dass wir es mit NULL vergleichen kann nicht), aber vor dieser Erkenntnis, die des Compilers finden den (Sender)-Parameter im Aufruf von FOnChange... Unsere Absicht ist nicht, die Prozedur aufrufen, auf den, der fonchange verweist, sondern zu wissen, ob der Wert des FOnChange ist nicht NULL. Dies ist der Zweck der integrierten zugewiesene Funktion oben verwendete.
Für das Beispiel das ist es. Sie können dieses Gerät installieren und verwenden Sie die Komponente aus der Komponenten-Palette, oder schließen Sie das Gerät in ein Testprojekt und erstellen die Komponente von Code, wie wir es in der Testanwendung zu sparen Sie erspart eine nutzlose Komponente installieren Sie.
Wie Sie sehen können, kann mit CCPack jemand mit wenig Erfahrung schriftlich Komponente composite-Bauteile schnell und problemlos erstellen.

Weitere Informationen
Sie können weitere Informationen zum CCPack finden und andere Komponenten auf Sergey Orlik-Website zu finden.
Den vollständigen Quellcode dieses Artikels finden im Archiv Sie, die begleitet die Pascal Newsletter #24









Benutzerdefinierte Container packen (Ccpack 5)


Benutzerdefinierte Container packen (Ccpack 5) : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Überprüfung der dieses Freeware-Experten, die Ihnen, visuell hilft erstellen Verbundbauteile
BENUTZERDEFINIERTE CONTAINER PACK (CCPACK 5)
Was ist Custom Container Pack?
CCPack 5 ist ein Freeware-Paket, mit dem Sie visuell kombinieren, erweitern und VCL-Container erben. Das Paket wurde von Sergey Orlik, Product Manager von Inprise Moskauer Büro (Russland, GUS und Baltikum) entwickelt.
CCPack 5 arbeitet mit Delphi / C ++ Builder 5, und ist die Entwicklung von zwei bestehenden Delphi / C ++ Builder 3,4-add-ins: Custom Forms Pack (CFPack) und zusammengesetzte Bauteile (CCPack 4).
Eine der häufigsten Verwendungsmöglichkeiten von CCPack 5 ist die Schaffung von Komponenten aus verschiedenen Komponenten:
* CCPack Einführungsvideo ('337K)

Downloads
* Benutzerdefinierte Container Pack (CCPack 5) für Delphi / C ++ Builder 5 '(695K)
* CCPack 4.5 für Delphi / C ++ Builder 3 und 4 ('591K)
* CFPack 4.3 für Delphi / C ++ Builder 4 ('129K)
* CFPack 1.01 für Delphi / C ++ Builder 3 (alte und unveränderten Version) '(45K)
Der vollständige Quellcode wird bereitgestellt und Sie können es ändern, ohne Einschränkung für alle nicht-kommerzielle Projekte. Lassen Sie den Autor kennen, wenn Sie diese Software in Ihren kommerziellen Projekten per E-mail an Angabe in der Betreffzeile das Tool [email protected] verwenden möchten.

Eine zusammengesetzte Beispielkomponente
Nachdem Sie CCPack installiert haben, sind Sie bereit für das erste Beispiel.
Schließen Sie alle Delphi-Projekte. Wählen Sie im Menü 'Datei' 'Neu...', wählen Sie 'Custom Container' (oder 'Composite Control' in Delphi 3/4) in die 'neue Produkte' Dialogfeld, und klicken Sie 'OK'. Schreiben Sie in der 'Neuen Container' Dialogfeld Wählen Sie 'TFrame' 'TFileComposite' im Feld 'New class Name', und klicken Sie auf 'Fertig stellen'.
Ein Formular wird angezeigt. Seine Oberfläche ist die Oberfläche Ihrer neuen Delphi-Komponente. Legen Sie die folgenden Eigenschaften im Objektinspektor:
Width = 281
  Height = 164

Dies wird die Standardgröße der Komponente sein. Löschen eines Panels auf das Formular, und legen Sie seine Eigenschaften:
Align = alLeft
    Width = 130
    BevelOuter = bvNone
    Caption =
    Constraints.MinWidth = 110

Löschen Sie einen Splitter nach rechts, um die Leiste. Es wird automatisch auf die Seite des Bereichs ausgerichtet. Löschen Sie eines DriveComboBox und einer DirectoryListBox auf dem Panel und legen Sie deren Eigenschaften:
DriveComboBox:
      Left = 0
      Top = 0
      Width = 130
      Height = 19
      Anchors = [akLeft, akTop, akRight]
    DirectoryListBox:
      Left = 0
      Top = 19
      Width = 130
      Height = 145
      Anchors = [akLeft, akTop, akRight, akBottom]

Klicken Sie auf der rechten Seite des Formulars und legen Sie eine FileListBox ab:
Align = alClient
    TabOrder = 0

Mit diesem haben wir die visuelle Schnittstelle unserer zusammengesetzte Komponente abgeschlossen. Jetzt ist es Zeit, Code hinzufügen, um 'die Komponenten verknüpfen'. Doppelklicken Sie auf die DriveComboBox und in der Change-Ereignishandler schreiben:
procedure TFileComposite.DriveComboBox1Change(Sender: TObject);
  begin
    DirectoryListBox1.Drive := DriveComboBox1.Drive;
  end;

Doppelklicken Sie auf die DirectoryListBox und in der Change-Ereignishandler schreiben:
procedure TFileComposite.DirectoryListBox1Change(Sender: TObject);
  begin
    FileListBox1.Directory := DirectoryListBox1.Directory;
  end;

Mit diesem haben wir das grundlegende Verhalten von unseren zusammengesetzte Komponente, die für die Programmierschnittstelle die Methoden und Eigenschaften von TFrame erben wird abgeschlossen (die Basisklasse wählten wir, wenn wir die Komponente erstellt). Ein paar öffentliche Eigenschaften addieren: Dateiname und Verzeichnis. In der Deklaration der Klasse hinzufügen:
type
    TFileComposite = class(TFrame)
      :
      :
    protected
      { Protected declarations }
      function GetFileName: string;
      procedure SetFileName(FileName: string);
      function GetDirectory: string;

      procedure SetDirectory(Directory: string);
    public
      { Public declarations }
      property FileName: string read GetFileName write SetFileName;
      property Directory: string read GetDirectory write SetDirectory;
      :
      :

Die Umsetzung ist ganz einfach. Im Grunde wir abrufen und Festlegen der Dateiname des FileListBox und die Directory-Eigenschaft der DirectoryListBox:
function TFileComposite.GetFileName: string;
  begin
    Result := FileListBox1.FileName;
  end;
  procedure TFileComposite.SetFileName(FileName: string);
  begin
    FileListBox1.FileName := FileName;
  end;
  function TFileComposite.GetDirectory: string;
  begin
    Result := DirectoryListBox1.Directory;
  end;
  procedure TFileComposite.SetDirectory(Directory: string);
  begin
    DirectoryListBox1.Directory := Directory;
  end;

Jetzt addieren drei Ereignisse: Wandel, Click und DblClick. In der Deklaration der Klasse hinzufügen:
type
    TFileComposite = class(TFrame)
      :
      :
    private
      { Private declarations }
      FOnChange: TNotifyEvent;
      FOnClick: TNotifyEvent;
      FOnDblClick: TNotifyEvent;
    protected
      :
    public
      :
    published
      { Published declarations }
      property OnChange: TNotifyEvent read FOnChange write FOnChange;
      property OnClick: TNotifyEvent read FOnClick write FOnClick;
      property OnDblClick: TNotifyEvent read FOnDblClick write
        FOnDblClick;
    end;

Wie Sie erraten werden vielleicht, diese Ereignisse werden vom ändern, Click und DblClick-Ereignis die FileListBox ausgelöst werden, also die entsprechenden Ereignishandler zu generieren und schreiben Folgendes:
procedure TFileComposite.FileListBox1Change(Sender: TObject);
  begin
    if Assigned(FOnChange) then FOnChange(Self);
  end;
  procedure TFileComposite.FileListBox1Click(Sender: TObject);
  begin
    if Assigned(FOnClick) then FOnClick(Self);
  end;
  procedure TFileComposite.FileListBox1DblClick(Sender: TObject);
  begin
    if Assigned(FOnDblClick) then FOnDblClick(Self);
  end;

Wenn Sie wundern sich über die Funktion zugewiesen, bitte lassen Sie mich erklären. FOnChange ist ein Feld vom Typ TNotifyEvent, und dies bedeutet, dass es kann die Adresse einer Prozedur des Objekts, das einen Parameter 'Sender: TObject'... nimmt oder Nil, es sein kann, also wir dafür sorgen sollten, dass FOnChange Nil ist nicht bevor der Aufruf 'FOnChange(Self)'. Allerdings wird nicht die folgenden Arbeiten:
if FOnChange <> nil then ...
Der Grund ist, dass sich beziehen FOnChange vom Compiler als Aufruf der Prozedur genommen wird, auf den er verweist. Wir vergessen, da es ein Verfahren ist, es einen Wert nicht typkompatibel mit einem Zeiger schaltet (so dass wir es mit NULL vergleichen kann nicht), aber vor dieser Erkenntnis, die des Compilers finden den (Sender)-Parameter im Aufruf von FOnChange... Unsere Absicht ist nicht, die Prozedur aufrufen, auf den, der fonchange verweist, sondern zu wissen, ob der Wert des FOnChange ist nicht NULL. Dies ist der Zweck der integrierten zugewiesene Funktion oben verwendete.
Für das Beispiel das ist es. Sie können dieses Gerät installieren und verwenden Sie die Komponente aus der Komponenten-Palette, oder schließen Sie das Gerät in ein Testprojekt und erstellen die Komponente von Code, wie wir es in der Testanwendung zu sparen Sie erspart eine nutzlose Komponente installieren Sie.
Wie Sie sehen können, kann mit CCPack jemand mit wenig Erfahrung schriftlich Komponente composite-Bauteile schnell und problemlos erstellen.

Weitere Informationen
Sie können weitere Informationen zum CCPack finden und andere Komponenten auf Sergey Orlik-Website zu finden.
Den vollständigen Quellcode dieses Artikels finden im Archiv Sie, die begleitet die Pascal Newsletter #24


Benutzerdefinierte Container packen (Ccpack 5)

Benutzerdefinierte Container packen (Ccpack 5) : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Benutzerdefinierte Container packen (Ccpack 5)
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung