Stephen W. Cocks - America Online Stephen105 - Compuserve 71604,163 These Visual Basic files are in the PUBLIC DOMAIN. They were compressed using PKWARE's pkzip.exe version 2.04g (registered). The files included are: drawfram.frm drawfram.mak readme.txt This program was written using Visual Basic 3.0 Professional Edition, but DOES NOT REQUIRE THE PROFESSIONAL EDITION. DrawFrameOn (the original) can be found in Richard Mansfield's book, "The Visual Guide to Visual Basic For Windows" on page 514, under LINE METHOD. I endorse Mr. Mansfield's book. Unlike other books that are organized Alphabetically by Visual Basic's Controls, Events, Functions, Methods, Properties, etc., this book punctuates its narrative with little applets that are more than just useful, they are thought provoking. Of the twelve manuals I have on VB, this one is the most dog eared. When I tried to make Mr. Mansfield's DrawFrameOn put a frame adjacent to a control (per his instructions), it left a one pixel gap on the right side and on the bottom. This isn't noticeable when the frame is more than (lets say) ten pixels away from the control, but it certainly won't do when it is supposed to abut the control. When you want to find the right-most position occupied by a control where you are given its left-most position and its width, you must add the left postion and the width and subtract one. right-most position = (Control.Left + Control.Width) - 1 For example: Your command button's Left property is 3 and its width is 5, so it occupies positions 3, 4, 5, 6, 7. To find its right most position, you add its Left, 3, and Width, 5, and subtract 1. 7 = 3 + 5 - 1 I also added colors to the large box Mr. Mansfield suggests drawing before adding the lines. When you draw the larger frames first and make the color of the smallest frame 7, or Light Gray, you can get the effect of filling frames with color. Some combinations of colors and frame styles "don't work" in that they aren't pleasing to the eye. DrawFrameOn (TopLeftControl As Control, BottomRightControl As Control, Style As String, FrameOffset As Integer, Color As Integer) Pass DrawFrameOn the names of the controls, "Raised" or "Inset", how many pixels you want from the controls border to the frame, and the color expressed as the integer used by QBColor(n). The TWIPS = Screen.TwipsPerPixelX instruction gathers an approximation of the twips per pixel (or so the manuals say) for your monitor. On my 15" SVGA monitor that measurement comes out 15 twips per pixel. This form has OPTION EXPICIT set so you must declare your variables. You may draw as many frames as you like varying their distance from each other and the colors inbetween to create the effect of ornate picture frames. I've found the dark colors are especially good for this kind of work. Stephen W. Cocks Compuserve 71604,163