小编Vit*_*.us的帖子

如何创建一个像Windows 7 Notifications Flyouts的窗口,(WS_THICKFRAME但不可调整)

我刚刚在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允许用户调整窗口大小.我怎样才能解决这个问题?

可调整窗口问题

delphi winapi resizable windows-7 flyout

7
推荐指数
1
解决办法
4169
查看次数

如何在delphi中检测多语言项目的系统语言?

我需要翻译其他语言的程序,实际上我有3种语言的相同程序(英语,西班牙语,葡萄牙语),但我翻译,重新编译,我有3个单独的可执行文件.并添加更多语言,保持链接,添加新功能让我发疯.

所以现在我决定保留一个可执行文件和一个外部语言文件,所以添加新语言不需要重新编译,只需用文本编辑器编辑语言文件,一切正常.

我想将所有语言保存在一个外部文件中.喜欢international.lang

[portuguese]
greeting="Bem-vindo"

[spanish]
greeting="Ben venido"
Run Code Online (Sandbox Code Playgroud)

如果文件international.lang不存在,或者您的语言不在文件中,默认情况下程序将以英文启动,没有错误.就像大多数基于资源的多语言程序一样.

那么问题是,如何在delphi中检测Windows语言?对我的方法有什么想法吗?有没有办法以编程方式替换对话框上的所有字幕?

ps:我正在使用delphi7,我找不到任何好的免费组件.

delphi multilingual locale translation

7
推荐指数
1
解决办法
8263
查看次数

使用数据类型为HTML的Jquery AJAX函数

我们有一个完整的代码,用于通过带有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)

html javascript ajax jquery

6
推荐指数
1
解决办法
10万
查看次数

为什么空按钮不与里面有文本的按钮垂直对齐?

我有一个带按钮的工具栏,有些里面有文字,有些没有。出于某种原因,我不太明白,它们没有垂直对齐。

为什么?以及如何解决它?

截屏

#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)

http://jsfiddle.net/hjo41wm2/

html css layout button

6
推荐指数
1
解决办法
1240
查看次数

如何在承诺的 then 回调中设置“this”的上下文

当我打电话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)

javascript this promise

5
推荐指数
1
解决办法
1891
查看次数

如何在弹性项目中垂直居中文本?

我只想要文字如下:

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)

html css css3 centering flexbox

5
推荐指数
1
解决办法
5350
查看次数

Javascript函数比较两个版本

我正在编写一个函数来比较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)

javascript algorithm version-control

4
推荐指数
1
解决办法
1790
查看次数

如何在Delphi中使用"Native Wifi API"Windows API函数

我试图在delphi上使用Windows API中的函数,Windows Wlanapi.dll(Native WIFI API)的函数

WlanOpenHandle

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)

delphi dll winapi wlanapi

4
推荐指数
1
解决办法
6462
查看次数

使用WinAPI将击键发送到另一个应用程序

我有喜欢发送击键它来控制其他应用程序CTRLSCTRLSHIFTCCTRLF.

我尝试了很多东西,但是我无法让它发挥作用.所以我试图在一个更简单的案例中做到这一点.

这成功发送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)

delphi winapi postmessage delphi-7 sendmessage

4
推荐指数
1
解决办法
2万
查看次数

打开和关闭调试代码的方法

我正在编写一个针对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++功能允许我这样做而不是预处理器吗?

c++ debugging

4
推荐指数
1
解决办法
2116
查看次数