每当我需要在我的for循环中每300次迭代做一次特定动作时,我试图显示(有意义吗?)
这是代码中我想要做的,但不是我想要的方式:
for I := 0 to 2000 do
Begin
if I = 300 then
DoAnAction;
if I = 600 then
DoAnAction
if I = 900 then
DoAnAction
if I = 1200 ......... Same action all over, but I don't want to check all those conditions!
End;
Run Code Online (Sandbox Code Playgroud)
所以我被告知要使用mod运算符,这就是我的工作方式:
for I := 0 to 2000 do
Begin
if I mod 300 = 299 then
DoAnAction;
End;
Run Code Online (Sandbox Code Playgroud)
但是,使用上述代码片段的结果将在299,599,899执行操作....
如何使用Mod操作符在300,600,900 ......进行操作?(而且做得if I mod 300 = 300不好) …
我的树有两级节点 - 它是一个联系人列表样式树.
我的问题是,我希望在所有"联系人类别"中检查所有联系人.这是我现在看的联系人列表的截图(是的,我有权发布)

如您所见,Todd Hirsch在类别测试类别中进行了检查,但未在所有联系人中进行检查.我想要实现的目标是让联系人在每个类别中都具有相同的检查状态.
示例:我在测试类别中检查Todd Hirsch - Todd Hirsch会自动检入所有联系人(以及其他所有类别).如果我在所有联系人中查看Todd Hirsch,他也将在测试类别中进行检查.如果我在所有联系人中取消选中Todd Hirsch,他也将在测试类别中取消选中.
我尝试通过VirtualStringtree的OnChecking事件,通过循环遍历树中每个节点的整个树,但是当联系人列表很大(2000 +)时,它非常慢,当它有5000+时,它甚至可能崩溃我的程序(应用程序已停止工作)
你有什么建议?
这是我用来确保只检查一次联系人的代码.(这不是我现在想要的,但这就是我现在正在使用的.)
////////////////////////////////////////////////////////////////////////////////
/// HasDuplicateChecked
////////////////////////////////////////////////////////////////////////////////
Function HasDuplicateChecked(Node: PVirtualNode): PVirtualNode;
Var
ParentNode, ChildNode: PVirtualNode;
I, J: Integer;
Begin
// IHCW
Result := Nil;
// Get the first node of the tree..
ParentNode := VT.GetFirst;
// Loop thru the parent nodes.
for I := 0 to VT.RootNodeCount - 1 do
begin
// Get …Run Code Online (Sandbox Code Playgroud) 我看到人们宣称他们的TList喜欢
MyList : TList<PSomeType>;
Run Code Online (Sandbox Code Playgroud)
然后,当他们创造它时,他们会这样做
MyList := TList<PSomeType>.Create;
Run Code Online (Sandbox Code Playgroud)
因此,我认为通过这样做,他们不必在使用它时对类Mypec.Items [I]进行类型转换,例如:
ShowMessage( PSomeType(MyList.Items[I]).SomeTextProperty );
Run Code Online (Sandbox Code Playgroud)
所以相反他们会做
ShowMessage( MyList.Items[I].SomeTextProperty );
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
如果是这样,为什么我不能让它在Delphi 2010中工作?我正在努力 - 将我的清单声明为
MyList : TList<PSomeType>;
但是编译器说:
未声明的标识符:TList <>
我在那里做错了什么?
我的应用程序将通过虚拟节点循环并检查其数据.我使用另一个表单来执行此操作比包含VirtualStringTree的表单.(我得到了我的理由;))
我的问题是:我如何将这些节点+他们的数据传递给我的其他形式的函数,然后能够循环通过节点(我知道如何循环,我只需要以我的其他形式提供节点) ).
此外,请注意,一旦显示Processing表单,就会销毁包含VirtualStringTree的表单!
我怎么能这样做?我正在考虑创建一个动态的VirtualStringTree,并以某种方式将节点从一棵树传递到另一棵树,但我会先问这里是否有更好的解决方案.:)
谢谢,杰夫.
我正在动态创建一个表单,但是关闭它的例程位于我的主表单单元中,因为它与我的主表单(TSkype)上的控件相关联.该事件是SkypeAsyncSearchUsersFinished.当SkypeAsyncSearchUsersFinished例程完成时,我尝试将ModalResult设置为动态表单的mrOk.但是,这会产生访问冲突.
这是搜索完成时触发的代码:
if SIDList.Count = 0 then
begin
frmSearcher.tmrFadeOut.Enabled := True;
end;
Run Code Online (Sandbox Code Playgroud)
我尝试调试它,并在frmSearcher.tmrFadeOut设置断点...然后我走到下一行(例程End;),那就是AV出现的时候.
所述tmrFadeOutTimer事件确实的ModalResult:= mrOk;
这就是我创建动态表单的方式:
Function ShowSearcher():Boolean;
Var
dlg : TfrmSearcher;
Begin
Result := False;
dlg := TfrmSearcher.Create(Forms.Application);
dlg.tmrFadeIn.Enabled := True;
if dlg.ShowModal = mrOk then
Begin
// Do nothing here
End;
Result := True;
dlg.Release;
End;
Run Code Online (Sandbox Code Playgroud)
是的,我确信计时器只启用一次.:)
是的,我确信表格是"活着的".:)
实际上,如果我删除tmrFadeOut.Enabled代码,一切正常,但表单不会被关闭.做frmSearcher.ModalResult:= mrOk; 也产生AV.
如果您需要更多信息,我会添加它.:)
谢谢你!:)
THOTkey不允许两次使用相同的热键是否正常?
这就是我的意思.
假设我将热键设置为Ctrl + Shift + X. 然后我做了别的事情,然后回来改变它.当我按住Ctrl和Shift时,我意识到我不想更改热键,所以我按住Ctrl + Shift按X键.现在,THotkey拒绝了它.我放开所有的钥匙,再次尝试相同的组合.它仍然不会让我分配该密钥.即使我点击我的表单上的其他地方,然后回去尝试相同的组合,它也不会让我!
这是为什么?我怎么能防止这种情况?
谢谢!
我刚刚开始搞乱Knockout JS,我有以下的观点(例子).
我有一个游客列表,这个列表有CRUD方法 - 一切都很棒.现在,当我点击一个游客时,将会显示一个更详细的描述 - 这是一个新的AJAX调用服务器的信息.
我的问题是,我应该有一个包含我的1个主视图模型TouristsViewModel和TouristsInfoViewModel-这意味着TouristsViewModel要与主为了改变耦合TouristsInfoViewModel,或者我应该TouristsViewModel实例化TouristsInfoViewModel,并调用ko.applyBindings?
我看过Knockout-postbox,但我想避免引入过多的第三方插件.
总结一下:在能够在它们之间共享数据的同时,分离视图和视图模型的一般方法是什么?
根据这篇MSDN文章 - 滚动到Constructor Functions but No Classes,(以及在阅读MDN JS参考之后)我应该能够构造一个这样的对象:
function Dog(name){
this.name = name;
}
// EXAMPLE 1
var dog = new Dog("Spot");
console.log("Dog using new:");
console.log(dog); // Dog object, awesome!
// EXAMPLE 2
var dog = {};
dog = Dog.call(dog,"Rowdie");
console.log("Dog using call:");
console.log(dog); // Undefined.. why?
Run Code Online (Sandbox Code Playgroud)
但是,虽然第一个示例(构建新对象的最常见方式)返回预期的实例,但第二个示例返回undefined- 我做错了吗?
这是我用来测试的JSFiddle:http://jsfiddle.net/wk8JD/1/
我正在使用 Durandal 构建一个向导小部件,我想像这样使用它:
<div data-bind="wizard: options">
<!-- Step 1 -->
<span data-part="step-header-1">
Step 1
</span>
<div data-part="step-content-1">
step content here
</div>
<!-- Step 2 -->
<span data-part="step-header-2">
Step 2
</span>
<div data-part="step-content-2">
step content here
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是实际的小部件(为简洁起见,进行了删减):
<div class="wizard-container">
<ul class="steps" data-bind="foreach: steps">
<li>
<span data-bind="html: heading"></span>
</li>
</ul>
<!-- ko foreach: steps -->
<div class="wizard-step" data-bind="css: { active: isActive }">
<div data-bind="html: content">
</div>
</div>
<!-- /ko -->
</div>
Run Code Online (Sandbox Code Playgroud)
我已经让它工作了,使用 jQuery 获取数据部分,将数据部分的内部 HTML 分配给我的步骤模型上的属性,然后使用 html 绑定将内容绑定到每个步骤。这适用于 DOM 方面,但这样做意味着我的步骤内容不会进行数据绑定。我很确定这是因为我使用了 …
我想了解有关类型推断的规则,因为我希望将其纳入自己的语言中,并且本着这种精神,我一直在研究F#的类型推断,以下让我感到奇怪。
这将进行编译,并且id为'a -> 'a,(如果我没有记错的话)表示每个调用都使用“新鲜”类型。
let id x = x
let id1 = id 1
let id2 = id "two"
Run Code Online (Sandbox Code Playgroud)
但是,当使用运算符时,似乎是第一次调用确定了该函数的签名。
在这里,mul据报道是int -> int -> int
let mul x y = x * y
let mul1 = mul 1 2
let mul2 = mul 1.1 2.2 // fails here
Run Code Online (Sandbox Code Playgroud)
如果我重新排序,mul则为float -> float -> float:
let mul x y = x * y
let mul2 = mul 1.1 2.2
let mul1 …Run Code Online (Sandbox Code Playgroud) delphi ×6
javascript ×2
knockout.js ×2
behavior ×1
casting ×1
checkbox ×1
constructor ×1
dry ×1
duplicates ×1
durandal ×1
dynamic ×1
f# ×1
generics ×1
hotkeys ×1
integer ×1
jquery ×1
math ×1
modulo ×1
mvvm ×1
tlist ×1
typechecking ×1
viewmodel ×1
widget ×1