Genii Weblog
Setting graphic borders for Duffbert
Thu 10 Feb 2005, 05:37 PM
Tweetby Ben Langhinrichs
In response to my search for simple API extensions, Tom Duff responded:
I don't know if this is what you had in mind, but here's my "wish"...
When I import a graphic image into a Notes document, I like to use a two-lined border with a weight of 4 and a drop shadow for 12 weight. The "problem" is that the picture property box doesn't have a memory, so each new picture I load involves getting the picture property box, clicking on the second tab, selecting my double-edge border, selecting the drop shadow, and upping the border weight from 1 to 4.
What I'd love to do is have an @Function I could attach to a Smart Icon that allows me to feed in those parameters and set them when I have a picture object selected...I made some comment about send keys, and Alan Bell was off and running with an extraordinary, if really unwise as he admits, script to do just this: Don't try this at home, silly stuff with sendkeys.
Kudos to Alan, but it still doesn't address Tom's need fully, because he wanted an @Function in a Smart Icon (although I think their called Tool Tips or something now, Tom). So, I got to thinking. How would I do this with the @Midas Formulas. As I often do, I thought first of how I would do this with the Midas Rich Text LSX, as it seems a bit more intuitive still. The logic, which depends on stuff in Version 3.50, so you can't try this at home yet, is:
Set rtchunk = rtitem.DefineChunk("Graphic 1")
Call rtchunk.SetTargetProperties("Graphic", "BorderEffects='Drop_Shadow' BorderThickness='4' BorderStyle='Double' BorderColor='Black' ")
Call rtitem.Save()
So, to do the same thing in @Midas Formulas just takes a bit of jiggering, and the result is:
@DbCommand("Midas":"NoCache"; "SetTargetProperties"; ""; @DocumentUniqueID; "Body":"Graphic 1"; "Graphic"; "BorderEffects='Drop_Shadow' BorderThickness='4' BorderStyle='Double'")
which will work in a Smart Icon or Tool Tip or whatever. You might want to expand it a bit to say:
@Command(FileSave);
@DbCommand("Midas":"NoCache"; "SetTargetProperties"; ""; @DocumentUniqueID; "Body":"Graphic 1"; "Graphic"; "BorderEffects='Drop_Shadow' BorderThickness='4' BorderStyle='Double'");
@Command(EditDocument; "0");
So, you have a choice of LotusScript using Windows API SendKeys courtesy of Alan, formula language courtesy of the @Midas Formulas, or LotusScript using Midas (see above) or even C++ using the Midas Rich Text C++ API, which would just be:
rtchunk_ = rtitem_->DefineChunk("Graphic 1");
sError = rtchunk_->SetTargetProperties("Graphic", "BorderEffects='Drop_Shadow' BorderThickness='4' BorderStyle='Double' BorderColor='Black' ");
if (sError == NOERROR)
rtitem_->Save();
You choose. I still have to finish my samples for my conference, but this has at least given me some ideas.
Copyright © 2005 Genii Software Ltd.
What has been said:
290.1. Duffbert (02/10/2005 06:04 PM)
Well, this is just *all* too cool! I think I'm gonna hafta purchase me one of those there Midas licenses for my 'puter so I can do this *and* Alan's trick!