Tworzenie własnych komponentów

Podobne dokumenty
Wprowadzenie do systemu Delphi

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

PODSTAWY PROGRAMOWANIA

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Delphi. Lazarus. Kompilatory Delphi. Linki do stron o Delphi

Wykład 7: Lazarus GUI

Delphi podstawy programowania. Środowisko Delphi

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

16) Wprowadzenie do raportowania Rave

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Programowanie RAD Delphi

Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 )

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

Paweł Cieśla. Dokumentacja projektu

Niniejszy ebook jest własnością prywatną.

Języki i metody programowania Java Lab2 podejście obiektowe

Ćwiczenie 1. Modelowanie prostego procesu

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Serwery Statefull i Stateless

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi.

ejestr systemu Windows jest bazą danych, w której system i aplikacje mogą przechowywać swoje dane, w szczególności parametry konfiguracyjne.

6. Wciśnij Shift+F12 lub wybierz odpowiednią ikonę z paska narzędziowego (patrz wcześniejsze odcinki). 7. [rys.1] Klub IKS

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Programowanie obiektowe

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Przesyłanie Pakietów Danych i TCP/IP

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Zaawansowane programowanie w języku C++ Klasy w C++

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Programowanie obiektowe w VB cz 2

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wykład 5 Okna MDI i SDI, dziedziczenie

Podstawy Programowania semestr drugi. Wykład czternasty

Programowanie obiektowe

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Laboratorium 1 - Programowanie proceduralne i obiektowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PHP 5 język obiektowy

Programowanie obiektowe

Wykład 6: Dziedziczenie.

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Wykład 8: klasy cz. 4

VSFTPd Użycie certyfikatów niekwalifikowanych w oprogramowaniuvsftpd. wersja 1.3 UNIZETO TECHNOLOGIES SA

Instrukcja instalacji i konfiguracji czytników kart kryptograficznych, aplikacji procertum CardManager, obsługa aplikacji procertum CardManager w

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Tablice, DataGridView

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Program powinien otworzyć się z pierwszym formularzem. Jeśli nie, otwórz pierwszy formularz, wybierając go z listy - Shift+F12.

Wdrożenie modułu płatności eservice. dla systemu Virtuemart 1.1.x x

Wykład 03 JavaScript. Michał Drabik

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Wykład 4: Klasy i Metody

Delphi Laboratorium 3

EASY CAP VIDEO GRABBER SZYBKI START. Instalacja sterowników

MICROSOFT WINDOWS INSTALLER TWORZENIE INSTALATORÓW W ŚRODOWISKU VISUAL STUDIO.NET

Instalacja Webroot SecureAnywhere przy użyciu GPO w Active Directory

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Platformy Programistyczne Podstawy języka Java

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Lazarus dla początkujących, część II

Pakiety i interfejsy. Tomasz Borzyszkowski

Klasy i obiekty cz II

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Makropolecenia w PowerPoint Spis treści

Procedury techniczne modułu Forte Kontroling. Pakiety DTS

Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Ćwiczenie z wykorzystaniem zmiennych i komponentu TGauge. TTimer co pewien czas. Gra. A jednak odlicza. Stoper. Aktualny czas, czyli zegar

OBIEKTY PHP. G. Panuś

Podstawy Programowania 2

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Palety by CTI. Instrukcja

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Exchange 2007 Konfiguracja protokołu SSL/TLS w serwerze pocztowym Exchange 2007 wersja 1.1 UNIZETO TECHNOLOGIES S.A.

Programowanie obiektowe

Podstawy i języki programowania

ForPascal Interpreter języka Pascal

Jeśli chodzi o wymianę/dodanie zdjęcia w galerii to robimy to za pomocą komponentu Galeria Phoca.

Po uruchomieniu Lazarusa należy wybrać z paska górnego opcję Projekt i następnie Nowy Projekt. Pokaże się okno:

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

LINUX. Instalacja oprogramowania

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Instrukcja laboratoryjna cz.3

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Nagrywamy podcasty program Audacity

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009

akademia androida Składowanie danych część VI

akademia androida Intencje oraz URI część III

Język programowania PASCAL

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

VBA praca z makrami w Excelu

WPROWADZENIE DO JĘZYKA JAVA

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Transkrypt:

Tworzenie własnych komponentów 1. Tworzenie nowego komponentu W tym celu należy wykorzystać menu Component. Interesujące są dwie opcje menu New Component i Install Component. Pierwsze polecenie służy do stworzenia nowego projektu komponentu, natomiast za pomocą drugiego możemy zainstalować już istniejący komponent. Po wybraniu tej opcji na palecie komponentów zostanie utworzona nowa ikonka i wówczas komponent będzie działał jak zwykły komponent VCL. Aby utworzyć nowy komponent z menu Component wybierz New Component. Na ekranie zobaczysz okienko, jakie zostało przedstawione na poniższym rysunku: Należy dokonać wyboru VCL for Delphi Win32 i kliknąć Next. Na ekranie zobaczysz okienko, jakie zostało przedstawione na poniższym rysunku: Z listy należy wybrać komponent, który będzie stanowił klasę bazową dla naszego nowego obiektu, np. klasę TLabel. Jeżeli chcesz tworzyć komponent od początku, wybierz pozycję TComponent. Jest to bazowa klasa dla wszystkich komponentów, zawierająca parę potrzebnych procedur i funkcji. Kliknij Next, a na ekranie zobaczysz okienko, jakie zostało przedstawione na poniższym rysunku:

W polu Class Name należy wpisać nazwę nowego komponentu. Pamiętaj, że wedle obowiązującej zasady należy poprzedzić nazwę literą T. Pole Palette Page określa, na jakiej palecie zostanie zainstalowany komponent. Unit file name to ścieżka do katalogu, w którym zostaną zapisane nowe pliki z komponentem. Ostatnie pole określa ścieżkę do katalogu, gdzie znajdować się będą potrzebne do kompilacji pliki komponentu. ${DELPHI} oznacza domyślną ścieżkę do pliku programu Delphi. Kliknij Next, a na ekranie zobaczysz okienko, jakie zostało przedstawione na poniższym rysunku: Wybierz opcję Install to New Package. Komponent znajdujący się w pakiecie będzie od razu gotowy do instalacji (począwszy od wersji 2005, Delphi instaluje komponenty tylko z pakietów). Po wykonaniu powyższych operacji w edytorze kodu pojawi się następujący kod: unit MyLabel; interface uses System.SysUtils, System.Classes, Vcl.Controls, Vcl.StdCtrls;

type TMojLabel = class(tlabel) private { Private declarations } protected { Protected declarations } { Public declarations } published { Published declarations } procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TMojLabel]); end. Kluczowe znaczenie ma procedura Register. Następuje w niej zarejestrowanie komponentu realizowane przez polecenie RegisterComponents. Pierwszy parametr oznacza nazwę palety. Drugi parametr to nazwy komponentów do zainstalowania. Muszą one być wpisane w nawiasie kwadratowym, gdyż w tym wypadku występują jako elementy tablicy. 2. Konstruktory i destruktory: Komponenty, podobnie jak zwykłe klasy, posiadają konstruktory oraz destruktory. Jeśli ich nie zadeklarujemy to komponent będzie posiadał domyślny konstruktor z klasy bazowej. constructor Create(AOwner : TComponent); override; destructor Destroy; override; Zarówno konstruktor, jak i destruktor są opatrzone klauzulą override, co znaczy, że są przedefiniowane. W konstruktorze możemy zainicjować właściwości wartościami domyślnymi. W destruktorze należy zwolnić pamięć, jeśli została przydzielona w konstruktorze. 3. Właściwości Właściwości komponentów służą do przechowywania wartości różnych typów. Jednak jeśli chcemy, aby właściwości były widoczne w Inspektorze Obiektów, należy użyć kolejnej sekcji w klasie, sekcji published: property CzasMigania: Integer read FCzasMigania write UstawCzas default 200; Właściwość należy oznaczyć słowem kluczowym property. Zwykło się także definiować zmienne pomocnicze, których deklaracje umieszcza się w sekcji private. Nazwy tych zmiennych umieszczane są po słowach kluczowych read i write. W ten sposób łatwo

utworzyć jakąś właściwość tylko do odczytu (pozostawiając jedynie klauzulę read) lub tylko do zapisu (klauzula write), albo też zarówno do zapisu, jak i do odczytu (zarówno read, jak i write). Powyższy kod oznacza, że właściwość CzasMigania będzie typu Integer, a jej odczytanie będzie równoważne z odczytaniem danych ze zmiennej FCzasMigania. Natomiast w przypadku, gdy użytkownik zechce przypisać jakąś wartość właściwości CzasMigania, wywoła procedurę UstawCzas. Nowa wartość zostanie przekazana do procedury UstawCzas w parametrze AMiganie. 4. Definiowanie własnych zdarzeń Zdarzenia służą do zaprogramowania określonej reakcji w momencie zajścia jakiegoś wydarzenia (np. kliknięcia myszą). Podczas projektowania własnych komponentów często trzeba będzie przypisywać w kodzie programu jakieś zdarzenie, tzw. procedurę zdarzeniową. Procedura zdarzeniowa musi mieć określone parametry, zależne od rodzaju zdarzenia. Przykładowo procedura zdarzeniowa dla zdarzenia OnClick musi mieć parametr Sender typu TObject. Czasem może przytrafić się sytuacja, gdy w naszym komponencie będzie wymagane zdarzenie zawierające więcej niż jeden parametr, będzie to umożliwiało użytkownikowi przekazanie jakichś funkcji. W takim wypadku konieczne stanie się zadeklarowanie dodatkowo nowego typu zdarzenia: type TMyEvent = procedure(sender: TObject; X : Integer) of object; Taka składnia, tj. umieszczenie frazy of object na końcu jest obowiązkowa. Teraz oprócz zwykłego parametru Sender zdarzenie będzie posiadać także parametr X. 5. Przykład: Ogólny zarys klasy: type TMojLabel = class(tlabel) private { Private declarations } FMiganie : Boolean; FCzasMigania : Integer; FTimer : TTimer; protected { Protected declarations } procedure MiganieWlaczone(AMiganie: Boolean); procedure OnTimer(Sender: TObject); procedure UstawCzas(AMiganie: Integer); { Public declarations } //ovveride oznacza, ze sa przedefiniowane constructor Create(AOwner: TComponent);override; destructor Destroy;override; published { Published declarations }

{jesli chcemy, zeby wlasciwosci byly widoczne w Inspektorze Obiektow} property Miganie: Boolean read FMiganie write MiganieWlaczone default true; property CzasMigania: Integer read FCzasMigania write UstawCzas default 200;