我刚刚在Delphi 7中制作了一个小应用程序,它模拟了默认的系统图标,如音量,电池,时钟,网络.
我正在尝试遵循所有Microsoft的建议http://msdn.microsoft.com/en-us/library/aa511448.aspx#flyouts
为了使窗口看起来像弹出窗口,我正在使用此代码:
//declaration
TForm1 = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
Run Code Online (Sandbox Code Playgroud)
履行
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := WS_POPUP or WS_THICKFRAME;
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是WS_THICKFRAME允许用户调整窗口大小.我怎样才能解决这个问题?

我需要翻译其他语言的程序,实际上我有3种语言的相同程序(英语,西班牙语,葡萄牙语),但我翻译,重新编译,我有3个单独的可执行文件.并添加更多语言,保持链接,添加新功能让我发疯.
所以现在我决定保留一个可执行文件和一个外部语言文件,所以添加新语言不需要重新编译,只需用文本编辑器编辑语言文件,一切正常.
我想将所有语言保存在一个外部文件中.喜欢international.lang
[portuguese]
greeting="Bem-vindo"
[spanish]
greeting="Ben venido"
Run Code Online (Sandbox Code Playgroud)
如果文件international.lang不存在,或者您的语言不在文件中,默认情况下程序将以英文启动,没有错误.就像大多数基于资源的多语言程序一样.
那么问题是,如何在delphi中检测Windows语言?对我的方法有什么想法吗?有没有办法以编程方式替换对话框上的所有字幕?
ps:我正在使用delphi7,我找不到任何好的免费组件.
我们有一个完整的代码,用于通过带有JSON数据类型的Jquery AJAX从PHP获取值.这是代码.
HTML代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax submit</title>
<link href="css/main.css" type="text/css" media="screen, projection"rel="stylesheet" />
</head>
<body>
<div id="wrapper">
<div id="message" style="display: none;">
</div>
<div id="waiting" style="display: none;">
Please wait<br />
<img src="images/ajax-loader.gif" title="Loader" alt="Loader" />
</div>
<form action="" id="demoForm" method="post">
<fieldset>
<legend>Demo form</legend>
<span style="font-size: 0.9em;">TEST by ROD</span>
<p>
<label for="email">E-Mail:</label>
<input type="text" name="email" id="email" value="" />
</p>
<p>
<input type="submit" name="submit" id="submit" style="float: right; clear: both; margin-right: 3px;" value="Submit" />
</p>
</fieldset>
</form>
</div>
<script …Run Code Online (Sandbox Code Playgroud) 我有一个带按钮的工具栏,有些里面有文字,有些没有。出于某种原因,我不太明白,它们没有垂直对齐。
为什么?以及如何解决它?

#tools{
border: 1px solid black;
}
#tools button{
border-width: 2px;
border-style: outset;
border-color: #ccc;
height: 24px;
width: 24px;
font-size: 9pt;
}
#tools button:active{
border-style: inset;
}
button.Bl{
font-weight: bold;
}
button.Bo{
font-style: italic;
}
button.B4{
background-color: #A00;
text-shadow: 0.15em 0.15em #2A0000;
}
button.Bc{
background-color: #F55;
text-shadow: 0.15em 0.15em #3F1515;
}Run Code Online (Sandbox Code Playgroud)
<div id="tools">
<button class="B4 pallete" title="§4 Dark Red"></button>
<button class="Bc pallete" title="§c Red"></button>
<button class="Bl pallete" title="§r Bold">B</button>
<button class="Bo pallete" title="§r Italic">I</button>
</div>Run Code Online (Sandbox Code Playgroud)
当我打电话resolve()上的无极,其内部的,则函数()被绑定到的范围window。
有什么方法可以像使用Function.apply方法一样设置 this 的上下文?
function Point(){
var that = this;
var _x = 0;
this.setX = function(x){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
_x = x;
resolve.apply(that); //<== set this
}, 1000);
});
}
this.getX = function(){
return _x;
}
}
var p = new Point();
p.setX(10).then(function(){
console.log(this.getX()); //this === `window`
});Run Code Online (Sandbox Code Playgroud)
编辑:
详细说明,使用同步代码,您可以通过简单地一遍又一遍地返回相同的对象来进行方法链。
//this pattern
obj.method1();
obj.method2();
...
//becomes this pattern
obj.method1(10).method2(11) ...
Run Code Online (Sandbox Code Playgroud)
链接的实现
method1 = function(x){
return this;
}
Run Code Online (Sandbox Code Playgroud)
谈到异步,你仍然可以用回调做同样的事情
obj.method1(10, …Run Code Online (Sandbox Code Playgroud) 我只想要文字如下:
display: table-cell;
vertical-align: middle;
Run Code Online (Sandbox Code Playgroud)
但使用柔性盒
div {
border: 1px solid black;
}
.box {
display: flex;
flex-flow: column nowrap;
justify-content: center;
align-content: center;
align-items: stretch;
height: 200px;
}
.box div {
order: 1;
flex: 0 1 auto;
align-self: auto;
min-width: 0;
min-height: auto;
}
.box div.C {
flex: 1 1 auto;
}Run Code Online (Sandbox Code Playgroud)
<div class="box">
<div class="A">A</div>
<div class="B">B</div>
<div class="C">C</div>
<div class="D">D</div>
<div class="E">E</div>
<div class="F">F</div>
</div>Run Code Online (Sandbox Code Playgroud)
我正在编写一个函数来比较2个版本,如果第二个版本比第一个版本大,则返回true.
但我的算法有一个"洞",我无法弄清楚如何修复.
function compareversion(version1,version2){
var result=false;
if(typeof version1!=='object'){ version1=version1.toString().split('.'); }
if(typeof version2!=='object'){ version2=version2.toString().split('.'); }
for(var i=0;i<(Math.max(version1.length,version2.length));i++){
if(version1[i]==undefined){ version1[i]=0; }
if(version2[i]==undefined){ version2[i]=0; }
if(version1[i]<version2[i]){
result=true;
break;
}
}
return(result);
}
Run Code Online (Sandbox Code Playgroud)
这个例子按预期返回
compareversion('1','1') //false
compareversion('1','1.0.0') //false
compareversion('2.0','1.0.0') //false
compareversion('1.1','1.2') //true
compareversion('1','1.0.0.1') //true
Run Code Online (Sandbox Code Playgroud)
但是这个
compareversion('1.1.0','1.0.1') //return true but should be false
Run Code Online (Sandbox Code Playgroud) 我试图在delphi上使用Windows API中的函数,Windows Wlanapi.dll(Native WIFI API)的函数
DWORD WINAPI WlanOpenHandle(
__in DWORD dwClientVersion,
__reserved PVOID pReserved,
__out PDWORD pdwNegotiatedVersion,
__out PHANDLE phClientHandle
);
Run Code Online (Sandbox Code Playgroud)
WlanHostedNetworkQueryProperty
DWORD WINAPI WlanHostedNetworkQueryProperty(
__in HANDLE hClientHandle,
__in WLAN_HOSTED_NETWORK_OPCODE OpCode,
__out PDWORD pdwDataSize,
__out PVOID *ppvData,
__out PWLAN_OPCODE_VALUE_TYPE *pWlanOpcodeValueType,
__reserved PVOID pvReserved
);
Run Code Online (Sandbox Code Playgroud)
我试图使用这些功能和其他人几个小时,阅读MSDN参考和其他网站,但我不能让这个工作.
我的尝试
type
TWlanOpenHandle = function( dwClientVersion:DWORD;
pReserved:Pointer;
pdwNegotiatedVersion:PDWORD;
phClientHandle:PHANDLE
):DWORD; stdcall;
function apiWlanOpenHandle( dwClientVersion:DWORD;
pReserved:Pointer;
pdwNegotiatedVersion:PDWORD;
phClientHandle:PHANDLE
):DWORD;
implementation
function apiWlanOpenHandle ( dwClientVersion:DWORD; pReserved:Pointer; pdwNegotiatedVersion:PDWORD; phClientHandle:PHANDLE ):DWORD;
var
WlanOpenHandle: TWlanOpenHandle;
DLL: Cardinal;
begin
DLL:=LoadLibrary('Wlanapi.dll'); …Run Code Online (Sandbox Code Playgroud) 我有喜欢发送击键它来控制其他应用程序CTRLS或CTRLSHIFTC或CTRLF.
我尝试了很多东西,但是我无法让它发挥作用.所以我试图在一个更简单的案例中做到这一点.
这成功发送Hey到记事本:
procedure TForm1.Button1Click(Sender: TObject);
var notepad, edit: HWND;
begin
notepad := FindWindow('notepad', nil);
edit := FindWindowEx(notepad, FindWindow('Edit', nil), nil, nil);
SendMessage(edit, WM_CHAR, dword('H'), 0);
SendMessage(edit, WM_CHAR, dword('e'), 0);
SendMessage(edit, WM_CHAR, dword('y'), 0);
end;
Run Code Online (Sandbox Code Playgroud)
这成功地将F5密钥发送到记事本,并且还可以F3弹出查找对话框.
notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_F5, 0);
PostMessage(notepad, WM_KEYUP, VK_F5, 0);
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么使用SendMessage上面的例子不起作用.
我能提出的最好的事情就是这样,什么都不做.
notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(notepad, WM_KEYDOWN, VkKeyScan('F'), 0); …Run Code Online (Sandbox Code Playgroud) 我正在编写一个针对arduino的manchester解码算法,我经常不得不在尝试工作时打印调试内容,但是打印到串口和字符串常量会增加很多开销.我不能把它留在最后的二进制文件中.
我通常只是通过代码删除任何调试相关的行.我正在寻找一种方法来轻松打开和关闭它.
我知道的唯一方法就是这个
#if VERBOSE==1
Serial.println();
Serial.print(s);
Serial.print(" ");
Serial.print(t);
Serial.print(" preamble");
#endif
...
#if VERBOSE==1
Serial.println(" SYNC!\n");
#endif
Run Code Online (Sandbox Code Playgroud)
在我可以拥有的文件之上
#define VERBOSE 0 // 1 to debug
Run Code Online (Sandbox Code Playgroud)
我不喜欢它给单线增加了多少杂乱.我非常想做一些非常讨厌的事情.但是,邪恶.
将每个调试输出更改为
verbose("debug message");
Run Code Online (Sandbox Code Playgroud)
然后用
#define verbose(x) Serial.print(x) //debug on
Run Code Online (Sandbox Code Playgroud)
要么
#define verbose(x) //debug off
Run Code Online (Sandbox Code Playgroud)
有一个C++功能允许我这样做而不是预处理器吗?
delphi ×4
html ×3
javascript ×3
winapi ×3
css ×2
ajax ×1
algorithm ×1
button ×1
c++ ×1
centering ×1
css3 ×1
debugging ×1
delphi-7 ×1
dll ×1
flexbox ×1
flyout ×1
jquery ×1
layout ×1
locale ×1
multilingual ×1
postmessage ×1
promise ×1
resizable ×1
sendmessage ×1
this ×1
translation ×1
windows-7 ×1
wlanapi ×1