[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart [VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
Go Back  Xtreme Visual Basic Talk > > > [VB2005]add scrollbar to chart


Reply
 
Thread Tools Display Modes
  #1  
Old 07-07-2008, 09:50 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default [VB2005]add scrollbar to chart


Does anyone know how to add scrollbar to chart to enable scrolling chart in excel using VB 2005?

I tried inserting Forms scrollbar and key in linked cell and all so that I can get the macro for my VB code. But I cant seem to get the chart to scroll.


Thanks
Reply With Quote
  #2  
Old 07-08-2008, 08:11 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

I have successfully add in scrollbar manually and it was able to scroll the chart in new chart sheet and I recorded the VBA code.

However, there's these few lines which I have problems converting:

Code:
ActiveSheet.ScrollBars.Add(1428928.5, 224788.5, 3806190, 223698).Select
    Selection.ShapeRange.IncrementLeft -0.02
    Selection.ShapeRange.IncrementTop 5.31
    Selection.ShapeRange.ScaleWidth 1.27, msoFalse, msoScaleFromBottomRight
    Selection.ShapeRange.ScaleWidth 1.03, msoFalse, msoScaleFromTopLeft
    With Selection
        .Value = 0
        .Min = 0
        .Max = 23
        .SmallChange = 1
        .LargeChange = 10
        .LinkedCell = "AnimalRackTrial!$K$31"
        .Display3DShading = True
    End With

Whats the code for form scrollbar?
Code:
ActiveSheet.ScrollBars.Add(1428928.5, 224788.5, 3806190, 223698).Select
and I got problem converting this line:
Code:
Selection.ShapeRange.IncrementLeft -0.02
    Selection.ShapeRange.IncrementTop 5.31
    Selection.ShapeRange.ScaleWidth 1.27, msoFalse, msoScaleFromBottomRight
    Selection.ShapeRange.ScaleWidth 1.03, msoFalse, msoScaleFromTopLeft
I have to make sure that the scrollbar always stay on top of the chart and the same width as the graph.


And for these:
Code:
 With Selection
        .Value = 0
        .Min = 0
        .Max = 23
        .SmallChange = 1
        .LargeChange = 10
        .LinkedCell = "AnimalRackTrial!$K$31"
        .Display3DShading = True
    End With
I tried :

Code:
objExcelC.ScrollBars.Add(1428928.5, 224788.5, 3806190, 223698)

With objExcelC.ScrollBars.Add(1428928.5, 224788.5, 3806190, 223698)
            .Value = 0
            .Min = 0
            .Max = 23
            .SmallChange = 1
            .LargeChange = 10
            .LinkedCell = "AnimalRackTrial!$K$31"
            .Display3DShading = True
        End With
but there's no scrollbar added in, even if there's no error.

Help appreciated

Last edited by bellaelysium; 07-08-2008 at 09:08 PM.
Reply With Quote
  #3  
Old 07-09-2008, 03:31 AM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

I also tried inserting OLEobject

Code:
Dim MyObject As OLEObject
        MyObject = objExcelC.OLEObjects.Add(ClassType:="Forms.ScrollBar.1")

        With MyObject 
            .Value = 0
            .Min = 0
            .Max = 23
            .SmallChange = 1
            .LargeChange = 10
            .LinkedCell = "AnimalRackTrial!$K$31"
            .Display3DShading = True
        End With
But theres some error..
Reply With Quote
  #4  
Old 07-09-2008, 08:19 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Bellaelysium,

I don't think you can add a scroll bar to a chart. You could put it next to the chart, or even on top of the chart, but you can't add it to the chart object itself.

I'm not sure what you want to do here...

Is your chart so large that you can only view part of it on the screen at once, and hence need a scrollbar?

Or do you want the data that is being displayed in the chart to change according to the scrollbar position? If this is what you want, then you could work with the scrollbar's linked cells and have worksheet functions change the chart data according to the linked cell value.

But I would not try to add a scrollbar programmatically. I think it's too hard. I would just manually create the chart and scrollbar as you want it to look, save the workbook, and then have other code (as needed) execute, but using the previously-saved workbook as the starting point.

(This is how I would do it anyway.)

I hope this helps, Bellaelysium...
Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #5  
Old 07-10-2008, 09:18 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

Hi mike,

I apologize for my bad english. Actually, I want the scrollbar place below the chart, not in the chart itself.

Quote:
Or do you want the data that is being displayed in the chart to change according to the scrollbar position? If this is what you want, then you could work with the scrollbar's linked cells and have worksheet functions change the chart data according to the linked cell value.
Yes. I did the linked cell and all and able to create the scrollbar manually. (see first post).

If it is hard to create it programmatically, about ur suggestion:

Quote:
I would just manually create the chart and scrollbar as you want it to look, save the workbook, and then have other code (as needed) execute, but using the previously-saved workbook as the starting point.
I have thought of that.. which is using excel macro and run it from VB.net itself (is that what you mean also?)

But my main concern is I am not sure whether the excel macro can be run on other workbook rather than the workbook that I create scrollbar manually?

FYI: there are different textfiles in SD card. All I need to do is to multiselect the files and then open using Excel, and the chart + scrollbar will be able to generate based on the VB code I program.

I hope you get the clear picture
Reply With Quote
  #6  
Old 07-12-2008, 07:45 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

This would be easier using VBA or Visual Studio Tools for Office (VSTO), I think.

Using .NET without VSTO you will have to find the control on the worksheet programmatically and then hook to the event programmatically. You can still place the control at design-time thougth and save the workbook.

However, if you used VBA or VSTO, you could not only place the scrollbar and chart where you want, but you could also set up the event handlers and hooked them up at design time. At runtime the handlers would simply fire automatically, without your having to do any coding at startup to hook the event handlers...

Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #7  
Old 07-13-2008, 07:59 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

hi mike,

thanks

so if I use VSTO in my VB.net application, it would be easier? (sorry..I am having a blur concept here regarding these).

Do you have any recommended tutorial on that?



Last edited by bellaelysium; 07-14-2008 at 04:09 AM.
Reply With Quote
  #8  
Old 07-14-2008, 05:25 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Hey bellaelysium,

VSTO is a whole new complicated environment though... It is worth learning for the future, but it will be a big investment in your time, and will not be worth it simply to get your scrollbar working.

A better idea than the advice I gave above would be to use a scrollbar from the 'Forms Controls'. Once you place it on your spreadsheet, right-click on it and choose "Format Control...", then go to the "Control" tab and you will be able to change the minimum and maximum values, and, most importantly, set the 'Cell link' to the cell that will receive the value for the new scrollbar setting.

I would then use worksheet functions that reference the 'Cell link' cell and your data to change the values they return, which in turn is referenced by your chart. That way, as a scrollbar is moved by the user, the 'Cell link' cell value changes, all the worksheet functions recalculate, and the chart data updates. Make sense?

This is definitely the way I would do it, because you can get it all working right at design time. If you need more flexibility than this, you can trap the Worksheet.Change event, which will fire when the 'Cell link' cell value changes.

-- Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #9  
Old 07-14-2008, 10:15 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

hi mike,

thanks.

As I mentioned earlier, I have already create the scrollbar and able to scroll the chart manually in excel.

But the whole idea is to record its macro so that I can put it in my code.

I am creating the application so that whenever the user want to open the file, the chart is already created with the scrolling available (if data range too long).

So, it is not meant for me to use but for the company (which my project collaboration with) to use it.


Unless I am able to run macro application from VB 2005 itself?

I really hope there's a possible solution for this.
Reply With Quote
  #10  
Old 07-15-2008, 06:53 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Hi Ballaelysium,

The scrollbar changing the 'Cell Link' cell value is sufficient to have the chart change its values using worksheet functions alone...

I am suggesting that you have the chart and scrollbar already created manually at design time. At run-time, your code only needs to open the workbook.

If you wish to actually create the chart programmatically, then you can still do so, just be sure that the data range that the chart is pulling in from his links to the cells that are being controlled by the scrollbar that is placed on a spreadsheet.

If you wish to create the scrollbar itself programmatically, you can also do so, just be sure to set the 'LinkedCell' property to the correct location. (The ActiveX version of the ScrollBar might be easier than the 'Forms' ScrollBar when creating it programmatically, so you may have to experiment a little.)

Still, my preference, by far, would be to create the scrollbar and the chart manually, get it fully functioning, and then save it. At run time, your code should only have to (1) open the workbook, and (2) pull in the new data to the correct locations. Once you do this, the scrollbar in the chart will be already set in the right place -- no code required.

This is how I would do it...

Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #11  
Old 07-15-2008, 09:44 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

Quote:
Originally Posted by Mike_R View Post
Still, my preference, by far, would be to create the scrollbar and the chart manually, get it fully functioning, and then save it. At run time, your code should only have to (1) open the workbook, and (2) pull in the new data to the correct locations. Once you do this, the scrollbar in the chart will be already set in the right place -- no code required.

This is how I would do it...

Mike
I get what you mean.
As I mentioned, I have already manually create scrollbar and all and got the excel macro.

Based on your preference,

one question:If I save the code (excel macro), will I able to use that code in new workbook instead of the workbook I used to manually create the scrollbar? (this is due to because of my code where I open textfile and import to new workbook)

And is it possible to call the code from my VB 2005 itself?


And for ActiveX scrollbar, I did experiment way long time back and ActiveX scrollbar doesn't work well with the scrolling chart (doesnt scroll smoothly) as compared to Form scrollbar. So I resort to using Form scrollbar instead.

And yes, I did tried to do it programmatically. There's linked cell and all appear in the worksheet, but the scrollbar fail to appear on top of the chart (doesn't appear at all).

That's the part I am having problem with. But I am quite comfortable with ur preference also. Either way, I am okay as long as I can get the whole thing work! So I'm willing to try and experiment every method.



Pardon for my long question.


And thanks for your guidance ever since I have been here!.

Last edited by bellaelysium; 07-15-2008 at 09:54 PM.
Reply With Quote
  #12  
Old 07-16-2008, 07:03 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Hey bellaelysium,

Quote:
Originally Posted by bellaelysium
And yes, I did tried to do it programmatically. There's linked cell and all appear in the worksheet, but the scrollbar fail to appear on top of the chart (doesn't appear at all).
Yes, agreed, the 'Forms' controls often is your best bet (and I find easier to use most of the time).

Quote:
Originally Posted by bellaelysium
And yes, I did tried to do it programmatically. There's linked cell and all appear in the worksheet, but the scrollbar fail to appear on top of the chart (doesn't appear at all).
You might have to do this manually then and save the workbook. There are no events that can be handled by your code, anyway, when using the 'Forms' controls, so creating it programmatically does not help you. The only code that can be triggered when the scrollbars changed is via the OnAction macro, which is a string holding the name of a VBA macro.

Therefore, I would create the chart and scrollbar manually, and then assign the OnAction macro to the scrollbar.

Quote:
Originally Posted by bellaelysium
And is it possible to call the code from my VB 2005 itself?
Yes, for example, to call your 'MyMacro()' method, you would use Application.Run("MyMacro"). However, in this case, you need code to fire when the scrollbar is manipulated by the user. And since you are using the 'Forms' scrollbar, you really have no choice but to use VBA code to handle this event. Your VBA code, however, could then call .NET code, if you created a .NET assembly that exposed itself to COM via attributes.

If you want to use controls on the worksheet using .NET code, you might want to look into Visual Studio Tools for Office (VSTO). Keep in mind that it's a new environment and has a learning curve, but it is a very powerful system that allows you to use .NET Controls on the surface of your worksheet. It can only be used for Excel 2003 and Excel 2007, however, so this also might be too limiting... but something to keep in mind.

Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #13  
Old 07-16-2008, 08:46 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

I am using Excel 2003 . Guess i got to research more about it.

One question reagrding about Application.Run("MyMacro"), can it be applied for any work book I open?

How do I save the macro code separately so that I can use it to run on any workbook?

And is all those Application.Run("MyMacro") called VSTO?
Reply With Quote
  #14  
Old 07-17-2008, 12:00 PM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Application.Run() is used to call VBA macros by name. So you must open the workbook that has the macro, and then call it via Applicaition.Run(). This is by far the easiest way for you to control VBA code from .NET. However, this approach does not enable you to handle events from a 'Forms' control which you are using. Only VBA code can be triggered from a 'Forms' control, I'm afraid. So your VBA code could call .NET code, but not the other way around.

Another approach would be to use an ActiveX control. The tricky part here is that you could not bind to the control using standard early-binding. You would have to use late binding to bind the ActiveX controls events, and using late-bound event binding is pretty advanced, I'm afraid.

VSTO is an advanced environment that allows you to use .NET controls on the Excel worksheet. I was suggesting thit b/c you are doing a lot of controls manipulation from .NET and trying to do so using VBA controls is tricky. That said, usign VSTO would have a fairly steep learning curve as well and can only be used for Excel 2003 and Excel 2007. If you are interested in VSTO, I would read up on it well first, and then experiment with it, before making the leap.

So there are no easy avenues for you here. I would, personally, set up the controls and chart manually instead of trying to position them dynamically. Then save the workbook, which can then be used as a sort of template.

Then use VBA code (as necessary) to react to the various events. .NET code can be be called from your VBA event handlers, and/or can be used at the top level to open your workbook, import the data as required, etc...

I hope this helps? Your project is pretty advanced!
Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #15  
Old 07-17-2008, 10:11 PM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

hi mike,
I will want to clarify ..

I still able to use my VB.net code which I have discuss with you in my previous threads right? Cos' im worry all my hard work will go up to smoke especially when my project deadline drawing near.

And you suggesting...saving the workbook as template ...and that require VSTO?

And then I have to call it in my VB.net?

I'm so sorry to trouble you. I just started learning VB.net around last june, so all these are pretty new to me and I am starting to get a grasp on it. I admit my project kinda hard .. but Im surviving and learning i guess

Last edited by bellaelysium; 07-18-2008 at 01:59 AM.
Reply With Quote
  #16  
Old 07-18-2008, 06:38 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

If you are on a tight deadline, then, no, I think that VSTO will be way too big of a time commitment and you'll miss your deadline for sure.

With any new technology, you must read about it first, learn it, and then experiment with it to learn it's strengths and weaknesses. But mostly one just needs to use it enough to be effective with it. Only *then* can you think about using it in a production setting.

I strongly suggest that you use the 'Forms' scrollbar with the result linked to a cell, and then use formulas driven by the scrollbar's LinkedCell to change the data shown in your chart. I would set it all up manually and then save the workbook, which is now your template. (Note: no code *AT ALL* required to achive this level of functionality.)

At this point your code can then open the workbook, populate the worksheet with data, copy the worksheet, etc. But the micro-management of setting up the chart and the scrollbar would be set up manually before hand.

This is how I would do it, anyway!

I hope this helps, Bellaelysium,
Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #17  
Old 07-18-2008, 08:24 AM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

Hi mike,

i think i might have misunderstood..partly my fault here regarding about my previous reply as you have been patiently repeating what you suggest!

I misunderstood the VSTO part. So i'll start again. As stated in my previous post, what I want to clarify is,

I have already set up form scrollbar and linked cell manually quite a long while back. So the graph is scrolling smoothly and all. So the thing left now is to combine this to my VB.net code I have done for opening and populating workbook.

So, it came to the part which you suggest is saving that workbook as template. So I need a little guidance here.

How do i actually save that workbook as a template, and then call it in my VB...(is that what you mean?).

Quote:
At this point your code can then open the workbook, populate the worksheet with data, copy the worksheet, etc.
are you referring "your code" to my VB.net code?

Cos I have already done the code (in VB 2005) on opening workbook, populating with data , etc. So how do I continue from there to call the workbook template? (I hope I dun misunderstood you here)


However, if you are referring to VBA code itself, then I might be stumped, since I am asked to use VB 2005 to do user interface as well.


Once again, thanks for your patience!
Reply With Quote
  #18  
Old 07-18-2008, 11:15 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

Hey Bellaelysium,


Quote:
Originally Posted by bellaelysium View Post
I have already set up form scrollbar and linked cell manually quite a long while back. So the graph is scrolling smoothly and all. So the thing left now is to combine this to my VB.net code I have done for opening and populating workbook.
Ok! I did not realize, I thought that you were still stuck on this part. This is good.

Quote:
Originally Posted by bellaelysium View Post
So, it came to the part which you suggest is saving that workbook as template. So I need a little guidance here. How do i actually save that workbook as a template, and then call it in my VB...(is that what you mean?)... Cos I have already done the code (in VB 2005) on opening workbook, populating with data , etc. So how do I continue from there to call the workbook template? (I hope I dun misunderstood you here)
It sounds like to me that you've got it all down pat.

This is *precisely* what I was suggesting... I had thought that you were stuck. You don't need to make the workbook a "template" if you are only using one instance of it, but if you want to open the Workbook, make changes, and then allow the user to save it (or have your code save it) without overwriting the original workbook, you can open the Workbook as a template by making use of the 'Template' parameter within the 'Workbooks.Add' method. For example:

Code:
Dim xlWB As Excel.Workbook
xlWB = xlApp.Workbooks.Add(Template:="MyWorkbook.xls")
Technically, a template should be saved as a .XLT file, but using an .XLS (or .XLSX or .XLXM if using Excel 2007) works exactly the same.

I hope this makes sense?

Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
  #19  
Old 07-20-2008, 01:40 AM
bellaelysium bellaelysium is offline
Regular
 
Join Date: Jun 2008
Posts: 91
Default

yes, it does make sense.

I have try adding the code:
Code:
WBook = WExcel.Workbooks.Add(Template:="FinalAMR.xls")
However, it said that it could not find the location. I place the file somewhere inside the the folder where I save my VB project. So where should I place the file?
Reply With Quote
  #20  
Old 07-20-2008, 08:08 AM
Mike Rosenblum's Avatar
Mike Rosenblum Mike Rosenblum is offline
Microsoft Excel MVP

Forum Leader
* Guru *
 
Join Date: Jul 2003
Location: New York, NY, USA
Posts: 7,848
Default

That's up to you, just provide the full path to the workbook when you use the Workbooks.Add() method. If you don't provide the full path, it probably defaults to the current directory, which I would not rely upon because it can change.

So always provide the full path to be safe.

Mike
__________________
My Articles:
| Excel from .NET | Excel RibbonX using VBA | Excel from VB6 | CVErr in .NET | MVP |
Avatar by Lebb
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump

Advertisement:





Free Publications
The ASP.NET 2.0 Anthology
101 Essential Tips, Tricks & Hacks - Free 156 Page Preview. Learn the most practical features and best approaches for ASP.NET.
subscribe
Programmers Heaven C# School Book -Free 338 Page eBook
The Programmers Heaven C# School book covers the .NET framework and the C# language.
subscribe
Build Your Own ASP.NET 3.5 Web Site Using C# & VB, 3rd Edition - Free 219 Page Preview!
This comprehensive step-by-step guide will help get your database-driven ASP.NET web site up and running in no time..
subscribe
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart [VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart [VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
 
[VB2005]add scrollbar to chart
[VB2005]add scrollbar to chart
 
-->