delphi下拉菜单(mainmenu)字体怎么设置?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi下拉菜单(mainmenu)字体怎么设置?相关的知识,希望对你有一定的参考价值。
之前有看到人这样说 ,但是我的字体名字不管怎么换都不变,试过了隶书,微软雅黑等等!!!
窗体上放一MainMenu1,包含的菜单项为MenuItem1,MenuItem2...
设置为MainMenu的OwnerDraw为True,
MenuItem1的OnDrawItem事件:
procedure TForm1.MenuItem1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
ACanvas.FillRect(ARect);
ACanvas.Font.Size:=20; //设置为足够大的字号
ACanvas.Font.Name:= 'Times New Roman '; //设置为你喜欢的字体
//输出菜单项
ACanvas.TextOut(ARect.Left,ARect.Top,(Sender as TMenuItem).Caption);
end;
MenuItem1的OnMeasureItem事件:
procedure TForm1.MenuItem1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Height:=40; //设置为足够高以容纳你的菜单项
Width:=200; //设置为足够宽以容纳你的菜单项
end;
将其他菜单项的OnDrawItem设置为MenuItem1DrawItem
OnMeasureItem设置为MenuItem1DrawItem
将菜单的的OwnerDraw为True
然后自定义重绘事件,就可以了,代码如下:
procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;ARect: TRect; Selected: Boolean);
begin
ACanvas.FillRect(ARect);
ACanvas.Font.Size:=15; //设置为足够大的字号
ACanvas.Font.Name:= \'仿宋\'; //设置为你喜欢的字体
//输出菜单项
ACanvas.TextOut(ARect.Left,ARect.Top,(Sender as TMenuItem).Caption);
end;
procedure TForm1.N1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Height:=40; //设置为足够高以容纳你的菜单项
Width:=200; //设置为足够宽以容纳你的菜单项
end;
把要重绘的菜单项的事件指以上事件即可,效果如下:
右键弹出菜单相同
参考技术A 我试了代码没问题,会不会你 MainMenu的OwnerDraw没有设置为True,追问设置了,你那里不同字形也都设置了?
追答我是随便改一下字体 ,跟你的例子一样。
追问我只能设置字体大小,字体字形不能
参考技术B Delphi默认菜单控件mainmenu是不能设置字体的,因为标题栏字体、菜单字体WINDOWS统一的外观的一部分(也是所有程序都是一样的),由于要设置可以自绘或使用第三方控件如XPMenu等。追问不会用这个插件,网上也搜不到讲解。。。
参考技术C 改变Font Type的属性叫Typeface默认情况下,android只支持
sans,
serif,
monospace
三种内嵌字体.
如果要使用自定义的字体,请将字库的ttf导入资源,再引用(过程不简单,具体请谷歌)追问
安卓?
追答恩
追问我用的是电脑和安卓有什么关系?
把cmd窗口的字体设为新宋体
cmd窗口的字体有点阵字体和新宋体,但输入command命令,再修改字体,以后的cmd窗口的字体只有Lucida Console和点阵字体,没有新宋体,这时怎么才能把cmd窗口的字体设置新宋体?
修改快捷方式的属性除外
1. 进入开始菜单,选择 “运行”程序,输入cmd命令, 就能打开命令提示符。
2. 重新设置字体及窗口大小:
在命令提示符窗口标题栏上,左上角右键 ,在弹出的菜单中选择 “属性”。
3. 按需修改字体或大小即可。
4.其它属性设置:
选项
布局
颜色
终端
参考技术A 自定义cmd窗口位置、大小、字体等等属性1、默认设置:
HKEY_CURRENT_USER\Console
2、自定义设置:
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
3、键及值:
"WindowPosition"=dword:00640104
"CodePage"=dword:000003a8
"FontSize"=dword:00100008
"FontFamily"=dword:00000030
"FontWeight"=dword:00000190
"HistoryNoDup"=dword:00000000
"FullScreen"=dword:00000000
"ScreenColors"=dword:000000ce
"ScreenBufferSize"=dword:12c0050
4、键值意义:
各键值均为十六进制表示
窗口位置-----WindowPosition---高四位为上,低四位为左。
如00640104,即距屏幕上沿64H=100,距屏幕左沿104H=260
字体大小-----FontSize---------高四位为字高,低四位为字宽
如00100008,即字体宽×高=08H×10H=8×16
全屏幕-------FullScreen-------0:窗口 1:全屏幕(此时WindowPosition失效)
窗口尺寸-----WindowSize-------高四位为高度,低四位为宽度
默认00190050,即高19H=25行,宽50H=80列
缓冲区尺寸---ScreenBufferSize-高四位为高度,低四位为宽度
默认012c0050,即高12cH=300行,宽50H=80列
字体颜色-----ScreenColors-----低两位同color设置中的字体颜色值
字体类型-----FontFamily-------36:新宋体 30:点阵字体
当前代码页---CodePage---------默认3a8H=936:ANSI/OEM-简体中文GBK
丢弃旧副本---HistoryNoDup-----0:不丢弃 1:丢弃旧副本
5、自定义与默认关系:
系统首先在自定义里面查找相关设置,若自定义中没有,则到默认里面查找。
即自定义优先级高于默认。
6、批处理设定窗口属性
set rr="HKCU\Console\%%SystemRoot%%_system32_cmd.exe"
reg delete %rr% /f>nul
reg add %rr% /v "WindowPosition" /t REG_DWORD /d 0x00640104 /f>nul
reg add %rr% /v "WindowSize" /t REG_DWORD /d 0x00190050 /f>nul
reg add %rr% /v "ScreenBufferSize" /t REG_DWORD /d 0x00190050 /f>nul
reg add %rr% /v "FullScreen" /t REG_DWORD /d 0x00000001 /f>nul
reg add %rr% /v "FontSize" /t REG_DWORD /d 0x00100008 /f>nul
7、字体大小:
(1)点阵字体(较小)
3×5-------00050003
5×8-------00080005
6×12------000c0006
6×13------000d0006
8×16------00100008
8×18------00120008
10×20-----0014000a
10×22-----0016000a
12×27-----001b000c
(2)新宋体(较大)
6----00060000---3*7
8----00080000---4*9
10---000a0000---5*11
12---000c0000---6*14
14---000e0000---7*16
16---00100000---8*18
18---00120000---9*21
20---00140000---10*23
24---00180000---12*27
28---001c0000---14*32
36---00240000---18*41
72---00480000---36*82
以上是自定义cmd窗口属性的基本知识,下面提供一个实例,是一个小游戏:猜数字。
@echo off
set rr="HKCU\Console\%%SystemRoot%%_system32_cmd.exe"
reg add %rr% /v "WindowPosition" /t REG_DWORD /d 0x0064020b /f>nul
reg add %rr% /v "WindowSize" /t REG_DWORD /d 0x000e0015 /f>nul
reg add %rr% /v "ScreenBufferSize" /t REG_DWORD /d 0x000e0015 /f>nul
if not defined ff (set ff=0&start cmd /c %0&exit)
::mode con cols=21 lines=14
title 猜数字
setlocal enabledelayedexpansion
cd /d %TEMP%
>tmp.bat echo @echo off
>>tmp.bat echo title 输入数字
>>tmp.bat echo for /l %%%%i in (1,1,6) do echo.
>>tmp.bat echo set /p num=输入数字:
>>tmp.bat echo echo %%num%%^>tm.tmp
>>tmp.bat echo exit
:main
cls
set times=0
echo 次 数字 状况
:again
set n1=%random:~-1%
set n2=
set n3=
set n4=
:value
set n=%random:~-1%
if "%n2%"=="" if %n% NEQ %n1% set n2=%n%
if "%n3%"=="" if %n% NEQ %n1% if %n% NEQ %n2% set n3=%n%
if "%n4%"=="" if %n% NEQ %n1% if %n% NEQ %n2% if %n% NEQ %n3% set n4=%n%
if "%n4%"=="" goto :value
::echo %n1%,%n2%,%n3%,%n4%
:check
if %times% EQU 8 goto :end
set A=0&set B=0&set m=0
reg add %rr% /v "WindowPosition" /t REG_DWORD /d 0x0064015c /f>nul
reg add %rr% /v "WindowSize" /t REG_DWORD /d 0x000e0015 /f>nul
reg add %rr% /v "ScreenBufferSize" /t REG_DWORD /d 0x000e0015 /f>nul
start /wait cmd /k tmp.bat
reg delete %rr% /f>nul
set /p num=<tm.tmp
del tm.tmp&set /a times+=1
if /i "%num%"=="exit" (del tm.tmp&del tmp.bat&exit)
for %%i in (%n1%,%n2%,%n3%,%n4%) do (
(echo %num%|find "%%i")>nul&&(
set /a B+=1
call set k=%%num:~!m!,1%%
if "%%i"=="!k!" set /a A+=1
)&set /a m+=1
)
echo %times% %num% %A%A%B%B
if %A% NEQ 4 goto :check
del tmp.bat
echo 恭喜你,答对了!
pause>nul
exit
:end
echo.
echo 你已试了8次了!
echo 答案是%n1%%n2%%n3%%n4%
echo 再来一次吧!
set /p ff=
if /i "%ff%"=="N" (del tmp.bat&exit)
goto :main本回答被提问者采纳
以上是关于delphi下拉菜单(mainmenu)字体怎么设置?的主要内容,如果未能解决你的问题,请参考以下文章
delphi的mainmenu,点击下拉菜单,会向右下角移动的问题
delphi用MainMenu1做了个菜单栏,本来是一行的,但是一缩小当前窗口就成了两行了,。。。。。。
Delphi怎么才能让menuitem中的菜单每次只能勾选一个。