1. 程式人生 > >Delphi 通過字串例項化類

Delphi 通過字串例項化類

D2007 通過字串建立窗體類物件
1、需要在程式初始化的時候將類註冊,註冊到物件 RegGroups:(TRegGroups)中,以便查詢。
註冊類使用的函式:RegisterClass ,窗體初始化操作放在initialization 中。

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TfrmReg = class(TForm)
  private
    { Private declarations }
public { Public declarations } end; var frmReg: TfrmReg; implementation {$R *.dfm} initialization //初始化開始 RegisterClass(TfrmReg) ; //註冊類物件 end.

2、利用FindClass根據類名來查詢類物件。

//根據類名建立物件
procedure TForm1.Button1Click(Sender: TObject);
var
  FormClass : Tformclass ;
  Form : TForm ;
begin
   FormClass := Tformclass(findclass('TfrmReg'
)) ; Application.Createform(FormClass,Form) ; Form.Show ; end;

initialization —— 在單元中放在檔案結尾前,包含用來初始化單元的程式碼,它在主程式執行前執行並且只執行一次。

finalization —— 在單元中放在 initialization 和 end. 之間,包含了單元退出時的程式碼。在程式退出時執行並且只執行一次。

相關推薦

Delphi 通過字串例項

D2007 通過字串建立窗體類物件 1、需要在程式初始化的時候將類註冊,註冊到物件 RegGroups:(TRegGroups)中,以便查詢。 註冊類使用的函式:RegisterClass ,窗體初始化操作放在initialization 中。 un

Delphi根據字串例項物件

我們可以通過ClassRegistry單元的TClassRegistry類很輕鬆的根據字串創建出物件。 下面是該類幾個主要函式的說明: Code// 獲取TClassRegistry自身的單例引用classfunction GetClassRegistry: TClassRe

C# 反射通過例項

在面向物件程式設計的時候,會遇到這樣的問題,一個父類有多個子類,需要建立一個父類的物件,再後面根據條件去把該物件例項化具體的某個子類,然後進行操作。當然用if else 或者switch來做也可以,但是後期擴充套件性不好,特別是要把這些類封裝成dll提供給被人用

C# 通過反射例項窗體(窗體不固定或窗體數量多)

private void button_Click(object sender, EventArgs e) { //通過按鈕名稱開啟窗體 string btnName = ((Button)sender).Tag.ToString(); string name = Asse

建立java例項物件

建立java類並例項化類物件例一1.面向物件的程式設計關注於類的設計2.設計類實際上就是設計類的成員3.基本的類的成員,屬性(成員變數)&方法 面向物件思想的落地法則一:1.設計類,並設計類的成員(成員變數&成員方法)2.通過類,來建立類的物件(也稱作類的例項化) public cl

解釋C++例項的指標型別中的new

Intarray * parray = new Intarray();//括號 int * parray = new int(); 兩個都不止是申明,已經初始化了。 第一句是建立(例項化)了一個Intarrya的物件,指標parray指向它。 第二句是建立(分配了)了int型

python:例項物件時提示“TypeError: Employee() takes no arguments”的解決方法

最近開始學習python,學習面向物件的知識時遇到一個問題 在建立例項物件時提示“TypeError: Employee() takes no arguments”,百度翻譯了一下,意思是這個類的建構函式不接受引數 找了半天實在不理解哪裡出問題了,明明都在"_

php實現例項後自動進行錯誤以及異常處理(簡易版)

<?php class App { public function __construct() { /* * ini_set 設定配置項 * display_errors 是否在頁面顯示錯誤資訊 *

例項,怎麼限制只能在堆或棧分配!

昨天一個同學去網易面試C++研發,問到了這麼一個問題:如何限制一個類物件只在棧(堆)上分配空間? 一般情況下,編寫一個類,是可以在棧或者堆分配空間。但有些時候,你想編寫一個只能在棧或者只能在堆上面分配空間的類。這能不能實現呢?仔細想想,其實也是可以滴。 在C

Python動態例項

  反射機制的工廠方法?反射機制的策略模式? import sys def func1(): print('func1') class TestClass(): def p(self): print('you got me!') def Main():

java 利用反射例項物件

package com.zhiru; /* * java 使用反射例項化一個類物件 * 第一種方式:建立類類物件,呼叫類類物件的newInatance方法獲取要例項化的類的物件,然後呼叫物件的s

Spring框架中使用java反射無法例項,使用ReflectionUtils.findMethod

Spring框架中的反射問題 問題描述 在spring的框架的專案中,使用java的反射去例項化一個service類的時候獲取不到該類的物件. try { Class cla = Class.forName(apiName); //資料庫

學習php反射(2)——不用new方法例項

上一篇簡單介紹了 php 反射的幾個常見類的使用方法,但是用反射能做些什麼,你可能還是想象不到, 下面我稍微應用反射類來做點東西,大家知道例項化一個類需要用new 關鍵字,不用 new 可以嗎?答案是可以的,用反射就能實現: 首先建立一個檔案 student.php

雜談 論例項的第六種方式

你知道幾種例項化一個類的方式? new?反射?還有呢? *******************************************美麗的分割線******************************* 筆者總結了一下大概有以下六種方式: (1)通過構造方法例項化一個類; (2)通過Class例

String(物件例項字串比較、物件池、字串常量不可變更)

String的兩種例項化方式 直接賦值和傳統例項化: public class Stringob { public static void main(String[] args) { String str1="hello"; //直接賦值 str是一個物

Java 根據字串例項

public class Test {          public static void main(String[] args) throws InstantiationException, IllegalAccessExceptio

根據字串的形式,自動匯入模組並使用反射找到模組中的,並例項物件,利用importlib和getattr實現的

例如: auth資料夾下一個SCRF.py檔案,裡面有一個Cors類 class CORS(object): def process_request(self): print('666') auth資料

IOS 通過例項

用NSClassFromString(@"MyClassName")來做,具體做法如下: ------------------------------------------------------------------------------------------

java 的建立,如何通過例項物件。

一、 1.建立的類名要大寫。例如Person類,P要大寫。 2.編寫類的屬性,即成員變數。注意屬性對應的資料型別,一般類似身份證號的資料型別都用String。 2.構造方法。當你不寫構造方法時,系

JAVA的newInstance()和new的區別(JAVA反射機制,通過名來獲取該類的例項物件)

newInstance()是實現IOC、反射、面對介面程式設計 和 依賴倒置 等技術方法的必然選擇,new 只能實現具體類的例項化,不適合於介面程式設計。 裡面就是通過這個類的預設建構函式構建了一個物件,如果沒有預設建構函式就丟擲InstantiationException, 如果沒有訪問預設建構函式的許可權