关于PopupMenu向上弹出显示

PopupMenu弹出位置的控制 PopupMenu作为弹出菜单是很好用的,但是默认只能弹出在view的下方,而实际中这样的弹出位置可能无法满足需求,比如自定义的canvasView,要在canvasView长按的位置弹出菜单,PopupMenu只有一个show的方法,没有可以设置位置的方法,但当我们跟进源码去看时发现了这样的一段代码: PopupMenu.class public void show() { ... 阅读详情

       在使用PopupMenu过程中,应该有很多朋友在使用 PopupMenu弹出菜单时有这样一个想法,比如我要让我的PopupMenu像Window系统的“开始”向上显示。可能有很多朋友在这一方面遇到难题了。也许也有些朋友通过PopupMenu 的.Popup(x,y)来设计向个弹出,但用过这个功能时会感到不满意的。经过本的仔细摸索终于搞定了解决这个问题的方法, 以下是代码实现部分,有两种方法可以实现:

方法一:

procedure TForm1.Button2Click(Sender: TObject);
var
  pc :TPoint;
begin
    SetForegroundWindow(Handle)  ;
    pc :=Button2.ClientToScreen(Point(0, 0)) ;
    TrackPopupMenu(PopupMenu1.Handle,TPM_BOTTOMALIGN,pc.X, pc.Y,0,Handle,nil);
    PostMessage(Handle, WM_NULL, 0, 0);
end;

方法二:

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Pp: PTPMParams;
  pc :TPoint;
begin
    SetForegroundWindow(Handle)  ;
    pc :=Button1.ClientToScreen(Point(0, 0)) ;
    GetMem(Pp, sizeof(TTPMParams));
    Pp^.cbSize := sizeof(TTPMParams);
    Pp^.rcExclude := Rect(pc.X, pc.Y,
    Screen.Width ,Screen.Height);
    TrackPopupMenuEx(PopupMenu1.Handle,TPM_BOTTOMALIGN, pc.X,
      pc.Y, Handle, Pp);
    FreeMem(Pp);
   PostMessage(Handle, WM_NULL, 0, 0);
end;

以上是两种方法的实现部分,如有什么问题或更好的办法可以联系我jzymail2008@163.com 或直接在此留言。
对此相关的msdn信息为:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus/menureference/menufunctions/trackpopupmenu.asp

Android PopupWindow弹窗动态显示在View的上下方, 我们在显示的时候,首先去计算一下弹窗高度。使用屏幕的高 - popupwind的高并且和popup的高做对比,如果大于的话,则显示在下方,如果小于的话,则显示在上方。我们要弹出的PopupWindow在View的下方,如果下方区域不够,则弹出在上方。显示popupwindow如下。 阅读详情

相关推荐

在Oracle中创建序列及简单用法介绍

MySQL中的自动递增列是一种特殊的列类型,它会自动为每个插入的行生成唯一的递增值。创建序列后,可以在INSERT语句或其他需要唯一标识符的地方使用序列的NEXTVAL函数获取下一个序列值。使用自动递增列时,无需指定具体的值,数据库会自动为该列生成递增的唯一值。在上面的示例中,我们创建了一个名为employees的表,其中id列是自动递增的主键列。在上面的示例中,我们将序列的下一个值插入到employees表的id字段中。在上面的示例中,我们只插入了name字段的值,而id字段的值会自动生成。

SmufHtml的博客 1832

Popupmenu 在光标所在位置弹出菜单

Delphi鼠标左键点击Button弹出快捷菜单Popupmenu procedure TForm1.SpeedButton4Click(Sender: TObject);beginPopupMenu2.Popup(Mouse.CursorPos.X-30,Mouse.CursorPos.Y+12);end;在光标所在位置弹出菜单;pro

阿里的专栏 2247

python点云可视化

Python三种点云可视化方案:mayavi、matplotlib、CloudCompare。

叶子的博客 1万+

Android 弹框菜单系列之PopupMenu

菜单之前是用户点击系统的菜单键才展示出来的,后来这个键渐渐被移除,菜单变成了点击任意的view都可以展示。菜单非为3种:   1.Options menu and action bar 选项菜单和操作栏   2.Context menu and contextual action mode上下文菜单和上下文动作模式   3.Popup menu弹出式菜单 一.效果图: 二.快速实现: 1.主函数代码: import android.annotation.SuppressLi...

shenggaofei的博客 8436

android PopupMenu弹出式菜单的使用

 PopupMenu代表弹出式菜单。他会指定组件上弹出PopupMenu,默认情况下PopupMenu显示在该组件的下方或者上方,PopupMenu可以增加多个菜单项并且可以为菜单项添加子菜单、 首先在res/menu下编写xml文件my_menu.xml http://schemas.android.com/apk/res/android" >             andr

1073

oracle创建序列

【代码】oracle创建序列。

xtaypyvi123456的博客 2021

在oracle中创建一个序列,Oracle(创建序列)

概念:所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。1.序列可以自动生成唯一值2.是一个可以被共享的对象3.典型的用来生成主键值的一个对象4.可以替代应用程序代码5.当sequence的值存放在缓存中时可以提高访问效率。创建序列语法:CREATE SEQUENCE name[INCREMENT BY n][START WITH n][{MA...

weixin_39616416的博客 2459

oracle序列怎么对应表,oracle表中怎么创建序列

oracle序列的创建:createsequenceseq_newsIdincrementby1startwith1maxvalue999999999;获得oracle序列的SQL语句:selectseq_newsid.nextvalfromsys.dual;删除oracle序列的SQL语句:DROPSEQUENCEseq_newsId;oracle序列在开发中的使用:oracle序列是一数据库对...

weixin_31043555的博客 502

oracle创建自增序列

Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。 在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1.Create Sequence 首先要有CREATE SEQUEN...

huangshikai 9331

java创建oracle序列_Oracle序列的创建和使用

1.创建序列语法:create sequence 序列名 [可选参数](序列名常定义为‘seq_XXX’的形式,创建序列不能使用replace)可选参数说明:increment by:序列每次增加的值,负数表示递减,缺省值为1;start with:序列的初始值,缺省值为1;maxvalue:序列可生成的最大值,缺省值为nomaxvalue,即不设置最大值;系统能产生的最大值为10的27次方;mi...

weixin_29062823的博客 534

Oracle中创建序列

序列:是oacle提供的用于产生一系列唯一数字的数据库对象,不占用磁盘,占用内存 创建序列 create sequence TF_WXBANK_F_SEQUENCE start with 14001000 increment by 1 minvalue 14001000 maxvalue 15000999 nocycle order 各变量解释 1.start with:序列得初始值,缺省值为1...

baidu_39563530的博客 460

oracle序列创建及使用,Oracle创建和使用序列

Oracle创建和使用序列1 语法create sequence 序列名称2 创建序列SQL> create sequence emp_seq;Sequence created.序列是一个数据库对象,因此可以在数据字典中获得其信息。与序列相关的视图为user_objects和user_sequences。SQL> col object_name format a15;SQL> c...

weixin_28849465的博客 909

oracle视图如何创建索引,ORACLE 创建视图索引序列

/*视图View视图是从若干基本表和(或)其他视图构造出来的表视图存放的都是查询语句,并没有真实的数据虚表作用限制对数据的操作复杂查询变简单提供相同数据的不同显示UNION ALL直接添加到一起UNION添加到一起并去重*/--赋予scott用户创建视图的权限sqlplus / as sysdba;GRANT CREATE VIEW TO SCOTT;--创建视图CREATE OR REPLACE...

weixin_35148943的博客 6237

Oracle创建序列

<br />Oracle中的序列号顾名思义就是创建一个序列号,可以在插入或者更新的时候调用,相当于是一个生成器<br />创建语法:<br />create sequence myse<br />increment by 1 --增长度<br />start with 1 --从哪里增加,就是说下一个获取的值从这个值开始<br />nomaxvalue --不设置最大值 对应的:maxvalue 30、<br />order --指定一定往下增加<br />nocycle --不循环,CYCLE和NOCYC

yitian20000的专栏 4953

如何在oracle数据库创建序列,Oracle创建和使用序列

Oracle创建和使用序列1 语法create sequence 序列名称2 创建序列SQL> create sequence emp_seq;Sequence created.序列是一个数据库对象,因此可以在数据字典中获得其信息。与序列相关的视图为user_objects和user_sequences。SQL> col object_name format a15;SQL> c...

weixin_42212792的博客 1218

java创建oracle序列_Oracle 序列的创建和使用

创建序列create sequence seq_a minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache;查询序列select seq_a.nextval from dual;为每张表生成对应的序列--创建存储过程create or replace procedure p_createseq(tablename...

weixin_39645308的博客 258

oracle表中怎么创建序列

oracle序列的创建: create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 获得oracle序列的SQL语句: select seq_newsid.nextval from sys.dual; 删除oracle序列的SQL语句: DROP SEQUENCE seq

Code-lover's Learning Notes 2万+

Oracle创建序列语句

在 Oracle 数据库中,序列是一个独立的对象,可以被多个会话同时使用,以确保生成的值是唯一的。3、最大值:MAXVALUE 9999999999999999999,表示序列的最大值为 9999999999999999999。6、缓存:CACHE 2000,表示缓存 2000 个序列值,以提高性能。INCREMENT BY 1,表示每次生成新的序列值时,递增1。7、循环:CYCLE,表示当序列达到最大值时,重新从最小值开始。MINVALUE 1, 表示序列的最小值为 1。

weixin_56348428的博客 489

YOLOv8改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 1042

红外发射代码.rar

代码主要是根据NEC协议写的红外发射部分,解码代码网上很多,而关于编码后发射这部分并不丰富。我花了一些时间写了这个红外发射代码。希望给学红外通信的朋友带来些帮助。

上一篇: JSP连接各类数据库大全
下一篇: Java的Build工具——Ant应用指南
jiang5460
博客等级 码龄23年 8粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值