我的Cocoa应用程序支持将文件拖放到Dock图标上,但我想要根据是否按下修改键(命令,选项等)来执行不同的行为.
我尝试检查modifierFlagsfor currentEvent,但无论是否按下修饰符,它们都是相同的(我正在使用Option键进行测试).
码:
// Code is inside my AppDelegate
- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)files {
BOOL optDown = (([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask)
== NSAlternateKeyMask);
NSLog(@"flags: %u, down? %@", [[NSApp currentEvent] modifierFlags],
optDown ? @"YES" : @"NO");
}
Run Code Online (Sandbox Code Playgroud)
输出(使用Option键关闭文件,然后不丢弃):
flags: 1088, down? NO
flags: 1088, down? NO
Run Code Online (Sandbox Code Playgroud)
预期
flags: <not sure>, down? YES
flags: <different>, down? NO
Run Code Online (Sandbox Code Playgroud) 我已经测试了G +一段时间了,我发现朋友拖放到圈子里的东西有很好的效果(你不觉得吗?)
我想知道如何在使用jQuery将用户拖放到圆圈时实现类似的效果.它可以给我一个起点,以实现树或方形的这一点.:)
谢谢
我正在使用jQuery UI Sortable功能.
$('#sortablelist).sortable{
update: function(ev, ui){...},
placeholder: "ui-state-highlight",
connectWith: ".ui-sortable"
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,dropOnEmpty = true我没有设置它.
因为列表是空的,但是我想在空列表中给它一个"占位符"目标,我给了sortablelistdiv一个额外的帮助类来给空的#sortablelist一些"表面区域"可以这么说(所以在附加列表上拖动元素时获得占位符)
<div id="sortablelist" class="ui-sortable ui-sortable-helper"></div>
Run Code Online (Sandbox Code Playgroud)
.ui-sortable-helpclass {
height: 100px;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox,IE,Safari,但占位符不会出现(因此无法在Google Chrome中使用
有什么想法吗?
我有一个列表视图,显示目录中的文件.
用户可以将列表视图中的每个项目拖动到文件夹/桌面,并在那里复制关联的文件.
这很好用.问题是 - 我想对多个项目这样做 - 因此用户可以选择多个listviewitems并将它们拖放并复制在一起.ListView设置为SelectedMode = Multiple-但它不会复制所有选定的项目.这是我的代码:
private void FileView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.start = e.GetPosition(null);
}
private void FileView_MouseMove(object sender, MouseEventArgs e)
{
Point mpos = e.GetPosition(null);
Vector diff = this.start - mpos;
if (e.LeftButton == MouseButtonState.Pressed &&
Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
{
if (this.FileView.SelectedItems.Count == 0)
{
return;
}
// right about here you get the file urls of the selected items.
// should be quite easy, if not, ask.
string[] files …Run Code Online (Sandbox Code Playgroud) 我已经实现了以下过程,当我在运行Windows Vista,计算机#1的计算机上编译它时,它可以正常工作.如果我将创建的.exe文件共享到另一台运行win7的计算机,计算机#2,它运行良好.问题是,当我让计算机#2编译它时,它不会简单地认识到应用程序上丢弃了任何东西.这段代码完全没有响应.它的构建和编译没有错误或警告.我一直在网上搜索一段时间没有找到任何解释为什么会发生这种情况或其他人有这个问题.
两台计算机都使用安装了相同组件的Delphi 2010.
任何帮助或评论都非常感谢.
procedure TfMainForm.WMDROPFILES(var msg: TWMDropFiles);
const
MaxLength = 255;
var
nFiles : integer;
i : integer;
fileName : array [0..MaxLength] of char;
fileNames : TStringArray;
begin
// Get number of files dropped
nFiles := DragQueryFile(msg.Drop, $FFFFFFFF, fileName, MaxLength);
// Get filenames
SetLength(fileNames, nFiles);
for i := 0 to nFiles - 1 do begin
DragQueryFile(msg.Drop, i, fileName, MaxLength);
fileNames[i] := fileName;
end;
// Add files
projectHandler.addFiles(fileNames);
//release memory
DragFinish(msg.Drop);
end;
Run Code Online (Sandbox Code Playgroud) 当一个东西在contentEditable元素中丢弃时(拖动后)会触发什么事件?
我说的是普通的拖放,而不是HTML5拖放(任何元素都可以拖动); 用例很简单:
我可以轮询div来看看那里有什么东西不干净,但是它很贵而且"丑陋"; 肯定有一个事件会在发生跌落时触发......?
在ListView和Gallery等控件中,您可以在垂直或水平方向上拖动项目.
我有一个TextView,我成功地拖动它.但是我想把它向水平方向移动.我该如何实现它?
谢谢,
我的代码:
public class MyDragShadowBuilder extends View.DragShadowBuilder {
private static View view;
public MyDragShadowBuilder(View v) {
super(v);
view = v;
}
@Override
public void onProvideShadowMetrics(Point size, Point touch) {
width = getView().getWidth();
height = getView().getHeight();
size.set(width, height);
touch.set(width / 2, height / 2);
}
private int width, height;
@Override
public void onDrawShadow(Canvas canvas) {
view.draw(canvas);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的活动中:
tv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
ClipData data = ClipData.newPlainText("dot",
"Dot : " + v.toString());
View.DragShadowBuilder myShadow …Run Code Online (Sandbox Code Playgroud) 我必须出于特定原因进行小组翻译(SVG).我不知道为什么我不能正确地做到这一点,因为在翻译完成后,在另一个单击组上它会重置开始位置的翻译并让我在SVG画布上乱跑.我在链接上写了准系统示例:http://www.atarado.com/en/stripboard-layout-software/group-translation-problem.svg,这里是代码:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<script><![CDATA[
function startMove(evt){
x1=evt.clientX;
y1=evt.clientY;
group=evt.target.parentNode;
group.setAttribute("onmousemove","moveIt(evt)");
}
function moveIt(evt){
dx=evt.clientX-x1;
dy=evt.clientY-y1;
group.setAttributeNS(null,"transform","translate("+ dx + ", " + dy +")");
}
function drop(){
group.setAttributeNS(null, "onmousemove",null);
}
]]></script>
<rect x="0" y="0" width="100%" height="100%" fill="dodgerblue"/>
<g id="BC" transform="translate(0, 0)" onmousedown="startMove(evt)" onmouseup="drop()"><circle id="C" cx="60" cy="60" r="22" fill="lightgrey" stroke="black" stroke-width="8"/><circle id="B" cx="120" cy="60" r="22" fill="orange" stroke="black" stroke-width="8" /></g>
</svg>
Run Code Online (Sandbox Code Playgroud)
欢迎任何愿意提供帮助的人.
svg translation drag-and-drop coordinates coordinate-transformation
我有一个有两列的表.每列都有一个唯一的ID"pick"和"drop".此外,我在第一列中有许多项目.使用jQuery UI draggable/droppable我将项目从第一列(pick)拖到第二列(drop).
我需要在项目移动时更新DOM,从"选择"中删除项目并将其添加到"删除".我需要帮助把它全部放入一个函数中.该函数将包含在我可以检测到丢弃的代码的一部分中.
我正在开发一个JavaScript和HTML的交互式文件上传器,我需要访问当前拖动的文件文件名(触发dragenter事件的文件名).
但是有一个问题,事件dataTransfer成员不包含任何文件,我真的需要在抛出drop事件之前知道文件名.可能吗?
提前致谢.
drag-and-drop ×10
javascript ×3
jquery ×2
jquery-ui ×2
android ×1
binding ×1
cocoa ×1
coordinates ×1
delphi ×1
delphi-2010 ×1
dock ×1
events ×1
google-plus ×1
html ×1
html5 ×1
keyboard ×1
macos ×1
svg ×1
translation ×1
windows-7 ×1
wpf ×1