我開發了一個傳統的Delphi 6應用程序,並且我想增加其中一個窗體的字體大小。所有其他形式有Microsoft Sans Serif 8pt
,但是這一個設置爲Microsoft Sans Serif 7pt
。所有控件都有ParentFont = True
,所以我可以簡單地將表單的字體大小設置爲8pt
。問題在於表單及其控件不會調整大小,並且標籤的文本會重疊。是否有一種調整字體大小後調整窗體大小的簡單方法,而無需在窗體編輯器中手動調整窗體大小?在窗體編輯器中調整字體大小後調整Delphi窗體的大小
4
A
回答
4
在設計時您可以通過手動編輯.dfm文件來實現更改。確保將表格保存爲Scaled
屬性設置爲True
。
然後,在Delphi中關閉您的項目,或完全關閉Delphi。接下來在文本編輯器中打開.dfm文件並調整TextHeight
屬性的形式。例如,如果要從7pt縮放到8pt,並且TextHeight
設置爲13
,則應將其更改爲11
。然後重新加載項目並在設計器中打開表單,表單將被縮放。這不會是一個完美的縮放比例,因爲您不允許浮點值爲TextHeight
。但它可能夠好。
在運行時,你可以調用ChangeScale
:
ChangeScale(NewFont.Size, OldFont.Size);
注意ChangeScale
是一個受保護的成員。所以,根據你在哪裏調用這個,你可能需要使用受保護的成員hack。
然後,一個選項是在運行時調用表單持久性框架以生成.dfm文件的縮放版本。這將使你更精確的控制不是玩弄花招與TextHeight
例如,您可以附加以下爲OnShow
事件的形式:
procedure TMyForm.FormShow(Sender: TObject);
var
BinaryStream, TextStream: TStream;
begin
BinaryStream := TMemoryStream.Create;
Try
BinaryStream.WriteComponent(Self);
BinaryStream.Position := 0;
TextStream := TFileStream.Create('MyForm.dfm', fmCreate);
Try
ObjectBinaryToText(BinaryStream, TextStream);
Finally
TextStream.Free;
End;
Finally
BinaryStream.Free;
End;
end;
這將基於該新.DFM文件運行時狀態。然後,您可以將其與您的版本控制系統中的.dfm文件的版本進行比較。將會有一些您不想接受的更改,但大多數更改將是您希望的位置和大小更改。
相關問題
- 1. 根據窗體調整大小和調整窗體控件調整大小
- 2. 如何在FormLayoutPanel中調整窗體的大小時調整窗體的大小?
- 3. Windows窗體調整大小
- 4. 調整窗體大小調整控件
- 5. 在調整窗體大小時調整窗體元素
- 6. 使用JQuery調整窗口大小調整CSS字體大小
- 7. 禁用窗體窗口調整大小?
- 8. LibGDX調整窗口字體大小圖
- 9. 窗體大小調整和最大化
- 10. 調整大小主窗體調整大小(WPF,C#)
- 11. Tkinter:在調整大小的窗口的按鈕中調整字體的大小
- 12. 在C#中垂直(僅)可調整大小的窗體窗體#
- 13. 根據窗口大小調整標籤和窗體字體的大小
- 14. 在Windows窗體和本地化中調整窗體大小
- 15. 禁止用戶在特定大小後調整窗體大小
- 16. 調整C#Windows窗體的大小
- 17. 調整窗體大小的問題
- 18. 調整窗體大小的控件
- 19. jquery調整窗體的大小「formAddNewRow」
- 20. 調整字體大小的字體真棒字體的大小
- 21. ExtJs 4 - 調整窗口大小的窗體項目調整大小
- 22. PowerShell窗體調整大小事件
- 23. 用windowbuilder重新調整窗體大小
- 24. C#:使窗體不可調整大小
- 25. vb.net窗體自動調整大小
- 26. 禁用調整Windows窗體大小
- 27. 窗體自動調整大小功能
- 28. 窗體圖標調整大小錯誤
- 29. 如何使窗體調整大小C#
- 30. 由其子女調整窗體大小
謝謝大衛,但我想調整窗體的「開發時間」,而不是「運行時」。 – kol
對不起,錯過了。嘗試我的更新。 –
@kol我個人的感覺是'ChangeScale'的運行時選項仍然是最好的。這會給你最準確的縮放比例。 –