Just to inform you that tinyMCE cannot handle the sup / sub correctly also.
Here is a video:
All the stuff that bothers software developer in his everyday tasks.
Mar 12, 2009
Mar 11, 2009
Telerik radEditor, it is not a bug... but wait ...
Okay, yesterday I wrote a small post showing a small malfunction in telerik radEditor.
The problem was using Sub - Sup...
I got a comment from Tervel - a guy who works on the editor.
As the comment is in Bulgarian I will add a free translation in english (I will ommit hi, pavel and so on and will translate only the things that have relation to this post).
"The way you are changing the commands, it seems to me that the problem is in the browser RichText edit engine.
Sup and Sub commands are sent from telerik radEditor to the browser for further processing." (I think there was something like execCommand("commandName") in JavaScript, this is what he is talking about.
"You can check other editors to verify this behaviour. Strictly, I don't think this is a bug, IE does include sup / sub tags in the context of the current tag, not as a parrent element of the current tag. The result is logical and correct. Whether this is intuitive behavior is another question offcourse. By the way, I think it is."
So here is what I think:
I think that Tervel is right - this is the behavior of IE. And the behavior of FireFox. I checked it too. And this is not a bug.
Yes it is not very intuitive.
Yes it takes another click.
But to me this behavior can be fixed in Telerik making their editor even more intuitive and easy to use.
I don't see any situation in which one would like to have both : sup and sub tags selected. Why would we do that?
Here is what I think can be done in the editor, if someday the guys have some spare time:
Click on sup scnario:
1. Check if the sub command is added (probably it will be but just check for sure).
2. If yes - unselect it.
Same can happen for sub.
Here is a video in which I am trying to input formula with two variables:
And last but not least - this is not an issue for the editor. I just wanted to share my opinion as Tervel left comment.
And once again - we love radEdit ;).
The problem was using Sub - Sup...
I got a comment from Tervel - a guy who works on the editor.
As the comment is in Bulgarian I will add a free translation in english (I will ommit hi, pavel and so on and will translate only the things that have relation to this post).
"The way you are changing the commands, it seems to me that the problem is in the browser RichText edit engine.
Sup and Sub commands are sent from telerik radEditor to the browser for further processing." (I think there was something like execCommand("commandName") in JavaScript, this is what he is talking about.
"You can check other editors to verify this behaviour. Strictly, I don't think this is a bug, IE does include sup / sub tags in the context of the current tag, not as a parrent element of the current tag. The result is logical and correct. Whether this is intuitive behavior is another question offcourse. By the way, I think it is."
So here is what I think:
I think that Tervel is right - this is the behavior of IE. And the behavior of FireFox. I checked it too. And this is not a bug.
Yes it is not very intuitive.
Yes it takes another click.
But to me this behavior can be fixed in Telerik making their editor even more intuitive and easy to use.
I don't see any situation in which one would like to have both : sup and sub tags selected. Why would we do that?
Here is what I think can be done in the editor, if someday the guys have some spare time:
Click on sup scnario:
1. Check if the sub command is added (probably it will be but just check for sure).
2. If yes - unselect it.
Same can happen for sub.
Here is a video in which I am trying to input formula with two variables:
And last but not least - this is not an issue for the editor. I just wanted to share my opinion as Tervel left comment.
And once again - we love radEdit ;).
Mar 10, 2009
Small bug in telerik radEditor
This one I found while I was playing with the telerik radEditor:
I don't think it is a big deal. You can live with it. Still I consider telerik radEditor one of the best web editors available.
I don't think it is a big deal. You can live with it. Still I consider telerik radEditor one of the best web editors available.
Feb 20, 2009
Microsoft SQL Management Studio - Saving changes is not permitted error message.
If you are using Microsoft SQL Management Studio 2008 you may have across this message while trying to edit a table in database:
Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.
It is so self exlpanatory still a lot of people have problems to solve it.
You can follow the steps bellow to fix this:
Select "Options" from the Tools menu:
Then Uncheck the "Prevent saving changes that require table re-creation" option and click OK:
Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.
It is so self exlpanatory still a lot of people have problems to solve it.
You can follow the steps bellow to fix this:
Select "Options" from the Tools menu:
Then Uncheck the "Prevent saving changes that require table re-creation" option and click OK:
Jan 19, 2009
MCTS : Windows applications achieved today!
I got this badge officially today:
_512.gif)
I am already entitled as a MCPD: Web Applicaionts but I wanted to achieve the MCPD : Enterprise Developer also so I needed to pass the windows thing.
In order to get there I only need to pass one more exam - the Distributed Applications exam.
Wish me luck!
_512.gif)
I am already entitled as a MCPD: Web Applicaionts but I wanted to achieve the MCPD : Enterprise Developer also so I needed to pass the windows thing.
In order to get there I only need to pass one more exam - the Distributed Applications exam.
Wish me luck!
Jan 11, 2009
Jan 9, 2009
Your site suddenly stops to save cookies?
I am currently developing an application. One of the requirements is the user to be able to change the language. I added a dropdown to hold the languages. Upon change a cookie is sent to the client with the language selected so when the user visits the site next time his / her language can be auto adjusted. It worked as a charm until today.
It suddenly stopped. I was wondering who to blame, when I saw a small baloon tooltip on the taskbar. It said I am running out of disk space ;).
I deleted my cookies in IE and everything started working correctly again.
(I just wonder if the disk space was the reason why under Firefox worked fine?)
It suddenly stopped. I was wondering who to blame, when I saw a small baloon tooltip on the taskbar. It said I am running out of disk space ;).
I deleted my cookies in IE and everything started working correctly again.
(I just wonder if the disk space was the reason why under Firefox worked fine?)
Dec 18, 2008
Telerik RadSkinManager doesn't persist the Skin.
If you programatically change the Telerik RadSkinManager Skin property it won't get persisted in the key you added.
This is because probably in telerik asumed if there is no skin chooser the skins won't change and will be loaded from the markup. It is not a bad decision.
However, you may find yourself in need to programatically change the skin and want it persisted.
To do the things tidy I did a small code to persist the skin where it should be persisted.
Here is the code:
switch (rsMgr.PersistenceMode)
{
case RadSkinManagerPersistenceMode.Cookie:
// Create a cookie to persist the skin selection for the session only:
HttpCookie cookieSkin = new HttpCookie(rsMgr.PersistenceKey, rsMgr.Skin);
Response.Cookies.Add(cookieSkin);
break;
case RadSkinManagerPersistenceMode.Session:
// Create a session variable with the same name:
Session[rsMgr.PersistenceKey] = rsMgr.Skin;
break;
case RadSkinManagerPersistenceMode.ViewState:
// View state variable:
ViewState[rsMgr.PersistenceKey] = rsMgr.Skin;
break;
}
where rsMgr is RadSkinManager.
Now you may paste this code in a method and call this method after you programatically assign skin to the manager. I needed this because I wanted to allow the user to change from some of the skins (not all of them) I couldn't find a way to only hide few skins and display others so I can use the standard functionality of the SkinChooser proerty so I added my own RadCombobox with the skins I want displayed.
Hope this helps someone out there...
Dec 14, 2008
Nice little tool to help me with twitter.
I created a small twitter software what it does is to check each hour if I am listening to Winamp, get the song if possible and write it in twitter for me and the people who are eventually interested in what I am listening.
Here is the deal:

You can download it from here:
TWamp - Nice little twitter software
You can follow me on twitter from the following url:
My twitter profile
Please note: TWamp isn't very user friendly. You need to get along with it in order to use it ;).
Here is the deal:
You can download it from here:
TWamp - Nice little twitter software
You can follow me on twitter from the following url:
My twitter profile
Please note: TWamp isn't very user friendly. You need to get along with it in order to use it ;).
Dec 2, 2008
Understanding the recursion.
Here is the golden rule to understand the recursion:
"In order to understand recursion one must first understand recursion."
"In order to understand recursion one must first understand recursion."
Dec 1, 2008
Microsoft Office Word automation in C# - How to add table to the document?
The following C# code will create a new document, add a table to it and ask the user to save it. Document will look like this:

The following code will add a table in word and then ask the user to provide a filename to save the document:
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.ApplicationClass();
app.Visible = false;
object start = 0;
object end = 0;
object oNull = System.Reflection.Missing.Value;
Document doc = new DocumentClass();
doc = app.Documents.Add(ref oNull, ref oNull, ref oNull, ref oNull);
Table tbl = doc.Tables.Add(doc.Range(ref start, ref end), 10, 2, ref oNull, ref oNull);
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
tbl.Rows[i + 1].Cells[1].Range.Text = "Run# :" + ((int)i + 1).ToString();
tbl.Rows[i + 1].Cells[2].Range.Text = "Value :" + rnd.Next(0, 2000).ToString();
}
object oFalse = false;
app.Visible = true;
try
{
doc.Save();
}
catch (Exception ex)
{
if (ex.Message.ToLower().IndexOf("command failed") == -1)
{
throw ex;
}
}
app.Quit(ref oFalse, ref oFalse, ref oFalse);
What we done is to create a new document, a new table, and fill the table with random values.
Seems very easy but not quite sure how well document :).
The following code will add a table in word and then ask the user to provide a filename to save the document:
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.ApplicationClass();
app.Visible = false;
object start = 0;
object end = 0;
object oNull = System.Reflection.Missing.Value;
Document doc = new DocumentClass();
doc = app.Documents.Add(ref oNull, ref oNull, ref oNull, ref oNull);
Table tbl = doc.Tables.Add(doc.Range(ref start, ref end), 10, 2, ref oNull, ref oNull);
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
tbl.Rows[i + 1].Cells[1].Range.Text = "Run# :" + ((int)i + 1).ToString();
tbl.Rows[i + 1].Cells[2].Range.Text = "Value :" + rnd.Next(0, 2000).ToString();
}
object oFalse = false;
app.Visible = true;
try
{
doc.Save();
}
catch (Exception ex)
{
if (ex.Message.ToLower().IndexOf("command failed") == -1)
{
throw ex;
}
}
app.Quit(ref oFalse, ref oFalse, ref oFalse);
What we done is to create a new document, a new table, and fill the table with random values.
Seems very easy but not quite sure how well document :).
Етикети:
C#,
Software Development,
Windows Forms
Nov 25, 2008
ASP.NET ProgressBar to show percentage
| I did this today during my lunch time break: (sorry about the bad quality but couldn't figure out how to ask YouTube not to resize |
It is ugly and unoptimized yet but I hope I will be able to refactor it soon and make it as a user control.
Another post to follow when this happens.
Nov 20, 2008
Cannot have multiple items selected in a DropDownList. Why is this ASP.NET / C# exception rised?
This is a common exception. It happens when you do something like:
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
li1.Selected = true;
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
li2.Selected = true;
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
Let's explain what is going on.
We created a ListItem, set its name and value and make it to be selected.
Then we created another ListItem, again set its value and name and set it to be selected.
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
li1.Selected = true;
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
li2.Selected = true;
lb1.SelectionMode = ListSelectionMode.Multiple;
lb1.Items.Add(li1);
lb1.Items.Add(li2);
We will run with no errors and both items will be selected. The problem with the DropDownList control is that shares almost the same functionality with the ListBox and for that reason they both inherit the same base objects.
But the DropDownList doesn't have the ability to display multiple items so ASP.NET team decided to throw an exception when such situation occurs.
You can use DropdownList.SelectedIndex or DropdownList.SelectedValue properties to mark selected item in a safe manner. So if in the firs example we wanted to select the item with id2 we can use the following code:
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
ddTest.SelectedValue = "id2";
I commonly use this as in most cases I know which value should I select but don't know which index it has.
Now, there is a situation in which you may want to select by index and this in my imagination is the following situation:
Imagine you have the above DropDownList but you want it to be optional. This means that you need to have an item with empty value or value that means "null" to you. Imagine that this value is already inserted in the DropDownList. You know it will always be the first item. Here is the snippet:
ListItem liNull = new ListItem();
liNull.Text = "-- Please Select an Item --";
liNull.Value = "";
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
// Someone selected item in the code:
ddTest.SelectedValue = "id1";
ddTest.Items.Add(liNull);
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
// We will select the first one which is "-- Please Select an Item --"
ddTest.SelectedIndex = 0;
But in such cases we can take advantage of the default DropDownList behaviour (the DropDownList will select the first item if there are no items selected explicitly). So if you need the first item selected you can simply clear the selection and ASP.NET will select it for you. But how?
By using the ClearSelection() method. It does what it says - it clears the selected item.
Here is the last snippet:
ListItem liNull = new ListItem();
liNull.Text = "-- Please Select an Item --";
liNull.Value = "";
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
// Someone selected item in the code:
ddTest.SelectedValue = "id1";
ddTest.Items.Add(liNull);
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
// We will be sure that everything is clean
// and will expect ASP.NET to select the first item
// by default:
ddTest.ClearSelection();
from work for about a month and need to do some extra work to catch my collegues), some ongoing projects I was stupid enough to take and so on...
However, I've found some time to start two new blogs which I consider more as experiment than real blogs:
Sql Exceptions
and :
.NET Exceptions
Both blogs currently contain about 40 posts with Sql and .NET Exceptions which you may find helpful after time. I am saying after time as I plan to automate those blogs so the information there is posted by software and not by myself.
Also users are welcome to post comments. Soon I will publish special format of posts which you can use in order to give your opinion on specific exception and this exception will be automatically published in the post.
Unfortunatelly there is a limitation - Blogger allow me to only publish about 40 posts daily so I wasn't able to create posts about all the exceptions in SQL and .NET Framework.
I will batch post each day (may miss some of the days like weekends for example ;) so in few weeks both blogs will be up to date.
awesome, you pointed me in the right direction." or "Dude, you saved me a lot of hours" and so on. There are a lot of things I would like to learn about asp.net and I think this forum is a great place to start. Just post a question and in most cases in few minutes some of the experts there will answer you.
Here is a screenshot I will keep close to my heart :D
/> b.Save(@"filename.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
You will also need to add the PrintWindow function (it is windows API function):
[DllImport("user32.dll")]
private static extern bool PrintWindow(IntPtr hwnd, IntPtr hdcBlt,
uint nFlags);
Not that hard, but not well documented. If you don't know how to get a pointer to a running Internet Explorer class, you can do the following:
1. Add reference to ShDocVw (it is in the COM tab and it should be named "Microsoft Objects Automation library" or something like this)
2. Add the following code:
SHDocVw.ShellWindowsClass windows = new ShellWindowsClass();
foreach (SHDocVw.InternetExplorer explorer in windows)
{
if (explorer.LocationURL == string.Empty)
{
// this is our guy!
ie = explorer;
}
}
NOTE: please be sure to use your own if statement. This one will get an instance to the last found Internet explorer which has an empty string as Location.
Happy C# programming!
the timeOutID (required to clear the timeout).
We have a target function which we want to call in let's say 2 seconds. But we want to pass some parameters to it (for example the sender of the event).
What we do is to create another function (myButtonToTimeOut) in the function body we call the setTimeOut, and pass as parameter a new function which contains our desired call:
function(){onTimeOut(id);}
Voilla. The other things (such as the global variable t) are here only to make this thing work. If you want to test this snippet simply add it to the head of an html page, add few buttons and set their onclick as this one:
onclick="myButtonToTimeOut(this.id);"
When you click on the button, after two seconds you should receive an alert showing you which button was pressed.
Please note: As the code was intended to only show you how to call setTimeOut with parameters, it may have some bugs in it (for example I am not quite sure what will happen if you click two times quickly on the button, or on two diferrent buttons, as t is holding the timeOutId it may get overriden and as a result, some of the alerts may continue to appear).
Have a nice programming!
>
This is the variable which is declared automatically when you create new instance. I suggest you to put it into the exec method of the AddIn:
public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
{
_applicationObject.Debugger.Go(false);
SHDocVw.ShellWindowsClass windows = new ShellWindowsClass();
foreach (SHDocVw.InternetExplorer explorer in windows)
{
if (explorer.LocationURL == string.Empty)
{
// this is our guy!
ie = explorer;
}
}
}
You also need to add reference to ShDocVw (Microsoft Shell And Automation Library).
Enjoy!
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
li1.Selected = true;
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
li2.Selected = true;
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
Let's explain what is going on.
We created a ListItem, set its name and value and make it to be selected.
Then we created another ListItem, again set its value and name and set it to be selected.
When we add both ListItems the DropDownList confuses about which one should be selected and throws an exception. But why? Because there is another control - ListBox, which allows multiple selection. If we create a ListBox on the form and add the following code in the code behind: |
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
li1.Selected = true;
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
li2.Selected = true;
lb1.SelectionMode = ListSelectionMode.Multiple;
lb1.Items.Add(li1);
lb1.Items.Add(li2);
We will run with no errors and both items will be selected. The problem with the DropDownList control is that shares almost the same functionality with the ListBox and for that reason they both inherit the same base objects.
But the DropDownList doesn't have the ability to display multiple items so ASP.NET team decided to throw an exception when such situation occurs.
This can be confusing in more complicated code, but it is definatelly better than selecting the last item which was marked as "selected" or the first one or something like that. Luckily there are safer ways to select an item without having to worry if there is already selected item or not. |
You can use DropdownList.SelectedIndex or DropdownList.SelectedValue properties to mark selected item in a safe manner. So if in the firs example we wanted to select the item with id2 we can use the following code:
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
ddTest.SelectedValue = "id2";
I commonly use this as in most cases I know which value should I select but don't know which index it has.
Now, there is a situation in which you may want to select by index and this in my imagination is the following situation:
Imagine you have the above DropDownList but you want it to be optional. This means that you need to have an item with empty value or value that means "null" to you. Imagine that this value is already inserted in the DropDownList. You know it will always be the first item. Here is the snippet:
ListItem liNull = new ListItem();
liNull.Text = "-- Please Select an Item --";
liNull.Value = "";
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
// Someone selected item in the code:
ddTest.SelectedValue = "id1";
ddTest.Items.Add(liNull);
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
// We will select the first one which is "-- Please Select an Item --"
ddTest.SelectedIndex = 0;
But in such cases we can take advantage of the default DropDownList behaviour (the DropDownList will select the first item if there are no items selected explicitly). So if you need the first item selected you can simply clear the selection and ASP.NET will select it for you. But how?
By using the ClearSelection() method. It does what it says - it clears the selected item.
Here is the last snippet:
ListItem liNull = new ListItem();
liNull.Text = "-- Please Select an Item --";
liNull.Value = "";
ListItem li1 = new ListItem();
li1.Text = "Item 1";
li1.Value = "id1";
ListItem li2 = new ListItem();
li2.Text = "Item 2";
li2.Value = "id2";
// Someone selected item in the code:
ddTest.SelectedValue = "id1";
ddTest.Items.Add(liNull);
ddTest.Items.Add(li1);
ddTest.Items.Add(li2);
// We will be sure that everything is clean
// and will expect ASP.NET to select the first item
// by default:
ddTest.ClearSelection();
Nov 14, 2008
Two new automated blogs
| I've been very busy this month. All the exams (for microsoft certification, in the faculty and so on), my extended work day (from 9 to 20 as I was absent |
However, I've found some time to start two new blogs which I consider more as experiment than real blogs:
Sql Exceptions
and :
.NET Exceptions
Both blogs currently contain about 40 posts with Sql and .NET Exceptions which you may find helpful after time. I am saying after time as I plan to automate those blogs so the information there is posted by software and not by myself.
Also users are welcome to post comments. Soon I will publish special format of posts which you can use in order to give your opinion on specific exception and this exception will be automatically published in the post.
Unfortunatelly there is a limitation - Blogger allow me to only publish about 40 posts daily so I wasn't able to create posts about all the exceptions in SQL and .NET Framework.
I will batch post each day (may miss some of the days like weekends for example ;) so in few weeks both blogs will be up to date.
Nov 5, 2008
On the asp.net official site for the very first time!
| Well, a lot of people don't consider showing someone on the official asp.net site a big deal. There is a box "Community recognition program" where the most active members as well as yesterday's most active members are shown. I had 102 points for the previous day so I appeared. It really isn't big deal, but I consider it a big start, because it gave me motivation to continue to contribute. It is not about the recognition. In asp.net site you can find a lot of friends also. It is great to help someone and then see something like : "Dude, you're |
Here is a screenshot I will keep close to my heart :D
Oct 27, 2008
C# - How to take a screenshot of Internet Explorer
| Asuming you have InternetExplorerClass instance, named ie, you can do the following to obtain screenshot: int screenWidth = ie.Width; int screenHeight = ie.Height; #region Get IE Bitmap Bitmap b = new Bitmap(ie.Width, ie.Height); Graphics g = Graphics.FromImage(b); IntPtr hdc = g.GetHdc(); bool result = PrintWindow((IntPtr)ie.HWND, hdc, 0); g.ReleaseHdc(); g.Flush(); |
You will also need to add the PrintWindow function (it is windows API function):
[DllImport("user32.dll")]
private static extern bool PrintWindow(IntPtr hwnd, IntPtr hdcBlt,
uint nFlags);
Not that hard, but not well documented. If you don't know how to get a pointer to a running Internet Explorer class, you can do the following:
1. Add reference to ShDocVw (it is in the COM tab and it should be named "Microsoft Objects Automation library" or something like this)
2. Add the following code:
SHDocVw.ShellWindowsClass windows = new ShellWindowsClass();
foreach (SHDocVw.InternetExplorer explorer in windows)
{
if (explorer.LocationURL == string.Empty)
{
// this is our guy!
ie = explorer;
}
}
NOTE: please be sure to use your own if statement. This one will get an instance to the last found Internet explorer which has an empty string as Location.
Happy C# programming!
JavaScript Call SetTimeout or other function with parameters.
| I needed to do this few days ago. I struggled to find out how. Hope this will help to other guys in the same situation (it's so simple that you may never figure it out until someone tell you :D ): var t; function myButtonToTimeOut(id) { // We will call the onTimeOut function in a setTimeOut() // and will pass the id as a parameter: t = setTimeout(function(){onTimeOut(id);}, 2000); } function onTimeOut(id) { alert('The caller with ' + id + ' was clicked 2 seconds ago.'); clearTimeout(t); } what do we do here? Well, we have a global variable which will hold |
We have a target function which we want to call in let's say 2 seconds. But we want to pass some parameters to it (for example the sender of the event).
What we do is to create another function (myButtonToTimeOut) in the function body we call the setTimeOut, and pass as parameter a new function which contains our desired call:
function(){onTimeOut(id);}
Voilla. The other things (such as the global variable t) are here only to make this thing work. If you want to test this snippet simply add it to the head of an html page, add few buttons and set their onclick as this one:
onclick="myButtonToTimeOut(this.id);"
When you click on the button, after two seconds you should receive an alert showing you which button was pressed.
Please note: As the code was intended to only show you how to call setTimeOut with parameters, it may have some bugs in it (for example I am not quite sure what will happen if you click two times quickly on the button, or on two diferrent buttons, as t is holding the timeOutId it may get overriden and as a result, some of the alerts may continue to appear).
Have a nice programming!
Oct 24, 2008
Nice game for software developers :)
| Some of you may remember the CRobots game. It is a game in which you program your own robot (in C) and put it to fight against other robots. This game is available in 3D variant and I think it may be very userful to improve your programming skills. Try it from here: http://antru.ru/crobots3d/ I also built my own robot, I named it Kamikadze because all it does is to spin around and shout itself :D Documentation can be found here: http://crobots.deepthought.it/html/manual.html#8 Happy playing! |
Oct 21, 2008
C# AddIn - Start Debugging and get the running Internet Explorer instance.
| I needed to do this (actually I wanted). I was curious if you can obtain an instance of a Internet Explorer which was started in debugging session. Here is a snipet to do this: _applicationObject.Debugger.Go(false); SHDocVw.ShellWindowsClass windows = new ShellWindowsClass(); foreach (SHDocVw.InternetExplorer explorer in windows) { if (explorer.LocationURL == string.Empty) { // this is our guy! ie = explorer; } } Note : this snipet should be added somewhere where you have access to the _applicationObject. |
public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
{
_applicationObject.Debugger.Go(false);
SHDocVw.ShellWindowsClass windows = new ShellWindowsClass();
foreach (SHDocVw.InternetExplorer explorer in windows)
{
if (explorer.LocationURL == string.Empty)
{
// this is our guy!
ie = explorer;
}
}
}
You also need to add reference to ShDocVw (Microsoft Shell And Automation Library).
Enjoy!
Етикети:
.NET,
.NET C# technologies,
C#,
Development,
ShDocVw,
Software Development,
Visual Studio
Subscribe to:
Posts (Atom)