473,324 Members | 2,268 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,324 software developers and data experts.

does vb2005 have builtin UnDo feature for apps? or do I have to wr

Hello,

Does vb2005 have a built-in UnDo feature / object for applications so that I
can undo actions like other windows apps? Or do I have to write my own UnDo
routine?

If vb2005 does have a builtin Undo feature / object / command -- how to
implement it? invoke it?

If there is no builtin undo feature - is there a recommended way to write an
undo action? what would this way be?

Thanks,
Rich
Mar 15 '07 #1
4 1572

"Rich" <Ri**@discussions.microsoft.comwrote in message
news:D5**********************************@microsof t.com...
Hello,

Does vb2005 have a built-in UnDo feature / object for applications so that
I
can undo actions like other windows apps? Or do I have to write my own
UnDo
routine?

If vb2005 does have a builtin Undo feature / object / command -- how to
implement it? invoke it?

If there is no builtin undo feature - is there a recommended way to write
an
undo action? what would this way be?

Thanks,
Rich
I have seen code for what you are looking for. Here are the steps.

1. Define a set of actions which can happen that will "Do" things.

2. Each action will have a Do and an UnDo routine

3. Then ensure that all updates (Do's) get executed by a kind of funnel
routine. This routine will both cause the action to be performed and if
that action is performed log the action in a collection somewhere in your
application. The application should be a stack FIFO.

4. Now you could use the CLT-Z hot key to reverse each action. Use a Pop to
get the latest action from the stack, and that Pop will remove it from the
stack.

That is the framework for what you are attempting.

Lloyd Sheen

Mar 15 '07 #2
Thanks for your reply. This sounds kind of interesting, except that the last
time I did anything which involved the "words" stack/push/pop - was in C++
in the classroom environment about 10 years ago.

When you say stack - are you refering to the Heap stack? or are you using
"Stack" metaphorically? As in - I log each action in a collection object or
a datatable or something where for example - a user updates a field in a row
in some table on the database but needs to undo that action - so the app
looks at the last row in the collection datatable where I have stored the
criteria used to update this field and what the value was before the update
and restore the previous value?

My goal is to not re-invent the Undo Wheel if it already exists in VB2005.
If I can use the Heap to reverse an action - that would be great. But if
that isn't what you are refering to, then I was planning on writing my own
undo routine where I store each action as I described above stuff to their
previous states - which would actually be a new action.

If you ARE referring to the Heap, could you refresh my brain on how to push
and pop stuff on the heap?

Thanks,
Rich

"Lloyd Sheen" wrote:
>
"Rich" <Ri**@discussions.microsoft.comwrote in message
news:D5**********************************@microsof t.com...
Hello,

Does vb2005 have a built-in UnDo feature / object for applications so that
I
can undo actions like other windows apps? Or do I have to write my own
UnDo
routine?

If vb2005 does have a builtin Undo feature / object / command -- how to
implement it? invoke it?

If there is no builtin undo feature - is there a recommended way to write
an
undo action? what would this way be?

Thanks,
Rich

I have seen code for what you are looking for. Here are the steps.

1. Define a set of actions which can happen that will "Do" things.

2. Each action will have a Do and an UnDo routine

3. Then ensure that all updates (Do's) get executed by a kind of funnel
routine. This routine will both cause the action to be performed and if
that action is performed log the action in a collection somewhere in your
application. The application should be a stack FIFO.

4. Now you could use the CLT-Z hot key to reverse each action. Use a Pop to
get the latest action from the stack, and that Pop will remove it from the
stack.

That is the framework for what you are attempting.

Lloyd Sheen

Mar 16 '07 #3

"Rich" <Ri**@discussions.microsoft.comwrote in message
news:32**********************************@microsof t.com...
Thanks for your reply. This sounds kind of interesting, except that the
last
time I did anything which involved the "words" stack/push/pop - was in
C++
in the classroom environment about 10 years ago.

When you say stack - are you refering to the Heap stack? or are you using
"Stack" metaphorically? As in - I log each action in a collection object
or
a datatable or something where for example - a user updates a field in a
row
in some table on the database but needs to undo that action - so the app
looks at the last row in the collection datatable where I have stored the
criteria used to update this field and what the value was before the
update
and restore the previous value?

My goal is to not re-invent the Undo Wheel if it already exists in VB2005.
If I can use the Heap to reverse an action - that would be great. But if
that isn't what you are refering to, then I was planning on writing my own
undo routine where I store each action as I described above stuff to their
previous states - which would actually be a new action.

If you ARE referring to the Heap, could you refresh my brain on how to
push
and pop stuff on the heap?

Thanks,
Rich

"Lloyd Sheen" wrote:
>>
"Rich" <Ri**@discussions.microsoft.comwrote in message
news:D5**********************************@microso ft.com...
Hello,

Does vb2005 have a built-in UnDo feature / object for applications so
that
I
can undo actions like other windows apps? Or do I have to write my own
UnDo
routine?

If vb2005 does have a builtin Undo feature / object / command -- how
to
implement it? invoke it?

If there is no builtin undo feature - is there a recommended way to
write
an
undo action? what would this way be?

Thanks,
Rich

I have seen code for what you are looking for. Here are the steps.

1. Define a set of actions which can happen that will "Do" things.

2. Each action will have a Do and an UnDo routine

3. Then ensure that all updates (Do's) get executed by a kind of funnel
routine. This routine will both cause the action to be performed and if
that action is performed log the action in a collection somewhere in your
application. The application should be a stack FIFO.

4. Now you could use the CLT-Z hot key to reverse each action. Use a Pop
to
get the latest action from the stack, and that Pop will remove it from
the
stack.

That is the framework for what you are attempting.

Lloyd Sheen

The Stack I am talking about is a "Collection" class in Dot.Net V2.0. Check
out System.Collections.Generic.Stack(Of T). The 'T' is the type of object
you are storing. If you create a set of Action objects then they should all
inherit from a base class that has the methods defined that you will use
'Do' and UnDo'. Then the declaration for the Stack would be

Dim MyStack as System.Collections.Generic.Stack(Of BaseClassForActions)

Then to add a new action you create the action (after it is succesfully
completed) to the stack with the following code (assuming an class named
ActionAdd has been defined and has a method Do which returns a boolean
indicating the success of the action) :

Dim MyAction as new ActionAdd
MyAction.NewText = 'NewText'
if MyAction.Do then
' action worked
MyStack.Push(MyAction)
end if
Now if you want to handle an UnDo the code would be as follows:

Dim UnDoAction as BaseClassForActions ' Note we use the baseclass so that
all action objects returned from a Pop will have the UnDo method

if MyStack.count 0 then
UnDoAction = MyStack.Pop
UnDoAction.UnDo
end if

This should provide a start for the general framework. The actual action
objects are according to the type of application you have.

Lloyd Sheen

Mar 16 '07 #4
Thanks. This sounds like a little more fun than I was planning on. I will
give this a try on a test app.

"Lloyd Sheen" wrote:
>
"Rich" <Ri**@discussions.microsoft.comwrote in message
news:32**********************************@microsof t.com...
Thanks for your reply. This sounds kind of interesting, except that the
last
time I did anything which involved the "words" stack/push/pop - was in
C++
in the classroom environment about 10 years ago.

When you say stack - are you refering to the Heap stack? or are you using
"Stack" metaphorically? As in - I log each action in a collection object
or
a datatable or something where for example - a user updates a field in a
row
in some table on the database but needs to undo that action - so the app
looks at the last row in the collection datatable where I have stored the
criteria used to update this field and what the value was before the
update
and restore the previous value?

My goal is to not re-invent the Undo Wheel if it already exists in VB2005.
If I can use the Heap to reverse an action - that would be great. But if
that isn't what you are refering to, then I was planning on writing my own
undo routine where I store each action as I described above stuff to their
previous states - which would actually be a new action.

If you ARE referring to the Heap, could you refresh my brain on how to
push
and pop stuff on the heap?

Thanks,
Rich

"Lloyd Sheen" wrote:
>
"Rich" <Ri**@discussions.microsoft.comwrote in message
news:D5**********************************@microsof t.com...
Hello,

Does vb2005 have a built-in UnDo feature / object for applications so
that
I
can undo actions like other windows apps? Or do I have to write my own
UnDo
routine?

If vb2005 does have a builtin Undo feature / object / command -- how
to
implement it? invoke it?

If there is no builtin undo feature - is there a recommended way to
write
an
undo action? what would this way be?

Thanks,
Rich

I have seen code for what you are looking for. Here are the steps.

1. Define a set of actions which can happen that will "Do" things.

2. Each action will have a Do and an UnDo routine

3. Then ensure that all updates (Do's) get executed by a kind of funnel
routine. This routine will both cause the action to be performed and if
that action is performed log the action in a collection somewhere in your
application. The application should be a stack FIFO.

4. Now you could use the CLT-Z hot key to reverse each action. Use a Pop
to
get the latest action from the stack, and that Pop will remove it from
the
stack.

That is the framework for what you are attempting.

Lloyd Sheen


The Stack I am talking about is a "Collection" class in Dot.Net V2.0. Check
out System.Collections.Generic.Stack(Of T). The 'T' is the type of object
you are storing. If you create a set of Action objects then they should all
inherit from a base class that has the methods defined that you will use
'Do' and UnDo'. Then the declaration for the Stack would be

Dim MyStack as System.Collections.Generic.Stack(Of BaseClassForActions)

Then to add a new action you create the action (after it is succesfully
completed) to the stack with the following code (assuming an class named
ActionAdd has been defined and has a method Do which returns a boolean
indicating the success of the action) :

Dim MyAction as new ActionAdd
MyAction.NewText = 'NewText'
if MyAction.Do then
' action worked
MyStack.Push(MyAction)
end if
Now if you want to handle an UnDo the code would be as follows:

Dim UnDoAction as BaseClassForActions ' Note we use the baseclass so that
all action objects returned from a Pop will have the UnDo method

if MyStack.count 0 then
UnDoAction = MyStack.Pop
UnDoAction.UnDo
end if

This should provide a start for the general framework. The actual action
objects are according to the type of application you have.

Lloyd Sheen

Mar 16 '07 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Enigman O'Maly | last post by:
I've written, er, that is, recorded and re-written a lot of little useful macros to help me with a spreadsheet dealing with financial investments. Very handy they are, yes, but sometimes I wish I...
2
by: Tony Nelson | last post by:
I'm looking for a "pythonic" GTK Undo library/class. It would have a framework for Undo/Redo, and would provide Undo/Redo for TextView, Entry, and containers and other classes. In a "batteries...
1
by: lbbs | last post by:
Will access allow you to undo more than one step. On mine it seams that you can only undo the last thing you did. In excel for example you can undo at least a dozen steps backwards. In...
11
by: Mad Joe | last post by:
I'm using a richTextBox for editing a source code (with Syntax Highlighting) of my own programming language... How come that myRichTextBox doesn't respond to Undo/Redo functions by using default...
11
by: Brian W | last post by:
Yet another editor problem To reproduce do the following 1) Open a Webform and switch to HTML edit mode 2) Enter the Following (include spaces) This is some text before <asp:hyperlink...
2
by: Omar Abid | last post by:
Hi, This the best site where you can find Hi members, We are happy to tell that if you search for : jobs with high wage or to debug a program or to find a good source code and to make a good...
12
by: rdemyan via AccessMonster.com | last post by:
I'm having a complicated linking problem. Before I get into the particulars, I'd like to know how Access links to the back-end file at startup, AFTER I've distributed my application to the client....
113
by: John Nagle | last post by:
The major complaint I have about Python is that the packages which connect it to other software components all seem to have serious problems. As long as you don't need to talk to anything outside...
1
by: =?Utf-8?B?UmljaA==?= | last post by:
Hello, I just upgraded the motherboard and cpu on my computer (core2Duo). I also imaged the contents of my old harddrive to a new one(500g) - Windows XP sp2 (version2002). Everything appears...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.