社区
C++ Builder
帖子详情
一个TLabel的托拽问题
宙斯之神
2006-04-11 08:53:26
我想在一定范围内横向移动TLabel控件,怎样来控制范围,比如说往左移动到某一点后就不能在往左动了!谢谢!
...全文
185
13
打赏
收藏
一个TLabel的托拽问题
我想在一定范围内横向移动TLabel控件,怎样来控制范围,比如说往左移动到某一点后就不能在往左动了!谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueDeepOcean
2006-04-14
打赏
举报
回复
那你就修改左右边界的限制值嘛。我写的这个例子在我这边是通过的。
BlueDeepOcean
2006-04-14
打赏
举报
回复
这是由于这些画面是采用重画的方式画上去的。并且,只是单纯的重画。如果需要实现像Microsoft Word那样的粘贴图片的方式,需要通过多个Windows消息和API实现。
在网络上有一个关于VC/C++Builder Debug窗体界面的设计,我也曾实现过,不过实现了,但是效果不好。采用的就是你说的方法2。
宙斯之神
2006-04-14
打赏
举报
回复
十分感谢!RIchedit中放上图片怎么一动就没了?
方法1:
HDC dc;
dc = GetDC(RichEdit1->Handle);
BitBlt(dc,0,0,Image1->Width,Image1->Height,Image1->Picture->Bitmap->Canvas—>HANDLE,0,0,SRCCOPY);
方法2:
TControlCanvas *mycanvas=new TControlCanvas;
mycanvas->Control=RichEdit1;
mycanvas->Draw(10,10,Image1->Picture->Graphic) ;
能否把qq告诉小弟,多谢!
宙斯之神
2006-04-13
打赏
举报
回复
非常感谢!例子的那个滑标可是滑动的时候好像没有界限啊,可以拽出去。
BlueDeepOcean
2006-04-13
打赏
举报
回复
例子没有毛病。我系统地研究过。至于你所说的如何完成类似于Word中的虚线功能,这个涉及到了重画,或者说是用到了一些API函数。在RichEdit中放置图片可以通过TControlCanvase实现。
建议你仔细看例子,仔细看看RichEdit托拽部分的函数。
xiaoshi0
2006-04-12
打赏
举报
回复
在窗体获得焦点的时候画两条线,不用放在那个时间中,放在OnPaint时间中
直接p.x = X,是相对于TLabel控件的左上角的,不是窗体的,所以应该加上TLabel的左上角横坐标
纵坐标也一样
宙斯之神
2006-04-12
打赏
举报
回复
我要控制 Borland\CBuilder6\Examples\Apps\RichEdit 中的上面的滑条,例子里面的滑条有点毛病,请指教一下怎样才能弄出类似word里的滑条的功能!并且再托拽的时候下面的richedit中显示虚线! 还有在richedit中怎样放置图片啊?如果有第三方控件请告诉小弟在那里下啊?
BlueDeepOcean
2006-04-12
打赏
举报
回复
这两块由于匆忙,少写了些,特此修改:
void __fastcall TForm1::Label1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button == mbLeft)
{
IsOnIt = true;
P.x = X;
P.y = Y;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (IsOnIt)
{ //水平移动
if (X > P.x)
if (Label1->Left + abs(X - P.x) <= 500)
Label1->Left = Label1->Left + abs(X - P.x);
if (X < P.x)
if (Label1->Left - abs(X - P.x) >= 100)
Label1->Left = Label1->Left - abs(P.x - X);
}
}
BlueDeepOcean
2006-04-12
打赏
举报
回复
大体就是这样。
BlueDeepOcean
2006-04-12
打赏
举报
回复
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool IsOnIt;
TPoint P;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
P.x = 0;
P.y = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Canvas->Pen->Color = clYellow;
Canvas->MoveTo(100,0);
Canvas->LineTo(100,Height);
Canvas->MoveTo(600,0);
Canvas->LineTo(600,Height);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
FormActivate(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button == mbLeft)
IsOnIt = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (IsOnIt)
//水平移动
if (X > P.x)
if (Label1->Left + abs(X - P.x) <= 500)
Label1->Left = Label1->Left + abs(X - P.x);
if (X < P.x)
if (Label1->Left - abs(X - P.x) >= 100)
Label1->Left = Label1->Left - abs(P.x - X);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Button == mbLeft)
IsOnIt = false;
}
//---------------------------------------------------------------------------
xiaoshi0
2006-04-12
打赏
举报
回复
你说清楚点好么?
如果是设计界面时,没有办法控制,你想拖到哪就拖到哪
如果是编译好了以后,那你判断一下左上角是否在你想要的范围之内就可以了
BlueDeepOcean
2006-04-12
打赏
举报
回复
画那两条线是为了说明一个大体的范围。没有别的什么。
zyyoung
2006-04-12
打赏
举报
回复
友情up
显示边框的T
Label
类
显示边框的T
Label
类,从
Label
继承而来的
学习Indy控件时写的
一个
简单例子
学习Indy控件时写的
一个
简单例子,使用UDPServer进行通讯, 服务器进行数据转发,也可以直接进行客户端到客户端的通讯, 修改一下即可实现。 begin Application.Initialize; Application.CreateForm(TfrmMain, ...
追击
问题
作战模拟
lbl1: T
Label
; lbl2: T
Label
; lbl3: T
Label
; lbl4: T
Label
; lbl5: T
Label
; lbl6: T
Label
; lbl7: T
Label
; lbl8: T
Label
; lbl9: T
Label
; lbl10: T
Label
; lbl11: T
Label
; lbl12: T
Label
; btn1: TButton; ...
Delphi XE开发HTTPSERVER服务+源码+测试可用
//服务程序运行了几个月,基本正常,偶尔会出现异步操作异常(因所有连接都是共享同
一个
ado连接的原因) //以下部分关键代码供参考; TMainForm = class(TForm) IdHTTPServer: TIdHTTPServer; StartServerBtn: ...
Delphi 自动动升级源代码及说明文件(含图片)
本代码用DELHPI自带的控件,只要再增加
一个
INDY,用IDHTTP.GET实现下载,最重要的是里面有WORD的说明文件,包含图片的全部控件的属性设置哦,是很好的学习工具,压缩包中也包含
一个
实例! 【编程思路】 我们在互联网...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章