全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2034
推到 Plurk!
推到 Facebook!

TForm 如何自訂 ClassName

答題得分者是:sryang
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-28 12:30:32 IP:61.62.xxx.xxx 訂閱
TForm 如何自訂 ClassName


TForm =class (Form)
.....


如何將 TForm 改成非 T的Class Name如 RFrom






目前用SDK寫法




[code delphi]
program Project1;
uses

Windows,
Messages,
Dialogs,
SysUtils;

{the Messages unit contains the windows
Message constants like WM_COMMAND}

{$R *.RES}

var
wClass: TWndClass;
Msg: TMsg;

function WindowProc(hWnd,Msg,wParam,lParam:Integer):Integer; stdcall;
begin
if Msg = WM_DESTROY then PostQuitMessage(0);

if Msg = WM_SYSCOMMAND then Showmessage('WM_SYSCOMMAND');


if Msg = WM_CHAR then Showmessage('WM_CHAR');
if Msg = WM_KEYDOWN then begin

Showmessage(Format('WM_KEYDOWN %d %d',[wParam,lParam] ));

end;

Result := DefWindowProc(hWnd,Msg,wParam,lParam);

end;
begin
wClass.lpszClassName:= 'RFrom';
wClass.lpfnWndProc := @WindowProc;
{CreateWindow( ) will not work without setting the
2 wClass parameters above}
wClass.hInstance := hInstance;
wClass.hbrBackground:= 1;
{CreateWindow( ) will still create a window without the
2 wClass parameters above, but they shoud be included}
// wClass.hIcon := LoadIcon(hInstance,'MAINICON');
// wClass.hCursor := LoadCursor(0,IDC_ARROW);
RegisterClass(wClass);
CreateWindow(wClass.lpszClassName,'MyClassName',
WS_OVERLAPPEDWINDOW or WS_VISIBLE,
10,10,340,220,0,0,hInstance,nil);
while GetMessage(Msg,0,0,0) do
DispatchMessage(Msg);
end. //program end

[/code]
mp394681143
一般會員


發表:64
回覆:40
積分:20
註冊:2009-10-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-10-30 02:49:38 IP:61.136.xxx.xxx 訂閱
有這麽多人點,就沒人說話?小弟是新手很想幫樓上,可惜...
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-10-30 14:06:13 IP:59.125.xxx.xxx 訂閱
RForm  = class(TForm)
這樣寫不行嗎?
沒有人規定 class name 一定要 T 開頭,這只是 Delphi 的命名慣例罷了
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-10-30 15:12:00 IP:61.62.xxx.xxx 訂閱

===================引 用 sryang 文 章===================
RForm = class(TForm)
這樣寫不行嗎?
沒有人規定 class name 一定要 T 開頭,這只是 Delphi 的命名慣例罷了



是可以改,但編譯一直Error ,應該跟Resource 有關係.
目前尚無好的方式 改 'T'
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-10-30 15:24:23 IP:59.125.xxx.xxx 訂閱
DFM 檔也要切到文字顯示來改

[code delphi]
object Form1: RForm1
Left = 289
Top = 128
Width = 251
Height = 201
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end
[/code]

另外,編譯的時候,要把 Form 設計畫面切換成文字顯示(Alt-F12),就可以編譯成功了

不過因為 Delphi 的 IDE 把 Class 名稱抓死了,一定要是 'T' Form Name,否則就不能 RAD
會出現你說的錯誤訊息

我很好奇,一定要改的理由是什麼?
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2009-10-30 15:25:57, 註解 無‧
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-10-30 15:42:09 IP:61.62.xxx.xxx 訂閱


我很好奇,一定要改的理由是什麼?

RE: 案例 A程式 會 FindWindow 送 Message 給 B 程式

我想替換掉 B 程式 ,但B 的ClassName 不是'T'

系統時間:2024-04-24 12:13:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!