社区
Delphi
帖子详情
一个非常麻烦的问题
JiRen
2000-01-07 01:43:00
如何在程序运行时批量选中窗体上的控件,就象在设计时一样
能够实现所选中的控件同时改变大小,位置
注意:是选中不止一个控件...
希望大侠们指点...
email :jiren0202@sina.com
...全文
397
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次就能完成----每次都是那么幸运)解决的
问题
.这里有
一个
著名的
问题
----千...
经典算法--约瑟夫环
问题
的三种解法
约瑟夫环
问题
,这是
一个
很经典算法,处理的关键是:伪链表
问题
描述:N个人围成一圈,从第
一个
人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号) 在数据结构与算法书上,这个是用链表解决的。我感觉链表使用起来很
麻烦
,并且这个用链表处理起来也不是最佳的。 我画了
一个
图用来理解: 有如下
问题
需要首先考虑: 1、“圈...
人生是
一个
不断解决
问题
的过程
有那么一段时间, 我的思维是很懒惰的, 遇到
问题
容易抱怨
问题
为什么存在, 抱怨之前的人为什么没有做好, 逐渐地产生了一些怕
麻烦
的想法, 比较消极。 后来, 现实倒逼自己去思考, 去改正。 现在好多了。 大约五六年前, 我去广州某公司实习了两个月左右, 听到了这样的一句话: 人生是
一个
不断解决
问题
的过程。 现在想来, 确认如此。 人生总会伴随着这样活着那样的问
原
问题
与对偶
问题
的定义和关系
原
问题
与对偶
问题
的定义和关系 (1)原
问题
与对偶
问题
定义
一个
优化
问题
的原
问题
和对偶
问题
定义如下: 原
问题
: 最小化: f(w)限制条件:{gi(w)≤0 i=1⋯Khi(w)=0 i=1⋯M(1) 最小化:~~~f(w)\\限制条件: \begin{cases} g_i(w)\leq0~~...
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章