Microsoft PowerPoint - DELPHI�礔.ppt

Similar documents
1 シミュレーションとは何か?

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

Embarcadero Developer Camp

L N P Y F C T V W Z I X Pentomino Form Name Caption Position FormMain podesktopcenter

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb

Embarcadero Developer Camp

t1

Webコンポーネントのカスタマイズ入門

開発者が知りたい実践プログラミングテクニック! ~明日から使えるテクニック集~

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

Embarcadero Developer Camp

Embarcadero Developer Camp

PowerPoint プレゼンテーション

初 めての ios アプリケーション iphone Form TLabel TButton. 図. コントロールの 配 置 Button OnClick Button. 00

PowerPoint プレゼンテーション

25th Developer Camp

CodeGear Developer Camp

24th Developer Camp B1

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 9.0

Java, Delphi, C++Builderユーザのためのメモリリーク, ボトルネックの検出手順

Borland C++Builder 6 オンラインマニュアル

25th Developer Camp

テクニカルセミナーベストセレクション

10th Developer Camp - B5

FastReportへの効率的な帳票レイアウトコンバート

ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 8.0

開発者が知りたい実践プログラミングテクニック!

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

24th Embarcadero Developer Camp

8th CodeGear Developer Camp

Delphi/400開発ノウハウお教えします バージョンアップのポイント& Webアプリ開発実演


プロセス間通信

22nd Embarcadero Developer Camp G6

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

f5

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

WebReportCafe

JAVA入門

VFD256 サンプルプログラム

Delphi/400 テクニック公開 Windows7に最適化した アプリ開発・運用テクニック

Java知識テスト問題

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Microsoft Word - ECALSDS01_Vr1_5_080305_ja.doc

ASP.NET 2.0 Provider Model 概要

storage-sdk-Java

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft Word - Writing Windows Installer's DLL.doc

PowerPoint プレゼンテーション

今どきのC++開発をもっと楽にする3つの武器

Java演習(4) -- 変数と型 --

MVP for VB が語る C# 入門

25th Developer Camp

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Developer Camp

コンポーネント有効活用で開発効率向上!~コンポーネント活用テクニックのご紹介~

Java講座

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

PowerPoint プレゼンテーション

C#の基本

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

PowerPoint Presentation

Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS Pascal

VB.NETコーディング標準

Embarcadero Developer Camp

Transcription:

Delphi コンポーネントの基礎 Delphi の基本のさわり プログラム関連のファイルの説明 コンポーネント関連のファイルの説明 プロパティエディタ関連のファイルの説明 クラスのアクセス権の説明 クラスツリーの抜粋とファイル拡張子の説明 ちょっと作りましたコンポーネント 簡単便利なコンポーネントの実演説明 ( トラブルなければ ) 文責 寺口隆

Delphi のファイルと構文 ( プログラム ).dproj <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <ProjectGuid>{155E8CB5-DC40-42BB-B9FF-98F52976F919}</ProjectGuid> <ProjectVersion>18.1</ProjectVersion> <FrameworkType>VCL</FrameworkType> <MainSource>Project1.dpr</MainSource> <Base>True</Base> <Config Condition="'$(Config)'==''">Debug</Config> <Platform Condition="'$(Platform)'==''">Win32</Platform> <TargetedPlatforms>1</TargetedPlatforms> <AppType>Application</AppType>.dpr program Project1; Vcl.Forms, Unit1 in 'Unit1' {Form1}; {$R *.res}.exe unit Unit1; Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; TForm1 = class(tform) private { Private 宣言 } public { Public 宣言 } var Form1: TForm1; implementation {$R *.dfm} Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run;.dproj プロジェクトファイル XML によるオプション定義.dpr プロジェクトファイルメインプログラムのprogram ソースモジュール.Pas ユニットファイルコンパイルの最小単位のunit ソースモジュール.dfm VCL フォームのファイル に対して1つだけ Program 実行プログラムの宣言 使う Unit 名とファイルの位置 Begin Application (TApplication) の実行 unit ユニットの宣言 この Unit を参照する Unit からも使える Uses / Const/ Type / Var / Procedure / Fucntion implementation この Unit のみで使える.dfm フォームの定義コンポーネントの配置最初のウ ァーシ ョンではハ イナリファイルだったが現在はテキストファイル日本語は 16 進表現

Delphi のファイルと構文 ( コンポーネント ).dproj.dpk package pkgnext;.bpl.dcp {$R *.res} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ENDIF IMPLICITBUILDING} {$DESCRIPTION ' 新コンポ群 '} {$IMPLICITBUILD OFF} requires rtl, vcl; contains RegisterNextCompo in 'RegisterNextCompo'; パッケージにはコンポーネント登録用のユニットを指定するコンポーネント登録用ユニットに使用するユニットを指定してコンポーネントを登録する. これの方がコンポーネントの追加削除が簡単です unit RegisterNextCompo; Interface Classes; procedure Register; implementation ComponentContainer; procedure Register; RegisterComponents(' デモ ', [TComponentContainer, TComponentsListUp, TStringsContainerX,TMemoryStreamContainerX]); unit ComponentContainer; SysUtils, Classes, Vcl.Controls; TccMode = (ccsavefile, ccloadfile, ccsavememory, ccloadmemory); TcomponentEX = class(tcomponent) private FTagString: string; published property TagString: string read FTagString write FTagString;

Delphi のファイルと構文 ( プロパティエディタ ).dproj.dpk.bpl.dcp package PKGPropertyEditors; {$R *.res} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8}... {$ENDIF IMPLICITBUILDING} {$DESCRIPTION ' テラコンポ専用 EDITOR'} {$DESIGNONLY} {$IMPLICITBUILD OFF} requires rtl, pkgteracompo; contains registerallpropertyeditor in 'registerallpropertyeditor'; unit RegisterAllPropertyEditor; Classes, Designintf; procedure Register; implementation Controls, upropeditreg; カスタムプロパティエディタの実装ユニット procedure Register; { プロパティの編集 32ビットでリリースのみ動作するような仕様です 設計時にのみ使用する } RegisterPropertyEditor(TypeInfo(TCaption), TControl, 'Caption', TStringMultProperty); RegisterPropertyEditor (TypeInfo(String), TControl, 'Hint', TStringMultProperty); RegisterPropertyEditor(TypeInfo(String), TComponent, 'TagString', TStringMultProperty); 独自プロパティエディタを作成すると便利ですここでは Tcontrol とその継承したコンポの Caption,Hint に改行を含む文字列を挿入します独自プロパティエディタを登録するだけのユニットです

Delphi のファイルと構文 ( 独自のプロパティエディタの実装処理 ) unit upropeditreg; Designintf, DesignEditors, Controls, upropedtstringmult; TStringMultProperty = class( TStringProperty) public function GetAttributes: TPropertyAttributes; override; procedure Edit; override; implementation function TStringMultProperty.GetAttributes: TPropertyAttributes; Result := [padialog, paautoupdate]; procedure TStringMultProperty.Edit; with TfrmStringMultPropertyEdit.Create(nil) do Value := GetStrValue(); if ShowModal = mrok then SetStrValue(Value); Release; TStringProperty は文字列のプロパティエディタのクラスですこれを継承して処理をオーバーライドします複数のプロパティエディタのクラスを継承して便利に変更します unit upropedtstringmult; Interface Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; TfrmStringMultPropertyEdit = class(tform) pnlbottom: TPanel; btnok: TButton; btncancel: TButton; pnlclient: TPanel; bvlclient: TBevel; memostringmult: TMemo; lbllines: TLabel; procedure memostringmultchange(sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure cbwanttabsclick(sender: TObject); private function GetValue: String; procedure SetValue(const Value: String); procedure UpdateLinesMessage; public.dfm property Value: String read GetValue write SetValue; 処理部 String に改行をいれる処理部分 TLabel の Caption フ ロハ ティは ENTER で改行して下に伸びる ( 裏技的です ) 文字入力文字入力文字入力

UNIT ファイル上のクラスのアクセス保護 unit ComponentContainer; TStringsContainerX = class(tcomponentex) private このクラスだけがアクセスできる FStrings: TStrings; procedure SetStringsMemo(const Value: TStrings); protected これを継承したクラスだけがアクセスできる public このUNITを参照するすべてでアクセスできる constructor Create(aowner: TComponent); override; destructor Destroy; override; published この UNIT を参照するすべてでアクセスできる property Strings: TStrings read FStrings write SetStringsMemo; ここのプロパティは IDE 上で書き込み読み出しができる

VCL のクラス階層 TObject Exception TSTream TPersistent TPrinter TList コードのみ記入コンホ ーネントハ レットに登録できる TComponent コンホ ーネントハ レットに登録できて TGraphicControl TWinControl 位置のプロパティを持つ TScrollingWinControl TForm 基本のファイル拡張子 BPL (Borland Package Library) 設計時に Delphi IDEで使用されるファイルこれで設計時にコンポーネントが動作できる (DLLと同じ) DCP (Delphi Component Package) パッケージにコンパイルしたコードのシンボル情報を含むファイルコンパイルしたコードはDCUにあるコンパイルに必要 DCU (Delphi Compiled Unit) PASファイルをコンパイルしたもの DFM (Delphi Form) フォームファイル ( テキスト形式 ) DPK (Delphi Package) パッケージのプロジェクトソースコードファイル DPR (Delphi Project) プログラムのプロジェクトソースコードファイル EXE (Executable) Windows 実行ファイル PAS (Pascal) Pascalユニットのソースコードファイル

新コンポーネントの狙いと機能 新コンポーネント名 機能 親コンポーネント 追加フ ロハ ティ 使いみち 親コンホ ーネネトに文字型の Tag を追加した Tcomponent property TagString: string 文字列の TAG コンポの説明文の記述 プログラムで使用する一次的な文字列の保存 TStringsContainerX 文字列リストを保存するコンテナー TMEMO は Form 上しか貼れないため property Strings: Tstrings 文字列リスト プログラムで使用する文字列リストを保管する データの並び変え 条件データの保存 TMemoryStreamContainerX 指定したコンポーネントのプロパティをメモリ上に保存 復元するコンテナー property TargetComponent: TComponent 対象コンポーネント property ExecuteMode: TmcMode 退避 復元の指定 property Execute: Boolean 実行する コンポーネントのプロパティの一次退避 復元 TComponentContainer 指定したコンポーネントのプロパティをファイル上に保存 復元するコンテナー property TargetComponent: TComponent 対象コンポーネント property ExecuteMode: TmcMode 退避 復元の指定 property Execute: Boolean 実行する コンポーネントのプロパティのファイル退避 復元 例 ) DB の設定フ ロハ ティ Printer 設定フ ロハ ティ TComponentsListUp 指定したコンポーネントから子のコンポーネントの情報を取り出す property ownercompo: Tcomponent 親のコンポを指定 property Execute: Boolean 実行する property ComponentsList: TStringsContainerX 実行結果の保存 使っているコンポーネントの一覧情報の取得