社区
Delphi
帖子详情
那位达人给小弟我举个控件间通讯的例子!
potter_cs
2003-08-12 06:15:40
控件间通讯 设想是发送方sendmessage一个自定义消息,接受方接受到消息处理相关信息!
谢谢了!
...全文
11
2
打赏
收藏
那位达人给小弟我举个控件间通讯的例子!
控件间通讯 设想是发送方sendmessage一个自定义消息,接受方接受到消息处理相关信息! 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huojiehai
2003-08-12
打赏
举报
回复
限制Memo的行数和行宽
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
public
MaxCharsPerLine, MaxLines: Integer;
function MemoLine: Integer;
function LineLen(r: Integer): Integer;
function NRows: Integer;
end;
function TForm1.NRows: Integer;
begin
with Memo1 do
Result:=1+SendMessage(Handle,EM_LINEFROMCHAR,GetTextLen-1,0);
end;
function TForm1.LineLen(r: Integer): Integer;
var
r1,r2:Integer;
begin
with Memo1 do begin
r1:=SendMessage(Handle,EM_LINEINDEX,r,0);
if r<NRows-1 then
r2:=SendMessage(Handle,EM_LINEINDEX,r+1,0)-2{-CR/LF}
else
r2:=GetTextLen;
end;
Result:=r2-r1;
end;
function TForm1.MemoLine: Integer;
begin
with Memo1 do
Result:=SendMessage(Handle,EM_LINEFROMCHAR,SelStart,0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MaxCharsPerLine := 8;
MaxLines := 4;
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
with Memo1 do
begin
case Key of
' '..#255: if LineLen(MemoLine)>=MaxCharsPerLine then
Key:=#0;
#10, #13: if NRows>=MaxLines then
Key:=#0;
#8: if SelStart=SendMessage(Handle,EM_LINEINDEX,MemoLine,0) then
Key:=#0;
end;
end;
end;
huojiehai
2003-08-12
打赏
举报
回复
SendData程序向 GetData程序发送消息,并传递 edit1中的字符串; GetData在收到消息后,把 SendData发送的字符串接受下来,并显示在相应的 edit1中。
SendData程序:
……
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
begin
ds.cbData := Length (Edit1.Text) + 1;
GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
StrCopy (ds.lpData, PChar (Edit1.Text));
Hd := FindWindow (nil, 'Form2'); // 获得接受窗口的句柄
if Hd <> 0 then
SendMessage (Hd, WM_COPYDATA, Handle,
Cardinal(@ds)) // 发送 WM_COPYDATA消息
else
ShowMessage ('目标窗口没找到! ');
FreeMem (ds.lpData); //释放资源
end;
GetData程序:
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
{ Public declarations }
end;
var
Form2: TForm2;
implementation
procedure TForm2.Mymessage(var t:TWmCopyData);
begin
Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
end;
朱老师QT系列课程-1.7.QT其他标准
控件
和布局
控件
一部分主要讲QT的Item类
控件
,包括ItemView类4个
控件
(QListView、QTreeView、QTableView、QColumnView),以及3个ItemWidget类
控件
(QListWidget、QTreeWidget、QTableWidget)。另一部分是qt的布局类
控件
,包括 &...
C#多线程操作界面
控件
的解决方案
在使用VS2005的时候,如果你从非创建这个
控件
的线程中访问这个
控件
或者操作这个
控件
的话就会抛出这个异常。这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便。其实解决这个问题有两...
C#多线程操作界面
控件
的解决方案(转)
在使用VS2005的时候,如果你从非创建这个
控件
的线程中访问这个
控件
或者操作这个
控件
的话就会抛出这个异常。这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便。其实解决这个问题有两...
GridView 高级技巧(每行显示两条数据)
这是
小弟
第一次写文章,有什么不妥或者不对之处还请给位
达人
指出啊 .好了废话少说,下面我们进入文章的正文。 1.先介绍下我对Gridview的理解吧:GridView 是05以后新加的
控件
,它的特点就是把数据源的绑定,和对数据...
对‘初学者应该选择哪种编程语言’的回答——计算机
达人
成长之路(38)
在计算机学习问题排行版上,有一个问题绝对是稳居榜首,每次提出都能在各大论坛掀起一股顶帖风暴,而各大网站的每个网络大牛,都会收到无数学院
小弟
发来弱弱的提问,这个排行榜第一的问题就是: “我是一名XXXX学院...
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章