在往Edit中拖拽文本,当释放拖拽的时候,怎么判断当前光标的位置以使它插入相应的位置!(300分)

  • 主题发起人 主题发起人 道长
  • 开始时间 开始时间

道长

Unregistered / Unconfirmed
GUEST, unregistred user!
就象HTML中的文本控件一样,可以通过拖拽来修改文本!
 
用Edit好像不怎么好做吧? 可以用RichEdit试试看
 
edit1dragover事件
accept:=true;
edti1dragdrop事件
(sender as tedit).text:=(source as Tedit).text;

一定得
 
试试这个,基本上能够满足你的要求。
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if source is tlabel then accept:=true;
end;

procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure addtxt(A_edit:tedit;A_label:tlabel;startpos:integer);
begin
A_edit.SelStart:=startpos;
A_edit.SelLength:=0;
A_edit.SelText:=A_label.Caption;
end;
var spos:integer;
begin
if (source is tlabel) and (sender is tedit) then begin
spos:=round((x/form1.Canvas.TextWidth(edit1.Text))*length(edit1.Text));
//spos:=(x div (-edit1.Font.Height))+1;
showmessage(inttostr(spos));
addtxt((sender as tedit),(source as tlabel),spos);
end;
end;
 
多人接受答案了。
 
后退
顶部