社区
C++ Builder
帖子详情
能否让一个TrackBar显示有两个滑块??
lxj1984
2006-06-30 09:36:52
我现在需要一个功能,用滑块限定范围,需要在一个TrackBar中两个滑块,请问能不能实现??我找了半天也没有找到相关选项
还有个小问题,怎样在上面显示相关数值??
...全文
973
10
打赏
收藏
能否让一个TrackBar显示有两个滑块??
我现在需要一个功能,用滑块限定范围,需要在一个TrackBar中两个滑块,请问能不能实现??我找了半天也没有找到相关选项 还有个小问题,怎样在上面显示相关数值??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueDeepOcean
2006-07-01
打赏
举报
回复
给出来吧,现在的程序员,哎……
//---------------------------------------------------------------------------
/*
利用TPanel完成对TTrackBar另一个滑块的模拟
*/
#include <vcl.h>
#pragma hdrstop
#include "Unt_SimulateTwoBlock.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Teg_SimulateTwoBlocks *eg_SimulateTwoBlocks;
TPoint *p;
bool IsClick;
int oldPos;
//---------------------------------------------------------------------------
__fastcall Teg_SimulateTwoBlocks::Teg_SimulateTwoBlocks(TComponent* Owner)
: TForm(Owner)
{
TrackBar->TickMarks = tmBoth;
Panel->Height = 20;
Panel->Width = 9;
Panel->Left = TrackBar->Left + TrackBar->ClientRect.Left + 7; //可变调整系数(1)
Panel->Top = TrackBar->Top + TrackBar->ClientRect.Top + 10; //可变调整系数(2)
Panel->Caption = "";
p = new TPoint;
oldPos = Panel->Left;
}
//---------------------------------------------------------------------------
void __fastcall Teg_SimulateTwoBlocks::PanelMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button == mbLeft)
{
p->x = X;
p->y = Y;
IsClick = true;
Panel->Color = clSilver;
}
}
//---------------------------------------------------------------------------
void __fastcall Teg_SimulateTwoBlocks::PanelMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if (IsClick)
{
if (p->x > X)
if (Panel->Left - (p->x - X) > oldPos)
{
Panel->Left -= (p->x - X);
//TrackBar的滑块每移动12个像素Position加1
if ((Panel->Left - oldPos) % 12 == 0)
TrackBar->SelEnd = (Panel->Left - oldPos) / 12; //也就是TrackBar的Position
}
else
{
Panel->Left = oldPos;
TrackBar->SelEnd = 0;
}
if (p->x < X)
if (Panel->Left + (X - p->x) < (TrackBar->Left + TrackBar->ClientWidth - 14)) //可变微调系数(1)×2
{
Panel->Left += (X - p->x);
if ((Panel->Left - oldPos) % 12 == 0)
TrackBar->SelEnd = (Panel->Left - oldPos) / 12;
}
else
{
Panel->Left = TrackBar->Left + TrackBar->ClientWidth - 16; //可变微调系数(3)
TrackBar->SelEnd = TrackBar->Max;
}
//由StatusBar显示各个结果
StatusBar->Panels->Items[0]->Text = TrackBar->SelEnd;
StatusBar->Panels->Items[1]->Text = TrackBar->SelStart;
StatusBar->Panels->Items[2]->Text = TrackBar->SelEnd - TrackBar->SelStart;
}
}
//---------------------------------------------------------------------------
void __fastcall Teg_SimulateTwoBlocks::PanelMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button == mbLeft)
{
IsClick = false;
Panel->Color = clBtnFace;
}
}
//---------------------------------------------------------------------------
void __fastcall Teg_SimulateTwoBlocks::TrackBarChange(TObject *Sender)
{
TrackBar->SelStart = TrackBar->Position;
StatusBar->Panels->Items[0]->Text = TrackBar->SelEnd;
StatusBar->Panels->Items[1]->Text = TrackBar->SelStart;
StatusBar->Panels->Items[2]->Text = TrackBar->SelEnd - TrackBar->SelStart;
}
//---------------------------------------------------------------------------
真如实观
2006-07-01
打赏
举报
回复
同意上面的做法.
lxj1984
2006-07-01
打赏
举报
回复
谢谢
“给出来吧,现在的程序员,哎……”
我想,你误会了.....
BlueDeepOcean
2006-06-30
打赏
举报
回复
对,就是那样。
lxj1984
2006-06-30
打赏
举报
回复
我这没有Examples,不知道你说的是怎样,不过我仔细看了你的话,也看了Word的滑动条,不知道你说的Label是不是用来标识滑动条上的数字的??我实在是想不出来,怎样才能在一条滑动条上,显示出两个滑块??还是说,让Label显示为类似滑块的形状,然后在鼠标事件中计算值后在滑动条上移动模拟??
BlueDeepOcean
2006-06-30
打赏
举报
回复
我都说了,另一个用TLabel代替的。很简单的,你再好好看看我上面说得。给你的例子我知道不符你的要求,那只是一个模拟状态条和滑块之间的关系的例子。
lxj1984
2006-06-30
打赏
举报
回复
谢谢,我用的D版,里面的HELP,EXAMPLE全没有.....
lxj1984
2006-06-30
打赏
举报
回复
非常感谢,不过我看了下,并不是我想要的。以下是示意
======▊==========▊=========
我想要这样显示,取得两块滑块中间的值。我试着想用两个TrackBar重叠,不过下面的会被遮住,并不能显示两个
BlueDeepOcean
2006-06-30
打赏
举报
回复
另外,你可以参考:
..\Program Files\Borland\CBuilder5\Examples\Apps\RichEdit
文件夹下面有关RichEdit的例子,其中模拟了Word风格的标尺,那就是利用TLabel组件完成标识块的模拟的,你可以参考它并从其中获得启示。其实不难,那个范围就是Label->Left和TrackBar->Width和TrackBar->Max之间的关系嘛。
BlueDeepOcean
2006-06-30
打赏
举报
回复
两个滑块的概念不清楚,看下面的例子,一个是指示滑块,另一个是蓝色进程条:
Form上放置两个Timer,时间分别为140和420,现在在各自Timer的OnTimer中分别处理指示滑块和蓝色进程条:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unt_TrackBar.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Teg_TrackBar *eg_TrackBar;
int Block,Pos;
//---------------------------------------------------------------------------
__fastcall Teg_TrackBar::Teg_TrackBar(TComponent* Owner)
: TForm(Owner)
{
TrackBar->TickMarks = tmBoth;
TrackBar->TickStyle = tsNone;
TrackBar->Height = 25;
BlockTimer->Interval = 140;
PositionTimer->Interval = BlockTimer->Interval * 3;
}
//---------------------------------------------------------------------------
void __fastcall Teg_TrackBar::BlockMove(TObject *Sender)
{
if ((bool)Block)
{
TrackBar->SelStart ++;
if (TrackBar->SelEnd < TrackBar->Max)
Block = 1;
else
Block = 0;
}
else
{
if (TrackBar->SelStart > TrackBar->Min)
Block = 0;
else
Block = 1;
TrackBar->SelStart --;
}
TrackBar->SelEnd = TrackBar->SelStart + 2;
}
//---------------------------------------------------------------------------
void __fastcall Teg_TrackBar::PositionMove(TObject *Sender)
{
if ((bool)Pos)
{
TrackBar->Position ++;
if (TrackBar->Position < TrackBar->Max)
Pos = 1;
else
Pos = 0;
}
else
{
if (TrackBar->Position > TrackBar->Min)
Pos = 0;
else
Pos = 1;
TrackBar->Position --;
}
}
//---------------------------------------------------------------------------
UG 2023 64bit 64 位系统设计软件.rar
UG NX 2023(Unigraphics NX,中文名交互式 CAD/CAM 系统),是西门子 Siemens PLM Software 研发的 CAD/CAE/CAM 一体化产品工程解决方案,提供全套数字化造型与仿真验证手段。软件功能强悍,可轻松完成各类复杂实体、曲面造型构建,广泛应用于机械装备、塑胶模具、汽车零部件、航空航天、数控加工、钣金设计等工业领域。 软件仅支持 Win10、Win11 64 位系统,不再兼容 Win7,硬件配置要求适中。软件集三维建模、工程制图、数控编程、力学与运动仿真等功能于一体,可兼容各类主流设计文件格式。 该版本优化了装配加载速度、曲面建模能力与刀路算法,运行稳定,是当下行业主流版本。 由于安装包文件过大,CSDN 无法直接上传,附件提供下载链接及配套安装教程,欢迎下载使用。
vivado XADC IP核使用教程
vivado XADC IP核使用教程
64 位 NX2023 UG 主流行业版本 无偿持续分享.rar
UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松实现各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。
【变压器的开路试验】变压器进行开路试验时的电路连接配置(Simulink仿真实现)
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真实现方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同时推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。
SoloBlog.zip
SoloBlog.zip
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章