參考了一下Delphi help的內容,又看了EMBT文件的說明,得到以下的結論:
1.dbx driver 會自動載入coinitialize (ADO需要手動載入)。
2.Neutral model只能用在COM+,COM會自動切回Apartment model。
3.Neutral model是M$最後一個提出的Model,也是最推薦的。
所以可得結論:
不用COM+的話,還是用Apartment model就好。
參考資料: Multi-threaded MSSQL dbExpress Driver Usage
2013/07/15
連線Httpsrvr.dll使用Apache
因為是臨時測試,所以就不想用IIS這麼大的服務。於是我把腦筋動到了Apache身上。
底下是轉貼連結作法:
1. Install Apache (I will assume default directory structure for 2.0.52).
2. Copy 'httpsrvr.dll' to your /apache2/cgi-bin directory.
3. In httpd.conf, change the 'Options None' (again assuming defaults for 2.0.52) in to 'Options ExecCGI'.
4. AddHandler isapi-isa .dll to your httpd.conf.
5. Restart Apache.
在XAMPP Lite 1.7.2下正常運作。
參考來源:HTTPSRVR with Apache
底下是轉貼連結作法:
1. Install Apache (I will assume default directory structure for 2.0.52).
2. Copy 'httpsrvr.dll' to your /apache2/cgi-bin directory.
3. In httpd.conf, change the 'Options None' (again assuming defaults for 2.0.52) in
4. AddHandler isapi-isa .dll to your httpd.conf.
5. Restart Apache.
在XAMPP Lite 1.7.2下正常運作。
參考來源:HTTPSRVR with Apache
Delphi2009的httpsrvr.dll有Bug
TWebConnection如果使用Delphi2009所提供的httpsrvr.dll時會出現「Access violation dsnapcon120.bpl」的問題。
不過因為實在是太懶,不想進Source來Debug。
所以借了Delphi7和DelphiXE的httpsrvr.dll來使用,完全沒有出現上述的問題。
可見,這就是Delphi2009的Bug。
不過因為實在是太懶,不想進Source來Debug。
所以借了Delphi7和DelphiXE的httpsrvr.dll來使用,完全沒有出現上述的問題。
可見,這就是Delphi2009的Bug。
2013/07/08
How to change font size on MainMenu / ActionMainMenuBar in Delphi
其實比預期得還要簡單!
原來在TForm上有一個屬性:MenuFont。
只要改變它就可以囉!
TMainMenu 和 TActionMainMenuBar 適用!
Ex:
參考資料:How can I change the fontsize of the mainmenu items in Delphi?
原來在TForm上有一個屬性:MenuFont。
只要改變它就可以囉!
TMainMenu 和 TActionMainMenuBar 適用!
Ex:
procedure TForm2.FormCreate(Sender: TObject);
begin
Screen.MenuFont.Name := 'Arial Black';
end;
參考資料:How can I change the fontsize of the mainmenu items in Delphi?
2013/07/06
Create an item in a TActionMainMenuBar at runtime
從Reference參考得來的作法,原來之前做出來的Menu無法Enabled的問題在於「沒有把TAction」裝在Menu的第一層,所以就會變成無法啟用,可是這在Design Mode下卻可以正常開啟,果然這其中一定有什麼奧秘是我不知道的啊!
不過,暫時先這樣吧!
底下是失敗的例子:
正確的作法應該是:
Reference: Delphi Knowledge Base: Create an item in a TActionMainMenuBar at runtime
不過,暫時先這樣吧!
底下是失敗的例子:
var actItem, actItemA: TActionClientItem; Clients: TActionClients; begin Clients := ActionMainMenuBar1.ActionClient.Items; actItemA := Clients.Add; actItemA.Caption := '&Edit'; actItem := actItemA.Items.Add; actItem.Action := EditCut1; actItem.Visible := True; actItemA.Visible := True;
正確的作法應該是:
var actItem: TActionClientItem; actRun,actRun2: TAction; begin actRun := TAction.Create(Self); actRun.Name := 'H1'; actRun.Category := 'HELLO'; actRun.OnExecute := Action1Execute; actRun2 := TAction.Create(Self); actRun2.Name := 'H2'; actRun2.Category := 'HELLO'; actRun2.OnExecute := Action1Execute; with ActionMainMenuBar1.ActionClient.Items.Add do begin Caption := 'HELLO'; Action := actRun; // 每一層一定都要掛載TAction才會把MenuItem Enable with Items.Add do begin Caption := 'HELLO2'; Action := actRun2; with Items.Add do begin Action := actRun; end; end; Visible := True; end;
Reference: Delphi Knowledge Base: Create an item in a TActionMainMenuBar at runtime
訂閱:
文章 (Atom)