关于撤销的问题!

sdzbbz 2006-11-17 05:12:51
是这样的,我设置了两个按钮,button1和button2,现在我想让button2实现的功能是能撤销button1的功能,举个例子说点击button1后某图放大居中了,再点击button2能使某图缩小并恢复到原来的位置,那么button2的代码该怎样写呢?谢谢大家了!
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
踢踏 2006-11-17
  • 打赏
  • 举报
回复
你的变量top和Form1.top 相同,导致这个问题。
sdzbbz 2006-11-17
  • 打赏
  • 举报
回复
解决了,揭帖
sdzbbz 2006-11-17
  • 打赏
  • 举报
回复
加了begin end后还是老样子,窗体跟着动,而且如果点击button1后,再点某幅图,再点button2时,有时图还原的位置还不在原来的老位置,奇怪了,大家看看我的代码究竟哪里出问题了?急~~~
踢踏 2006-11-17
  • 打赏
  • 举报
回复
语法上有些毛病,先改了再调
if FCurrentChart <> nil then
begin
wid := FCurrentChart.Width;
hei := FCurrentChart.Height;
lef := FCurrentChart.Left;
top := FCurrentChart.Top;
FCurrentChart.BringToFront;
FCurrentChart.Width := 400;
FCurrentChart.Height := 350;
FCurrentChart.Left := 180;
FCurrentChart.Top := 90;
end

。。。。。。。

procedure TForm1.Button2Click(Sender: TObject);
begin
if FCurrentChart <> nil then
begin
FCurrentChart.Width := wid;
FCurrentChart.Height := hei;
FCurrentChart.Left := lef;
FCurrentChart.Top := top;
end
end;
sdzbbz 2006-11-17
  • 打赏
  • 举报
回复
按照wudi的方法,我写的代码如下:
var
Form1: TForm1;
wid,hei,lef,top: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if FCurrentChart <> nil then
wid := FCurrentChart.Width;
hei := FCurrentChart.Height;
lef := FCurrentChart.Left;
top := FCurrentChart.Top;
FCurrentChart.BringToFront;
FCurrentChart.Width := 400;
FCurrentChart.Height := 350;
FCurrentChart.Left := 180;
FCurrentChart.Top := 90;
end;

procedure TForm1.ChartClick(Sender: TObject);
begin
if Sender is TChart then
FCurrentChart := Sender as TChart;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Idx: Integer;
a,b:integer;
begin
for Idx := 0 to Pred(ComponentCount) do
if Components[Idx] is TChart then
(Components[Idx] as TChart).OnClick := ChartClick;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if FCurrentChart <> nil then
FCurrentChart.Width := wid;
FCurrentChart.Height := hei;
FCurrentChart.Left := lef;
FCurrentChart.Top := top;
end;
结果运行的时候,一点击button1不光是chart移动,窗体也跟着往下移动,如果chart在窗体的下面的话,点击button1后,窗体居然也跟着跑到电脑屏幕的下半截去了,这是怎么回事呀?请帮忙看看改改,谢谢!
踢踏 2006-11-17
  • 打赏
  • 举报
回复
ctrl+z 用多了,不要看表面现象,要看实质。
wudi_1982 2006-11-17
  • 打赏
  • 举报
回复
可以揭帖了。
wudi_1982 2006-11-17
  • 打赏
  • 举报
回复
ctrl+z也就是一个热键,对应了一些代码

cancel在具体的对象中有具体的实现。
wudi_1982 2006-11-17
  • 打赏
  • 举报
回复
木有
sdzbbz 2006-11-17
  • 打赏
  • 举报
回复
不能用cancel之类的函数把button1给撤销回去吗?相当于咱平时用的ctrl+z的功能呀
wudi_1982 2006-11-17
  • 打赏
  • 举报
回复
继续你的例子说,
button1方法图片的时候,用一个全局变量之类的东西记录下当前的位置和大小,button2根据这个信息再缩放回去就完了。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧