Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 5515|回复: 3

模擬 iPhone 從左右滑出的滑動菜單效果

[复制链接]

该用户从未签到

发表于 2010-8-25 21:41:58 | 显示全部楼层 |阅读模式
WIN32 的版本, 主要也是應用在 POS 上, 看過很多觸控螢幕的點餐 POS 系統, 畫面做的五顏六色好不熱鬧, 不過還沒看過像 iphone 一樣, 手指在觸控螢幕左或右滑一下, 就有選單從左或右 "滑" 出來, 只是自己的突發奇想, 測試結果證明可行

■ 設計原理
1.透過物件的 OnMouseDown(), OnMouseUp(), OnMouseMove() 幾個事件 , 比對兩個不同時間點的滑鼠座標位置 , 看其是向左還是向右移動的趨勢 , 然後觸發移動選單的程序 , 把選單帶到定位
2.原本是透過 Form 的 OnMouseDown(), OnMouseUp(), OnMouseMove() , 雛型效果還不錯 , 證明這種想法可行 , 可以實踐出 IPHONE 的滑動菜單效果
3.後來發現有個現實問題 , 實際上程式的 Form 上不是單純同測試雛型那麼乾淨 ,Form 上還有其他物件 , 甚至有的物件是 Enabled = false 的 , 當你的滑鼠在這類的物件上滑動時 , Form 是抓不到 OnMouseDown(), OnMouseUp(), OnMouseMove() 等事件的
4.Form 沒有 像 KeyPreview 類似的 "MousePreview" 屬性 , 所以無法攔截在子物件上的滑鼠事件
5.這時 MOUSE HOOK 就派上用場了 , 透過 MOUSE HOOK 抓取全域的滑鼠事件 , 比對兩個不同時間點的滑鼠座標位置 , 看其是向左還是向右移動的趨勢 , 然後觸發移動選單的程序 , 把選單帶到定位
6.選單是一個 Panel , 上面你可以放入其他按鈕 , 選單(Panel)有三個定位點 : (1)藏在畫面左邊 , (2)秀出位置 , (3)藏在畫面右邊
7.透過 Timmer 物件移動選單位置到 三個定位點 之中的一個

评分

参与人数 1威望 +11 收起 理由
猫工 + 11 原创内容

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2010-8-25 21:55:46 | 显示全部楼层
你这个是应用在wince系统下的吗?
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-25 22:01:16 | 显示全部楼层
已說了是在 WIN32 環境下, 在PosReady 2009 (類似 XP 的 EMABED 版)有觸控螢幕操作的環境下實作過 , 如果 WINCE 可以處理 MOUSE HOOK 的話, 應該也 OK , 只是小弟目前沒有機會寫 WINCE 的系統
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-11-24 22:00:46 | 显示全部楼层
楼主辛苦!不过可惜的是没有源码!
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 22:49 , Processed in 0.032600 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表