我有一个TPageControl页面都是使用附加的各种形式ManualDock().用户应该能够通过拖动来重新排列选项卡,这已经有效.然而,也应该可以移除停靠的表格.
现在我有以下代码:
procedure TMainForm.PageControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and (Shift * [ssShift, ssCtrl] = [])
and PageControl.DockSite
then begin
PageControl.BeginDrag(False, 32);
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果按住键Shift或Ctrl键,则将启动对接操作,否则可以通过拖动来重新排列选项卡.
使用键作为修饰符是很尴尬的.当鼠标光标位于页面控件的选项卡区域之外时,有没有办法取消活动拖动操作,并开始对接子窗体?这是Delphi 2009.
我正在使用WPF,我正在尝试制作一个拖放文本框.
在这个文本框中,我想获取一个我从outlook中拖出的电子邮件的正文.
代码有效,但我认为我需要一些东西来"重置"ActiveExplorer,因为它现在只显示我拖到文本框中的最后一个"新"电子邮件.
例:
拖动电子邮件1 - >文本框 - 显示电子邮件1
拖动电子邮件2 - >文本框 - 显示电子邮件2
拖动电子邮件1 - >文本框 - 显示电子邮件2和电子邮件1将不会显示,因为它已存在于ActiveExplorer中,它将显示电子邮件2.
希望我的问题对你有点清楚..
在此先感谢!
XAML代码:
<TextBox
Name="myTextbox"
AllowDrop="True"
PreviewDragEnter="email_DragEnter"
PreviewDrop="email_Drop" />
Run Code Online (Sandbox Code Playgroud)
XAML代码背后:
private void email_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void email_Drop(object sender, DragEventArgs e)
{
Outlook.ApplicationClass oApp = new Outlook.ApplicationClass();
Outlook.Explorer oExplorer = oApp.ActiveExplorer();
Outlook.Selection oSelection = oExplorer.Selection;
foreach (object item in oSelection)
{
Outlook.MailItem mi = (Outlook.MailItem)item;
myTextbox.Text = mi.Body.ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了这个答案,关于如何使用UAC提升的应用程序,无法使用资源管理器中的拖放文件(通常在没有额外管理员权限的情况下运行).
人们会认为提升EXE的权限会给予更多的权限,但MS设法提供更少的权限并同时打破拖放功能!
无论如何,虽然赞赏,Arnaud Bouchez先生给出的答案(禁用UIPI - 用户界面权限隔离)看起来有点hackish,我的问题是:是否有一种推荐的方式以编程方式启用拖放而不会弄乱用户的注册表
我正在考虑在清单或类似的东西中请求"拖放能力".
注意:我主要在Windows 7中遇到此问题,但我认为这个问题与从Vista开始的所有Windows版本相关
我试图使用jQuery拖放父框架和iframe之间的元素.我在父框架中有一个面板,其中包含一些可以拖放到子框架上的可拖动项目.我试图搜索很多,但找不到多少......
我尝试通过在子帧中附加元素然后尝试以编程方式触发新插入元素上的draggable来解决它,但我也被卡在那里.找不到触发拖动功能的正确方法.(可拖动元素有一个帮助器.当我通过触发"mousedown.draggable"触发拖动时,ui-draggable元素上的位置发生了变化,但我看不到帮助器.
谢谢!!
jquery drag-and-drop droppable jquery-ui-sortable jquery-ui-draggable
我有一个特殊的要求,我需要在一个屏幕中拖动一个元素,然后另一个片段变得可见,我可以放下拖动的视图.
实现这一目标的最佳方法是什么?我不确定如何在两个片段之间实现这种行为.谢谢提前!
我正在使用带标记的Leaflet地图.
当用户点击我的页面上的"编辑"时,我想让标记可拖动.如果我draggable为每个标记将属性设置为true,则它不起作用.
当我创建一个新标记并从头开始设置属性时,它可以工作.
我正在开发api> 14,我已经实现了拖放功能GridView.
但是,在将项目拖动到屏幕的顶部或底部时,GridView不会滚动.
当你移动到边缘时,我想让它向你拖动项目的方向滚动,当你将项目移回屏幕的垂直中心时,它会变慢.
当然,这种功能应该是任何拖放的标准功能吗?
无论如何,有谁知道最好的方法来解决这个问题?
更新:我实际上在互联网上找不到一个例子,甚至试图用拖动的网格项目滚动(我在这里错过了什么?)更不用说解决我的问题了.
你如何获得可拖动的项目(显示为阴影)来滚动gridview?我按如下方式分配拖动:
int gridChildPosition = position - mGridView.getFirstVisiblePosition();
ViewFlipper gridItem = (ViewFlipper) mGridView.getChildAt(gridChildPosition);
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(gridItem);
if (mGridView.startDrag(data, shadowBuilder, gridItem, 0)) {
int lastVisiblePosition = mGridView.getLastVisiblePosition() - mGridView.getFirstVisiblePosition();
for (int i=0; i<=lastVisiblePosition; i++) {
if (i == gridChildPosition) {
continue;
}
mGridView.getChildAt(i).setOnDragListener(new GridItemDragListener(position));
mGridView.getChildAt(i).setAlpha(0.4f);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了可拖动的阴影,所有其他项目当前变暗.但我不确定如何让阴影滚动网格视图.
我有2个datagridviews,我想将数据从datagridview1复制到datagridview2(一次一个单元格).我能够选择我想要的单元格并将其拖到datagridview2但是值没有显示...我花了大部分时间寻找解决方案...可能是一个简单的答案或者我只需要睡觉,但请帮助....我有以下代码
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
DataGridView.HitTestInfo info = dataGridView1.HitTest(e.X, e.Y);
if (info.RowIndex >= 0)
{
if (info.RowIndex >= 0 && info.ColumnIndex >= 0)
{
string text = (String)
dataGridView1.Rows[info.RowIndex].Cells[info.ColumnIndex].Value;
if (text != null)
dataGridView1.DoDragDrop(text, DragDropEffects.Copy);
}
}
}
}
private void dataGridView2_DragDrop(object sender, DragEventArgs e)
{
string cellvalue=e.Data.GetData(typeof(string)) as string;
Point cursorLocation=this.PointToClient(new Point(e.X,e.Y));
System.Windows.Forms.DataGridView.HitTestInfo hittest= dataGridView2.HitTest(cursorLocation.X,cursorLocation.Y);
if (hittest.ColumnIndex != -1
&& hittest.RowIndex != -1)
dataGridView2[hittest.ColumnIndex, hittest.RowIndex].Value = cellvalue;
}
private void dataGridView2_DragEnter(object …Run Code Online (Sandbox Code Playgroud) 我已经使用Angular中的指令实现了一个简单的拖放系统.它在Chrome中运行良好,但Firefox不会在拖动事件上公开event.clientX,event.clientY属性(他们只是拒绝修复它).所以我正在寻找一个在拖动事件上公开这些属性的好方法:
对于拖动事件的视觉反馈需要x,y坐标.
代码在这里:
http://plnkr.co/edit/ApeyQ4FcdsA8Ez18Roi0?p=preview
在Chrome和Firefox中查看问题.
在Chrome中,拖动文件夹中的项目,您将在鼠标后显示与视觉反馈相同的项目,而不是在Firefox中(因为Firefox在拖动事件中不支持e.clientX和e.clientY).
问题出在这里:(第45行)
.on('drag', function(e) {
if (e.originalEvent.clientX) {
el.css({
'top': e.originalEvent.clientY + 10,
'left': e.originalEvent.clientX + 10
});
} else {
el.css('display', 'none');
}
});
Run Code Online (Sandbox Code Playgroud)
那么如何在Firefox中的拖动事件中获取鼠标在屏幕上的位置(角度方式,我的意思是指令,没有全局变量或其他)?

我建立一个简单的拖N"降上传,我想知道为什么我看不到我滴在我的文件(S) console.log(e)(的dragEvent),并期待在DragEvent.dataTransfer.files它显示了空的,但是......如果我console.log(e.dataTransfer.files)是将显示已删除的文件.
//码
<!DOCTYPE html>
<html>
<head>
<script>
document.addEventListener("DOMContentLoaded", init);
function init(){
var dropbox = document.getElementById('dropbox');
dropbox.addEventListener('dragover', drag.over);
dropbox.addEventListener('drop', drag.drop);
}
var drag = {
"over": function(e){
e.preventDefault();
},
"drop": function(e){
e.preventDefault();
console.log(e); //NO FILES SHOWN
console.log(e.dataTransfer.files); //FILES in FileList Object
}
};
</script>
<style>
body{
margin: 0 !important;
height: 100vh;
width: 100vw;
display: flex;
justify-content: center;
}
#dropbox{
height: 400px;
width: 400px;
align-self: center;
background-color: #0089C4;
border-radius: .3em;
border: 1px dashed black;
-webkit-box-shadow: 0px …Run Code Online (Sandbox Code Playgroud) drag-and-drop ×10
javascript ×3
android ×2
c# ×2
delphi ×2
angularjs ×1
datagridview ×1
delphi-2010 ×1
docking ×1
drag ×1
droppable ×1
firefox ×1
html5 ×1
java ×1
jquery ×1
leaflet ×1
outlook ×1
uac ×1
windows-7 ×1
wpf ×1