社区
Delphi
帖子详情
一个非常麻烦的问题
JiRen
2000-01-07 01:43:00
如何在程序运行时批量选中窗体上的控件,就象在设计时一样
能够实现所选中的控件同时改变大小,位置
注意:是选中不止一个控件...
希望大侠们指点...
email :jiren0202@sina.com
...全文
400
14
打赏
收藏
一个非常麻烦的问题
如何在程序运行时批量选中窗体上的控件,就象在设计时一样 能够实现所选中的控件同时改变大小,位置 注意:是选中不止一个控件... 希望大侠们指点... email :jiren0202@sina.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JiRen
2000-01-10
打赏
举报
回复
yhlong:
多谢大俠
那么实现在每个被选中的按钮上画四个小灰块有什么高招没有.
yhlong
2000-01-10
打赏
举报
回复
我有一个大概思路:1通过检测鼠标按下和释放的x/y坐标确定在form中拖动的范围;2通过form的control属性遍历form上的所有控件,由控件的top/left属性和鼠标拖动范围来确定所选定的一批控件;3监控键盘的方向键,对选定控件的高/宽按比例更改。
JiRen
2000-01-10
打赏
举报
回复
hubdog 大侠:
我的要求当然包括拉出一个框来选中一批控件,不然怎么像设计时一样呢..
请指点高招!!
Firing_Sky
2000-01-10
打赏
举报
回复
这里有一段在一个控件上画点并实现控件移动的代码,选择多个控件的方法可以此类推,鉴于代码过长,这儿就不给出了,但值得注意的一点是:不仅要搜索form的control,还要搜索Panel等控件的control
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
Image2: TImage;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
DragFlag: Boolean ;
OriginPt, EndPt: TPoint ;
procedure AttachControl(ImageList: TImage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.AttachControl(ImageList: TImage);
var
ScreenDC: HDC ;
PtA, PtB: TPoint ;
begin
ScreenDC := GetDC(0) ;
PtA := ImageList.ClientToScreen(Point(0, 0)) ;
PtB := ImageList.ClientToScreen(Point(Image1.Width, Image1.Height)) ;
Rectangle(ScreenDC, PtA.X-2, PtA.Y-2, PtA.X+3, PtA.Y+3) ;
Rectangle(ScreenDC, (PtA.X+(PtB.X-PtA.X) div 2)-2, PtA.Y-2,
(PtA.X+(PtB.X-PtA.X) div 2)+3, PtA.Y+3) ;
Rectangle(ScreenDC, PtB.X-3, PtA.Y-3, PtB.X+2, PtA.Y+2) ;
Rectangle(ScreenDC, PtA.X-2, (PtA.Y+(PtB.Y-PtA.Y) div 2)-2,
PtA.X+3, (PtA.Y+(PtB.Y-PtA.Y) div 2)+3) ;
Rectangle(ScreenDC, PtB.X-3, (PtA.Y+(PtB.Y-PtA.Y) div 2)-2,
PtB.X+2, (PtA.Y+(PtB.Y-PtA.Y) div 2)+3) ;
Rectangle(ScreenDC, PtA.X-2, PtB.Y-2, PtA.X+3, PtB.Y+3) ;
Rectangle(ScreenDC, (PtA.X+(PtB.X-PtA.X) div 2)-2, PtB.Y-2,
(PtA.X+(PtB.X-PtA.X) div 2)+3, PtB.Y+3) ;
Rectangle(ScreenDC, PtB.X-3, PtB.Y-3, PtB.X+2, PtB.Y+2) ;
ReleaseDC(0, ScreenDC) ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AttachControl(Image1) ;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ScreenDC: HDC ;
PtA, PtB: TPoint ;
begin
DragFlag := True ;
OriginPt.X := X ; OriginPt.Y := Y ;
EndPt := OriginPt ;
ScreenDC := GetDC(0) ;
PtA := Image1.ClientToScreen(Point(0, 0)) ;
PtB := Image1.ClientToScreen(Point(Image1.Width, Image1.Height)) ;
DrawFocusRect(ScreenDC, Rect(PtA.X, PtA.Y, PtB.X, PtB.Y)) ;
ReleaseDC(0, ScreenDC) ;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
ScreenDC: HDC;
PtA, PtB: TPoint ;
begin
if DragFlag then
begin
ScreenDC := GetDC(0) ;
PtA := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X),
(EndPt.Y - OriginPt.Y))) ;
PtB := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X + Image1.Width),
(EndPt.Y - OriginPt.Y + Image1.Height))) ;
DrawFocusRect(ScreenDC, Rect(PtA.X, PtA.Y, PtB.X, PtB.Y)) ;
EndPt.X := X ; EndPt.Y := Y ;
PtA := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X),
(EndPt.Y - OriginPt.Y))) ;
PtB := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X + Image1.Width),
(EndPt.Y - OriginPt.Y + Image1.Height))) ;
DrawFocusRect(ScreenDC, Rect(PtA.X, PtA.Y, PtB.X, PtB.Y)) ;
ReleaseDC(0, ScreenDC) ;
end ;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ScreenDC: HDC ;
PtA,PtB:TPoint;
begin
ScreenDC := GetDC(0) ;
PtA := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X),
(EndPt.Y - OriginPt.Y))) ;
PtB := Image1.ClientToScreen(Point((EndPt.X - OriginPt.X + Image1.Width),
(EndPt.Y - OriginPt.Y + Image1.Height))) ;
DrawFocusRect(ScreenDC, Rect(PtA.X, PtA.Y, PtB.X, PtB.Y)) ;
ReleaseDC(0, ScreenDC) ;
DragFlag := False ;
EndPt.X := X ; EndPt.Y := Y ;
Image1.Left := Image1.Left + (EndPt.X - OriginPt.X) ;
Image1.Top := Image1.Top + (EndPt.Y - OriginPt.Y) ;
if Image1.Left < 2 then Image1.Left :=2;
if Image1.Top < 2 then Image1.top:=2;
if Image1.Left + Image1.Width + 2 >= Image1.Parent.Width then Image1.Left :=Image1.Parent.Width -Image1.Width -3;
if Image1.Top + Image1.Height + 2 >= Image1.Parent.Height then Image1.Top :=Image1.Parent.Height -Image1.Height -3;
Image2.Refresh;
AttachControl(Image1) ;
end;
end.
kxy
2000-01-10
打赏
举报
回复
>>一个用delphi做的delphi俄罗斯人写的.
我试过,好像不能实现JiRen的要求
渤海海峡
2000-01-10
打赏
举报
回复
除了delphi高级开发指南(本地好象有他的例子程序下载),您还可以看看
delphi深度历险中的一个范例程序:一个用delphi做的delphi,名字是:handel.zip
下载地址:
http://vcl.vclxx.com/DELPHI/D32SAMPL/HANDEL.ZIP
darkness
2000-01-10
打赏
举报
回复
你给特定一批控件以相同的Tag号
然后按照上面所说即可
Tform.componentcount form 上控件个数
用个for循环即可
darkness
2000-01-10
打赏
举报
回复
使用Tform.components[i],i 即为componentindex,可在调试时知道其对应关系
Tformclick(sender:object) 可以动态响应只要
if sender is Tcomponent(你的控件) then
(sender as Tcomponent).visible:=false;
hubdog
2000-01-10
打赏
举报
回复
>>那么实现在每个被选中的按钮上画四个小灰块有什么高招没有.
关于这个问题,看delphi高级开发指南(marco Cantu写的),P277-285页(88元,物超所值)
太长了,我没法贴,我连这也太慢
hubdog
2000-01-09
打赏
举报
回复
>>清楚一点!是否要求拉出一个框来选中一批控件?我想如果你说清楚了的话我可以提供你一些帮助
如果是这样的话,很容易解决
Firing_Sky
2000-01-08
打赏
举报
回复
说清楚一点!是否要求拉出一个框来选中一批控件?我想如果你说清楚了的话我可以提供你一些帮助
GetWay
2000-01-08
打赏
举报
回复
关注!
zyb
2000-01-07
打赏
举报
回复
你是否要实现鼠标拖动选中的功能?
kxy
2000-01-07
打赏
举报
回复
去找找DreamContorl的控件包,它能实现.
Dubbo入门实例Demo
Dubbo入门实例Demo 新手入门遇到好多
麻烦
,网上搜来的入门demo也是各种
问题
,百般周折自己终于倒腾出来了,与大家共享~
多项式时间 P
问题
NP
问题
首先需要介绍P(Polynomial,多项式)
问题
.P
问题
是可以在多项式时间内被确定机(通常意义的计算机)解决的
问题
.NP(Non-Deterministic Polynomial, 非确定多项式)
问题
,是指可以在多项式时间内被非确定机(他可以猜,他总是能猜到最能满足你需要的那种选择,如果你让他解决n皇后
问题
,他只要猜n次就能完成----每次都是那么幸运)解决的
问题
.这里有
一个
著名的
问题
----千...
使用ChatGPT解决8个办公自动化
问题
通过本课程的学习,您学习到如何使用用ChatGPT解决办公自动化
问题
,具体内容如下。一、ChatGPT编写程序编写VBA程序二、格式转换
问题
批量转换.xls文件为.xlsx文件批量转换.csv文件为.xlsx文件批量转换.doc文件为.docx文件批量转换Word文件为pdf文件批量转换.ppt文件为.pptx文件批量转换PPT文件为pdf文件三、数据统计与分析批量统计文档页数和字数将多个Excel文件合并为
一个
文件四、后记还有哪些要做
经典算法--约瑟夫环
问题
的三种解法
约瑟夫环
问题
,这是
一个
很经典算法,处理的关键是:伪链表
问题
描述:N个人围成一圈,从第
一个
人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号) 在数据结构与算法书上,这个是用链表解决的。我感觉链表使用起来很
麻烦
,并且这个用链表处理起来也不是最佳的。 我画了
一个
图用来理解: 有如下
问题
需要首先考虑: 1、“圈...
人生是
一个
不断解决
问题
的过程
有那么一段时间, 我的思维是很懒惰的, 遇到
问题
容易抱怨
问题
为什么存在, 抱怨之前的人为什么没有做好, 逐渐地产生了一些怕
麻烦
的想法, 比较消极。 后来, 现实倒逼自己去思考, 去改正。 现在好多了。 大约五六年前, 我去广州某公司实习了两个月左右, 听到了这样的一句话: 人生是
一个
不断解决
问题
的过程。 现在想来, 确认如此。 人生总会伴随着这样活着那样的问
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章