首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置tMemo顶部项

设置tMemo顶部项
EN

Stack Overflow用户
提问于 2022-03-21 06:50:24
回答 2查看 21关注 0票数 0

如何使tMemo显示器从最上面的项目开始?我没有发现任何类似于"TopItem“的东西,我想知道是否必须通过发送消息来完成(按键控制、按键主页、keyup home、keyup控件),但是尽管我阅读了大量的Delphi帮助,但我也没有想出如何做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2022-03-21 18:37:52

只需选择任何字符,取决于您希望在行中可见的内容。

代码语言:javascript
运行
复制
Memo.Lines.SelStart:=0; 
Memo.Lines.SelLength:=1;
票数 0
EN

Stack Overflow用户

发布于 2022-03-22 10:48:43

Steve88,谢谢你的努力,但这不管用。从彼得下面的一篇文章中得到了一些想法,这让我想到了以下几点,这实际上是可行的!

对于是使用MemoPopup.Perform还是PostMessage,有一些有趣的地方,我希望有人能了解这些工具的工作原理。

代码语言:javascript
运行
复制
// Trying to get a tMemo to display its contents, starting at the first line.
// Various ideas from assorted net sites, and Peter Below's reply to someone
// with a similar problem - thanks, Peter!
// A couple of bits left in for people to puzzle over as to why they do or don't work!!

uses Winapi.Windows, Winapi.Messages;

var
   KeyStateBefore, KeyStateUse : tKeyboardState;
begin
      PostMessage(MemoPopup.Handle, WM_KeyDown, ord('A'), 0); //'a' gets through
      MemoPopup.Perform(WinApi.Messages.WM_KEYDOWN, ord('K'), 0);  //This does not

      Application.ProcessMessages;


      GetKeyboardState(KeyStateBefore);

      KeyStateUse := KeyStateBefore;
      KeyStateUse[vk_Control] := $81;
      SetKeyBoardState(KeyStateUse); //Now turn on the control key.

      //These do appear to work as expected.
      MemoPopup.Perform(WinApi.Messages.WM_KEYDOWN, vk_Home, 0);
      MemoPopup.Perform(WinApi.Messages.WM_KEYUP, vk_Home, 0);

      Application.ProcessMessages;


      SetKeyboardState(KeyStateBefore); //Remove the control key.

      PostMessage(MemoPopup.Handle, WM_KeyDown, ord('B'), 0); //Got through, lower      case
      MemoPopup.Perform(WinApi.Messages.WM_KEYDOWN, ord('E'), 0);  //Nope

      Application.ProcessMessages;

      KeyStateUse := KeyStateBefore;
      KeyStateUse[vk_Shift] := $80;
      SetKeyboardState(KeyStateUse);

      PostMessage(MemoPopup.Handle, WM_KeyDown, ord('C'), 0); //Got through in   upper case
      MemoPopup.Perform(WinApi.Messages.WM_KEYDOWN, ord('Q'), 0); //Not this though

      Application.ProcessMessages;

      SetKeyBoardState(KeyStateBefore);
      Application.ProcessMessages;

end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71553752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档