<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6007986338235484906</id><updated>2011-04-21T20:57:03.472-07:00</updated><category term='.DAFTAR TIPS DAN TRIKS  VB'/><category term='Working with Crystal Reports'/><category term='9.1.  Aplikasi ADO  Code'/><category term='MS Access'/><category term='Download'/><category term='3. Crystal Report And Visual Basic'/><category term='Debian'/><category term='Compile VB Programs'/><category term='Could Not Execute Link.exe'/><category term='VISUAL BASIC'/><category term='Recovery'/><category term='Database ADO Code'/><category term='NOD32'/><category term='9. Null In Access Fields'/><category term='pcmav'/><category term='Tips  and Triks Array'/><category term='.Antivirus Update'/><category term='Tips and Triks Visual Basics (VB)'/><category term='5. Open Secure DB'/><category term='UBUNTU'/><category term='Download UBUNTU'/><category term='2. Daftar Situs Visual Basic'/><category term='antivirus'/><category term='1. Daftar Isi'/><category term='Code snippets'/><category term='Opensource'/><category term='Norton Anti Virus'/><category term='7. Speed Up DB Access'/><category term='Software'/><category term='8. Export To Any Type DB'/><category term='Opensuse'/><category term='6. Scroll Form'/><category term='4.  Working with Crystal Reports: Use CR with MsAccess and Oracle'/><category term='Update Antivirus'/><title type='text'>Learn Visual Basics and Update Antivirus</title><subtitle type='html'>Learn Visual Basics and Update Antivirus</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2996304842800002154</id><published>2007-11-06T06:19:00.000-08:00</published><updated>2007-11-06T06:20:28.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.DAFTAR TIPS DAN TRIKS  VB'/><title type='text'>Tips and Triks Visual Basics (VB)</title><content type='html'>&lt;ul&gt;&lt;li&gt;These tips &amp;amp; Tricks are donated by Microsoft.nl They provides examples of how you can  solve a particulair problem with Visual Basic. They are free to use and free to re-publish.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-63-preventing-list-box-from.html"&gt; Tip 63: Preventing List Box from Redrawing (Refreshing)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-64-changing-case-of-text-entered-in.html"&gt;Tip 64: Changing the Case of Text Entered in a Text Box Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-65-separating-path-into-individual.html"&gt;Tip 65: Separating a Path into Individual Fields&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-66-disabling-task-switching-with.html"&gt;Tip 66: Disabling Task-Switching with the SetSysModalWindow Function&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-67-returning-focus-to-specific.html"&gt;Tip 67: Returning Focus to a Specific Control After Executing WinHelp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-68-removing-duplicate-items-from.html"&gt;Tip 68: Removing Duplicate Items from List Box Controls&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-69-forcing-picture-control-to-use.html"&gt;Tip 69: Forcing a Picture Control to Use Only a Specific Font&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-70-creating-temporary-files.html"&gt;Tip 70: Creating Temporary Files&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-71-dragging-controls-at-run-time.html"&gt;Tip 71: Dragging Controls at Run Time&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-72-positioning-cursor-over-control.html"&gt;Tip 72: Positioning the Cursor over a Control That Receives Focus&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-73-creating-nested-directories.html"&gt;Tip 73: Creating Nested Directories&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-74-scrolling-through-two-list-box.html"&gt;Tip 74: Scrolling Through Two List Box Controls Simultaneously&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-75-invoking-menu-items-in-other.html"&gt;Tip 75: Invoking Menu Items in Other Applications with SendMessage&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-76-detecting-right-mouse-button.html"&gt;Tip 76: Detecting Right Mouse Button Clicks on List Box Controls&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-77-determining-amount-of-ram.html"&gt;Tip 77: Determining the Amount of RAM Installed in a Computer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-78-retrieving-names-of-all-printers.html"&gt;Tip 78: Retrieving the Names of All Printers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-79-closing-all-mdi-child-windows-at.html"&gt;Tip 79: Closing All MDI Child Windows at One Time&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-80-drawing-borders-around-controls.html"&gt;Tip 80: Drawing Borders Around Controls&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-81-repairing-and-compressing.html"&gt;Tip 81: Repairing and Compressing a Microsoft Access Database from&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-82-retrieving-multiple-filenames.html"&gt;Tip 82: Retrieving Multiple Filenames from the Common Dialog Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-83-listing-fields-and-associated.html"&gt;Tip 83: Listing Fields and Associated Properties for an Attached&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-84-creating-scrolling-credits.html"&gt;Tip 84: Creating a Scrolling "Credits" Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-85-hiding-mdi-child-forms-at-run.html"&gt;Tip 85: Hiding MDI Child Forms at Run Time&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-86-allowing-visual-basic.html"&gt;Tip 86: Allowing a Visual Basic Application to Accept Drag-and-Drop&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/07/tip-87-sending-output-to-printer-in-any.html"&gt;Tip 87: Sending Output to the Printer in Any Order&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-88-shrinking-icons-down-to-size_06.html"&gt;Tip 88: Shrinking Icons Down to Size&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-89-invoking-microsoft-word-page.html"&gt;Tip 89: Invoking the Microsoft Word Page Setup Dialog Box&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-90-adding-tooltips-to-visual-basic.html"&gt;Tip 90: Adding ToolTips to Visual Basic applications&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-91-determining-if-form-is-loaded.html"&gt;Tip 91: Determining If a Form Is Loaded&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-92-using-shell-statement-to-execute.html"&gt;Tip 92: Using the Shell Statement to Execute MS-DOS Programs&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-93-retrieving-names-of-installed.html"&gt;Tip 93: Retrieving the Names of Installed Printers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-94-using-drag-and-drop-on-multiple.html"&gt;Tip 94: Using Drag-and-Drop on Multiple items in a List Box Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-95-deleting-all-records-from-every.html"&gt;Tip 95: Deleting All Records from Every Table in a Microsoft Access Database&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-96-centering-form-over-another-form.html"&gt;Tip 96: Centering a Form over Another Form&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-97-creating-task-list.html"&gt;Tip 97: Creating a Task List&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-98-saving-windows-client-area-in.html"&gt;Tip 98: Saving a Window's Client Area in Bitmap Format&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-99-adding-three-dimensional-effects.html"&gt;Tip 99: Adding Three-Dimensional Effects to Visual Basic Forms&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-100-printing-form-multiple-times-on.html"&gt;Tip 100: Printing a Form Multiple Times on One Page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-101-using-built-in-windows-icons.html"&gt;Tip 101: Using the Built-In Windows Icons&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-102-modifying-child-windows-caption.html"&gt;Tip 102: Modifying a Child Window's Caption&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-103-preventing-ctrltab-and-ctrlf6.html"&gt;Tip 103: Preventing the CTRL+TAB and CTRL+F6 Key Combinations from Activating&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-104-creating-form-with-thin-title.html"&gt;Tip 104: Creating a Form with a Thin Title Bar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-105-removing-forms-title-bar.html"&gt;Tip 105: Removing a Form's Title Bar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-106-centering-text-vertically-in.html"&gt;Tip 106: Centering Text Vertically in a Text Box Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-107-detecting-double-click-events.html"&gt;Tip 107: Detecting Double-Click Events in Combo Box Controls&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-108-flashing-controls-to-get-users.html"&gt;Tip 108: Flashing Controls to Get the User's Attention&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-109-modifying-mdi-forms-border.html"&gt;Tip 109: Modifying an MDI Form's Border Style&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cakrido.blogspot.com/2007/11/tip-110-sending-click-event-to-command.html"&gt;Tip 110: Sending a Click Event to a Command Button Control&lt;/a&gt;&lt;br /&gt;Tip 111: Using Different Fonts in List Boxes That Have Tab Stops&lt;br /&gt;Tip 112: Preventing ListIndex Property from Triggering a Click Event&lt;br /&gt;Tip 113: Creating Transparent Forms&lt;br /&gt;Tip 114: Preventing a Portion of a Text Box from Scrolling&lt;br /&gt;Tip 115: Performing Smart Searches in Combo Box Controls&lt;br /&gt;Tip 116: Sending Data to the Printer in Landscape or Portrait Mode&lt;br /&gt;Tip 117: Changing a Menu's Shortcut Key at Run Time&lt;br /&gt;Tip 118: Converting a Word for Windows Document to RTF Format&lt;br /&gt;Tip 127: Stamping Files with the Current Date and Time&lt;br /&gt;Tip 128: Calculating the Beginning and Ending Date of a Month&lt;br /&gt;Tip 130: Using the Undo Feature with a Text Box Control&lt;br /&gt;Tip 131: Determining Whether a DLL File Is 16-Bit or 32-Bit&lt;br /&gt;Tip 132: Preventing Duplicate Items from Being Added to List Box Controls&lt;br /&gt;Tip 133: Using the SendMessage Function to Scroll Contents of Text Box =&lt;br /&gt;Tip 134: Creating Temporary Files&lt;br /&gt;Tip 135: Preventing a User from Editing the Contents of a Text Box =&lt;br /&gt;Tip 136: Using Keyboard and Mouse Shortcuts&lt;br /&gt;Tip 137: Removing Items from a Drive List Box Control&lt;br /&gt;Tip 138: Enabling and Disabling Scroll Bars in a List Box&lt;br /&gt;Tip 139: Retrieving a Disk's Volume Label&lt;br /&gt;Tip 140: Identifying CD-ROM Drives&lt;br /&gt;Tip 141: Searching a List Box Control for a Partial Match&lt;br /&gt;Tip 142: Determining Whether the Operating System Supports Long File&lt;br /&gt;Tip 143: Determining Whether the Windows 95 Taskbar Is Visible or=20&lt;br /&gt;Tip 144: Using Accelerator Keys with the TabStrip Control&lt;br /&gt;Tip 145: Inserting Tab Characters in the Rich-Text Box Control&lt;br /&gt;Tip 146: Retrieving the Printer Name from the Windows 95 Registry&lt;br /&gt;Tip 147: Retrieving Multiple File Names from the Common Dialog Control&lt;br /&gt;Tip 148: Using OLE Automation to Check Spelling&lt;br /&gt;Tip 149: Enumerating Disk Drives in Visual Basic 4.0&lt;br /&gt;Tip 150: Determining How Many Items Can Be Displayed in the List Box&lt;br /&gt;Tip 151: Finding Whole Words in a Text Box Control&lt;br /&gt;Tip 152: Determining the Status of Virtual Keys on the Keyboard&lt;br /&gt;Tip 155: Scrolling Text Horizontally in a Picture Box Control&lt;br /&gt;Tip 156: Adding New Icons to the Windows 95 Taskbar&lt;br /&gt;Tip 153: Searching PATH for Specific Files&lt;br /&gt;Tip 154: Terminating Windows 95 in Visual Basic&lt;br /&gt;Tip 159: Setting the Minimum Size of a Window&lt;br /&gt;Tip 160: Retrieving the Versions of MS-DOS and Windows&lt;br /&gt;Tip 161: Forcing the Common Dialog Control to Save Files to a Specific Disk Drive&lt;br /&gt;Tip 162: Determining Whether a File Exists&lt;br /&gt;Tip 163: Emulating a Double-Click Event in the Directory List Box Control&lt;br /&gt;Tip 164: Copying Files from One Directory to Another&lt;br /&gt;Tip 165: Locating CD-ROM Drives Installed on a Computer System&lt;br /&gt;Tip 166: Playing .WAV Files in Visual Basic&lt;br /&gt;Tip 167: Controlling the State of Virtual Keys on the Keyboard&lt;br /&gt;Tip 168: Using the ShellExecute Function to Print Files&lt;br /&gt;Tip 169: Setting the Position and Size of the Windows Help File&lt;br /&gt;Tip 170: Positioning the Mouse Pointer over a Specific Control&lt;br /&gt;Tip 171: Determining RGB Color Values&lt;br /&gt;Tip 172: Extracting the Directory Name and the Filename from the Path&lt;br /&gt;Tip 173: Launching Applications in Visual Basic&lt;br /&gt;Tip 174: Using the GetKeyState Function to Determine the State of&lt;br /&gt;Tip 175: Determining the Current Screen Resolution&lt;br /&gt;Tip 176: Sending Files to the Recycle Bin in Visual Basic 4.0&lt;br /&gt;Tip 177: Adding Drag-and-Drop Functionality to Your Application&lt;br /&gt;Tip 178: Enabling or Disabling Fast Task Switching in Windows&lt;br /&gt;Tip 179: Retrieving the Computer Name&lt;br /&gt;Tip 180: Performing Searches in a Combo Box Control with SendMessage&lt;br /&gt;Tip 182: Temporarily Enabling or Disabling Tabs on the TabStrip Control&lt;br /&gt;Tip 183: Changing the Color of the Grid Control's Cells&lt;br /&gt;Tip 184: Creating a List of Directories and Files in a List Box Control&lt;br /&gt;Tip 185: Determining the Number of Printable Lines Per Page on the Printer&lt;br /&gt;Tip 186: Formatting Text in a Rich Text Box Control in Visual Basic 4.0&lt;br /&gt;Tip 187: Determining Whether an Application Was Closed from the Control Menu&lt;br /&gt;Tip 188: Adding New Commands to the Control Menu&lt;br /&gt;Tip 189: Determining Which Screen and Printer Fonts Are Available&lt;br /&gt;Tip 190: Adding Hot Key Access to Your Visual Basic Application&lt;br /&gt;Tip 191: Shelling to Other Applications&lt;br /&gt;Tip 192: Selecting a New Desktop Wallpaper&lt;br /&gt;Tip 193: Launching Windows 95 Control Panel Applets in Visual Basic&lt;br /&gt;Tip 195: Modifying a File's Date and Time Stamp in Visual Basic 4.0&lt;br /&gt;Tip 196: Using the Common Dialog Control to Invoke Context-Sensitive Help&lt;br /&gt;Tip 197: Preventing a Right-Click from Displaying a Context Menu&lt;br /&gt;Tip 198: Retrieving File Information in Visual Basic 4.0&lt;br /&gt;Tip 199: Saving the Contents of the List Box Control to Disk in Visual&lt;br /&gt;Tip 200: Determining the Amount of Free Disk Space&lt;br /&gt;Tip 201: Retrieving the Task List in Windows 95&lt;br /&gt;Tip 202: Forcing a Combo Box Control to Drop Down with the ENTER Key&lt;br /&gt;Tip 203: Searching a Disk for Files Based on Filename and Path&lt;br /&gt;Tip 204: Changing the Screen Resolution at Run Time in Visual Basic 4.0&lt;br /&gt;Tip 205: Drawing a Gradient Background Pattern on Forms in Visual Basic 4.0&lt;br /&gt;Tip 206: Populating the Outline Control with a List of Directories and&lt;br /&gt;Tip 208: Changing the Displayed Icon in the About Dialog Box in&lt;br /&gt;Tip 209: Changing the Color of a Label Control When the Mouse Pointer Is&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2996304842800002154?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2996304842800002154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2996304842800002154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2996304842800002154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2996304842800002154'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tips-and-triks-visual-basics-vb.html' title='Tips and Triks Visual Basics (VB)'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7511906676240078715</id><published>2007-11-06T06:02:00.002-08:00</published><updated>2007-11-06T06:03:36.431-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 110: Sending a Click Event to a Command Button Control</title><content type='html'>Abstract&lt;br /&gt;In a Microsoft(r) Visual Basic(r) application, you can simulate a Click =&lt;br /&gt;event to&lt;br /&gt;a Command Button control. This article explains how to send a BN_CLICKED&lt;br /&gt;notification message to a control.&lt;br /&gt;&lt;br /&gt;Executing a BN_CLICKED Message&lt;br /&gt;A user who wants to carry out a command in your Microsoft(r) Visual =&lt;br /&gt;Basic(r)&lt;br /&gt;application usually clicks a Command Button control. The code in the =&lt;br /&gt;Command&lt;br /&gt;Button's Click event is then executed.&lt;br /&gt;&lt;br /&gt;There may be times, however, when you will want to initiate a Click =&lt;br /&gt;event from&lt;br /&gt;within your Visual Basic program. You can use the Microsoft Windows(r) =&lt;br /&gt;application&lt;br /&gt;programming interface (API) PostMessage function to send a BN_CLICKED =&lt;br /&gt;notification&lt;br /&gt;message to the parent of the Command Button control. This will call the =&lt;br /&gt;button's&lt;br /&gt;Click event.&lt;br /&gt;As you can see from the example program below, the GetDlgCtrlID function&lt;br /&gt;retrieves the Command Button's handle. Next, a call is made to the =&lt;br /&gt;GetParent&lt;br /&gt;function, which retrieves the handle of the window that the Command =&lt;br /&gt;Button resides&lt;br /&gt;on. (In other words, we must retrieve the parent window's handle.)&lt;br /&gt;&lt;br /&gt;The last step is to execute a PostMessage function. PostMessage sends a =&lt;br /&gt;BN_CLICKED&lt;br /&gt;notification message to the parent window, which then processes the =&lt;br /&gt;Click event&lt;br /&gt;for the Command Button.&lt;br /&gt;When you run  the example program below, the second Command Button's =&lt;br /&gt;Click event&lt;br /&gt;is executed. However, the second Command Button does not receive the =&lt;br /&gt;focusonly its&lt;br /&gt;code is executed.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to send a Command Button click to the Windows =&lt;br /&gt;operating&lt;br /&gt;system.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following Constant and Declare statements to the General =&lt;br /&gt;Declarations&lt;br /&gt;    section of Form1 (note that each Declare statement must be typed as =&lt;br /&gt;a single&lt;br /&gt;    line of text):&lt;br /&gt;&lt;br /&gt;Const BN_CLICKED =3D 0&lt;br /&gt;Const WM_COMMAND =3D &amp;H111&lt;br /&gt;Private Declare Function GetDlgCtrlID Lib "User" (ByVal hWnd As Integer) =&lt;br /&gt;As&lt;br /&gt;   Integer&lt;br /&gt;Private Declare Function GetParent Lib "User" (ByVal hWnd As Integer) As =&lt;br /&gt;Integer&lt;br /&gt;Private Declare Function PostMessage Lib "User" (ByVal hWnd As Integer, =&lt;br /&gt;ByVal&lt;br /&gt;   wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Long) As =&lt;br /&gt;Integer&lt;br /&gt;&lt;br /&gt; 3. Add a Command Button control to Form1. Command1 is created by =&lt;br /&gt;default. Set&lt;br /&gt;    its Caption property to "Send".&lt;br /&gt; 4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    ClickButton Command2.hWnd&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add a second Command Button control to Form1. Command2 is created by =&lt;br /&gt;default.&lt;br /&gt;    Set its Caption property to "Receive".&lt;br /&gt; 6. Add the following code to the Click event for Command2:&lt;br /&gt;&lt;br /&gt;Private Sub Command2_Click()&lt;br /&gt;    MsgBox "Command2 was CLICKED!"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 7. Create a new function called ClickButton. Add the following code to =&lt;br /&gt;this&lt;br /&gt;    function:&lt;br /&gt;&lt;br /&gt;Sub ClickButton(ByVal hWnd As Integer)&lt;br /&gt;    Dim Button As Integer&lt;br /&gt;    Dim ParentHwnd As Integer&lt;br /&gt;    Dim X As Integer&lt;br /&gt;=20&lt;br /&gt;    Button =3D GetDlgCtrlID(hWnd)&lt;br /&gt;    ParentHwnd =3D GetParent(hWnd)&lt;br /&gt;&lt;br /&gt;    X =3D PostMessage(ParentHwnd, WM_COMMAND, Button, BN_CLICKED * =&lt;br /&gt;&amp;H10000 + hWnd)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the example program by pressing F5. Click the Send Command Button. =&lt;br /&gt;The Click&lt;br /&gt;event for the second Command Button control is immediately executed (the =&lt;br /&gt;message&lt;br /&gt;box is displayed).&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"BN_CLICKED." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference Volume 3: Messages, =&lt;br /&gt;Structures)&lt;br /&gt;"GetDlgCtrl." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference Volume 2: Functions)&lt;br /&gt;PostMessage." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference Volume 2: Functions)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7511906676240078715?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7511906676240078715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7511906676240078715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7511906676240078715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7511906676240078715'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-110-sending-click-event-to-command.html' title='Tip 110: Sending a Click Event to a Command Button Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1597200009140503766</id><published>2007-11-06T06:02:00.001-08:00</published><updated>2007-11-06T06:02:51.394-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 109: Modifying an MDI Form's Border Style</title><content type='html'>Abstract&lt;br /&gt;This article explains how you can create a multiple-document interface =&lt;br /&gt;(MDI) form&lt;br /&gt;that has a fixed border in a Microsoft(r) Visual Basic(r) application.&lt;br /&gt;&lt;br /&gt;Retrieving and Setting a Form's BorderStyle&lt;br /&gt;Every form you create when designing a Microsoft(r) Visual Basic(r) =&lt;br /&gt;application&lt;br /&gt;can have one of four border styles. Just set the form's BorderStyle =&lt;br /&gt;property to&lt;br /&gt;one of the following styles:&lt;br /&gt;0 - None&lt;br /&gt;1 - Fixed Single&lt;br /&gt;2 - Sizeable&lt;br /&gt;3 - Fixed Double&lt;br /&gt;&lt;br /&gt;An MDI child form, however, does not have a BorderStyle property. But by =&lt;br /&gt;using the&lt;br /&gt;Microsoft Windows(r) GetWindowLong and SetWindowLong application =&lt;br /&gt;programming&lt;br /&gt;interface (API) functions , you can change an MDI form's border style to =&lt;br /&gt;a fixed&lt;br /&gt;border style.&lt;br /&gt;The GetWindowLong function retrieves information about the specified =&lt;br /&gt;window's&lt;br /&gt;style attributes and the SetWindowLong function modifies the specified =&lt;br /&gt;window's&lt;br /&gt;style attributes.&lt;br /&gt;&lt;br /&gt;GetWindowLong requires only two arguments. The first argument is the =&lt;br /&gt;target&lt;br /&gt;window's handle. The second argument specifies the type of information =&lt;br /&gt;you want&lt;br /&gt;to retrieve, which is the style settings for the window.&lt;br /&gt;After retrieving the window's current style settings, use the bitwise =&lt;br /&gt;And Not&lt;br /&gt;function to remove the WS_THICKFRAME attribute from the style settings =&lt;br /&gt;value.&lt;br /&gt;Next, issue a call to the SetWindowLong function to set the new style =&lt;br /&gt;settings&lt;br /&gt;for the specified window. This creates an MDI form that has a fixed =&lt;br /&gt;border style.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to create an MDI form that has a fixed border. =&lt;br /&gt;Run the&lt;br /&gt;example program by pressing F5. The MDI form will be displayed with a =&lt;br /&gt;fixed&lt;br /&gt;border.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. From the Insert menu, select MDI Form to create an MDI form. =&lt;br /&gt;MDIForm1 is&lt;br /&gt;    created by default.&lt;br /&gt; 3. Set Form1's MDIChild property to True. Modify the size of this form =&lt;br /&gt;so that&lt;br /&gt;    it is smaller than the MDIForm1 form.&lt;br /&gt; 4. Add the following Constant and Declare statements to the General =&lt;br /&gt;Declarations&lt;br /&gt;    section of Form1 (note that each Declare statement must be typed as =&lt;br /&gt;a single&lt;br /&gt;    line of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function GetWindowLong Lib "User" (ByVal hWnd As =&lt;br /&gt;Integer, ByVal&lt;br /&gt;  nIndex As Integer) As Long&lt;br /&gt;Private Declare Function SetWindowLong Lib "User" (ByVal hWnd As =&lt;br /&gt;Integer, ByVal&lt;br /&gt;  nIndex As Integer, ByVal dwNewLong As Long) As Long&lt;br /&gt;Const GWL_STYLE =3D (-16)&lt;br /&gt;&lt;br /&gt;Const WS_THICKFRAME =3D &amp;H40000&lt;br /&gt;&lt;br /&gt; 5. Add the following code to the Load event for MDIForm1 (note that the =&lt;br /&gt;NewStyle&lt;br /&gt;    line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub MDIForm_Load()&lt;br /&gt;    Dim CurStyle As Long&lt;br /&gt;    Dim NewStyle As Long&lt;br /&gt;    CurStyle =3D GetWindowLong(MDIForm1.hWnd, GWL_STYLE)&lt;br /&gt;    NewStyle =3D SetWindowLong(MDIForm1.hWnd, GWL_STYLE, CurStyle And&lt;br /&gt;       Not (WS_THICKFRAME))&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;&lt;br /&gt;"GetSystemMenu." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference, Volume 2: Functions)&lt;br /&gt;Knowledge Base Q118376. "How to Lock a Form So It Cannot Be Moved."&lt;br /&gt;Knowledge Base Q110393. "How to Remove Menu Items from a Form's =&lt;br /&gt;Control-Menu Box."&lt;br /&gt;Knowledge Base Q77930. "Modifying the System Menu of an MDI Child =&lt;br /&gt;Window."&lt;br /&gt;Knowledge Base Q71669. "Preventing an MDI Child Window from Changing =&lt;br /&gt;Size."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1597200009140503766?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1597200009140503766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1597200009140503766' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1597200009140503766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1597200009140503766'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-109-modifying-mdi-forms-border.html' title='Tip 109: Modifying an MDI Form&apos;s Border Style'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2052017057975730039</id><published>2007-11-06T05:59:00.002-08:00</published><updated>2007-11-06T06:02:11.828-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 108: Flashing Controls to Get the User's Attention</title><content type='html'>Abstract&lt;br /&gt;When developing an application in Microsoft(r) Visual Basic(r), you can =&lt;br /&gt;use the&lt;br /&gt;BackColor property to change the background color of a control. This =&lt;br /&gt;article&lt;br /&gt;explains how you can temporarily flash a control's BackColor property to =&lt;br /&gt;draw the&lt;br /&gt;user's attention to a specific control.&lt;br /&gt;&lt;br /&gt;Changing a Control's BackColor Property&lt;br /&gt;When designing a Microsoft(r) Visual Basic(r) application , you place =&lt;br /&gt;controls&lt;br /&gt;such as List Boxes and Text Boxes on a form. At run time, you can move =&lt;br /&gt;the focus&lt;br /&gt;to one of these objects by using Visual Basic's SetFocus method. Users =&lt;br /&gt;can then&lt;br /&gt;see that that particular control needs to be addressed in some way. For =&lt;br /&gt;example,&lt;br /&gt;if a Text Box receives the focus, users know they must type some text =&lt;br /&gt;into that&lt;br /&gt;control.&lt;br /&gt;&lt;br /&gt;However, users may not actually notice that the focus has been set to a =&lt;br /&gt;specific&lt;br /&gt;control because the "rubberband" (highlighting) around the inside of the =&lt;br /&gt;control&lt;br /&gt;is not that obvious. To alert the user, you could change the background =&lt;br /&gt;color of&lt;br /&gt;the control from white to, say, red, to draw the user's attention to =&lt;br /&gt;that control.&lt;br /&gt;When the control loses the focus, you could reset the control's =&lt;br /&gt;background color&lt;br /&gt;to white. This procedure, however, means that the control would be a =&lt;br /&gt;different&lt;br /&gt;color as long as that control retained the focus. In some situations, =&lt;br /&gt;this would&lt;br /&gt;not be appropriate.&lt;br /&gt;&lt;br /&gt;A far better solution would be to change the control's background color =&lt;br /&gt;for just&lt;br /&gt;a few seconds. The example program below "flashes" a control by quickly =&lt;br /&gt;changing&lt;br /&gt;the control's background color three times in succession. The Timer =&lt;br /&gt;function is&lt;br /&gt;used to cause a short time delay in the program. Each time a 2-second =&lt;br /&gt;interval&lt;br /&gt;elapses, the control's color is changed from white to red, then back to =&lt;br /&gt;white.&lt;br /&gt;The For-Next loop dictates how many times the control is flashed. In =&lt;br /&gt;this case,&lt;br /&gt;a value of 3 was used to flash the color three times. This creates a =&lt;br /&gt;very visual&lt;br /&gt;clue to draw the user's attention to that specific control.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to highlight the control that has the focus. Run =&lt;br /&gt;the&lt;br /&gt;example program by pressing F5 . Then click the Flash Command Button. =&lt;br /&gt;Note that&lt;br /&gt;the background color of the List Box control is changed to red and =&lt;br /&gt;flashed three&lt;br /&gt;times.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    List1.AddItem "Item #1"&lt;br /&gt;    List1.AddItem "Item #2"&lt;br /&gt;    List1.AddItem "Item #3"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 3. Add a Command Button control to Form1. Command1 is created by =&lt;br /&gt;default. Set&lt;br /&gt;    its Caption property to "Flash".&lt;br /&gt; 4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    FlashControl List1&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt; 6. Create a new function called FlashControl. Add the following code to =&lt;br /&gt;this&lt;br /&gt;    function:&lt;br /&gt;&lt;br /&gt;Sub FlashControl(C As Control)&lt;br /&gt;    Dim OldColor As Double&lt;br /&gt;    Dim Delay As Double&lt;br /&gt;    Dim X As Integer&lt;br /&gt;=20&lt;br /&gt;    OldColor =3D C.BackColor&lt;br /&gt;    For X =3D 1 To 3&lt;br /&gt;        C.BackColor =3D QBColor(12)&lt;br /&gt;        Delay =3D Timer&lt;br /&gt;            While Timer - Delay &lt; 0.2&lt;br /&gt;                DoEvents&lt;br /&gt;            Wend&lt;br /&gt;        C.BackColor =3D OldColor&lt;br /&gt;        Delay =3D Timer&lt;br /&gt;            While Timer - Delay &lt; 0.2&lt;br /&gt;                DoEvents&lt;br /&gt;            Wend&lt;br /&gt;    Next X&lt;br /&gt;    C.SetFocus&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2052017057975730039?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2052017057975730039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2052017057975730039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2052017057975730039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2052017057975730039'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-108-flashing-controls-to-get-users.html' title='Tip 108: Flashing Controls to Get the User&apos;s Attention'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2161102820821036610</id><published>2007-11-06T05:59:00.001-08:00</published><updated>2007-11-06T05:59:33.159-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 107: Detecting Double-Click Events in Combo Box Controls</title><content type='html'>Abstract&lt;br /&gt;When developing an application in Microsoft(r) Visual Basic(r), you may =&lt;br /&gt;want to&lt;br /&gt;let the user double-click the edit portion of a Combo Box control. This =&lt;br /&gt;article&lt;br /&gt;explains how to process this double-click event by using the Message =&lt;br /&gt;Blaster&lt;br /&gt;custom control.&lt;br /&gt;&lt;br /&gt;Using Message Blaster to Detect Double-Clicks on Combo Boxes&lt;br /&gt;In a Microsoft(r) Visual Basic(r) application, you can use a Combo Box =&lt;br /&gt;control to&lt;br /&gt;allow your user to easily select an item. Unfortunately, the Combo Box =&lt;br /&gt;control&lt;br /&gt;only responds to single-click events, not to double-click events in the =&lt;br /&gt;box's&lt;br /&gt;edit portion.&lt;br /&gt;&lt;br /&gt;You can, however, use a subclassing control such as Message Blaster to =&lt;br /&gt;detect&lt;br /&gt;when a user has double-clicked the combo box. Before you can do this, =&lt;br /&gt;you need&lt;br /&gt;to use two Microsoft Windows(r) application programming interface (API)&lt;br /&gt;functions GetWindow and GetClassName.&lt;br /&gt;The GetWindow function retrieves the handle of a window that has a =&lt;br /&gt;specific&lt;br /&gt;relationship to the source window. In other words, we need to determine =&lt;br /&gt;the&lt;br /&gt;Combo Box's handle. The Combo Box window is actually a sibling window of =&lt;br /&gt;our&lt;br /&gt;Visual Basic application's main form. Next, we need to call the =&lt;br /&gt;GetClassName&lt;br /&gt;function to make sure that the edit portion of the Combo Box is the =&lt;br /&gt;window we are&lt;br /&gt;dealing with.&lt;br /&gt;&lt;br /&gt;If you are using a combo box with its Style property set to 0 - Drop =&lt;br /&gt;Down Combo,&lt;br /&gt;detecting a double-click message is relatively straightforward. Just =&lt;br /&gt;retrieve the&lt;br /&gt;handle of the Combo Box's edit window, and then tell Message Blaster to =&lt;br /&gt;intercept&lt;br /&gt;the Windows WM_LBUTTONDBLCLK message.&lt;br /&gt;On the other hand, if you are using a Combo Box with its Style property =&lt;br /&gt;set to&lt;br /&gt;1 - Simple Combo, the procedure is a little different. Because the edit =&lt;br /&gt;portion&lt;br /&gt;of the Combo Box is already displayed, you need to call GetWindow to =&lt;br /&gt;retrieve&lt;br /&gt;the handle of the edit window.&lt;br /&gt;&lt;br /&gt;After you have retrieved the edit window's handle, you must call the =&lt;br /&gt;GetClassName&lt;br /&gt;function. This function is called so that we can be certain we are =&lt;br /&gt;processing a&lt;br /&gt;double-click message for only the edit portion of the Combo Box.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how your Visual Basic application can respond to a =&lt;br /&gt;double-click event when such an event is detected in the edit portion of =&lt;br /&gt;a Combo Box control.&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. From the Insert menu, select Custom Control. Add the Message Blaster =&lt;br /&gt;custom&lt;br /&gt;    control to this project.&lt;br /&gt; 3. Add a Message Blaster control to Form1. MsgBlast1 is created by =&lt;br /&gt;default.&lt;br /&gt; 4. Add the following code to the Message event for MsgBlaster1 (note =&lt;br /&gt;that the&lt;br /&gt;    first two lines of code must be typed as a single line of text):&lt;br /&gt;&lt;br /&gt;Private Sub MsgBlaster1_Message(MsgVal As Integer, wParam As Integer,&lt;br /&gt;   lParam As Long, ReturnVal As Long)&lt;br /&gt;    MsgBox "Combo1 box double-clicked"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add a Combo Box control to Form1. Combo1 is created by default. Set =&lt;br /&gt;its Style&lt;br /&gt;    property to 1-Simple Combo.&lt;br /&gt; 6. Add the following Constant and Declare statements to the General =&lt;br /&gt;Declarations&lt;br /&gt;    section of Form1 (note that each Declare statement must be typed as =&lt;br /&gt;a single&lt;br /&gt;    line of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function GetWindow Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;   ByVal wCmd As Integer) As Integer&lt;br /&gt;Private Declare Function GetClassName Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;&lt;br /&gt;ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer&lt;br /&gt;Const WM_LBUTTONDBLCLK =3D &amp;H203&lt;br /&gt;Const GW_CHILD =3D 5&lt;br /&gt;Const GW_HWNDNEXT =3D 2&lt;br /&gt;&lt;br /&gt; 7. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Dim hWndList As Integer&lt;br /&gt;    Dim hWndEdit As Integer&lt;br /&gt;    Dim Buf As String * 10&lt;br /&gt;    Dim X As Integer&lt;br /&gt;=20&lt;br /&gt;    Combo1.AddItem "Item #1"&lt;br /&gt;    Combo1.AddItem "Item #2"&lt;br /&gt;    Combo1.AddItem "Item #3"&lt;br /&gt;=20&lt;br /&gt;    hWndList =3D GetWindow(Combo1.hWnd, GW_CHILD)&lt;br /&gt;    Select Case Combo1.Style&lt;br /&gt;    Case 0&lt;br /&gt;        MsgBlaster1.hWndTarget =3D hWndList&lt;br /&gt;        MsgBlaster1.MsgList(0) =3D WM_LBUTTONDBLCLK&lt;br /&gt;    Case 1&lt;br /&gt;        hWndEdit =3D GetWindow(hWndList, GW_HWNDNEXT)&lt;br /&gt;        Buf =3D ""&lt;br /&gt;        X =3D GetClassName(hWndEdit, Buf, Len(Buf))&lt;br /&gt;    =20&lt;br /&gt;        If StrComp(Trim(Buf), "Edit" &amp; Chr$(0)) =3D 0 Then&lt;br /&gt;&lt;br /&gt;            MsgBlaster1.hWndTarget =3D hWndEdit&lt;br /&gt;            MsgBlaster1.MsgList(0) =3D WM_LBUTTONDBLCLK&lt;br /&gt;        End If&lt;br /&gt;    End Select&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the example program by pressing F5. When you double-click the edit =&lt;br /&gt;portion of&lt;br /&gt;the Combo Box control, a message box will confirm this action. You can =&lt;br /&gt;also change&lt;br /&gt;the Style property of the Combo Box to 0 - Drop Down Combo to get the =&lt;br /&gt;same effect.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;&lt;br /&gt;"GetClassName." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference Volume 2: Functions)&lt;br /&gt;"GetWindow." (Development Library, Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Programmer's Reference Volume 2: Functions)&lt;br /&gt;Knowledge Base Q110104. "Using MSGBLAST.VBX Control to Process Windows =&lt;br /&gt;Messages&lt;br /&gt;   from VB."&lt;br /&gt;"Processing Messages in Visual Basic." (Development Library, Technical =&lt;br /&gt;Articles,&lt;br /&gt;   Visual Basic Articles)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2161102820821036610?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2161102820821036610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2161102820821036610' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2161102820821036610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2161102820821036610'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-107-detecting-double-click-events.html' title='Tip 107: Detecting Double-Click Events in Combo Box Controls'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6949324638078507312</id><published>2007-11-06T05:58:00.001-08:00</published><updated>2007-11-06T05:58:54.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 106: Centering Text Vertically in a Text Box Control</title><content type='html'>Abstract&lt;br /&gt;The Microsoft® Visual Basic® Text Box control lets your user enter text that can&lt;br /&gt;later be used by your application. This article explains how you can center the&lt;br /&gt;text that the user types vertically within the Text Box control.&lt;br /&gt;&lt;br /&gt;Vertically Centering Text in Visual Basic&lt;br /&gt;In your application, you may need to display the text typed by the user, centered&lt;br /&gt;vertically within the Text Box control. The only way to accomplish this task is&lt;br /&gt;to place the Text Box control within a larger Picture Box control. The Text Box&lt;br /&gt;control allows you to type text that can later be used by your Microsoft® Visual&lt;br /&gt;Basic® application. As the user types the text, the text wraps to the next line&lt;br /&gt;(if the MultiLine property is set to True).&lt;br /&gt;&lt;br /&gt;The example program below centers the text in the text box by first setting the&lt;br /&gt;size of the Text Box control to the same as the size of the Picture Box control.&lt;br /&gt;Whenever a Change event is detected by the Text Box control, the text is redrawn&lt;br /&gt;in the control so that it appears vertically centered.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to center text vertically within a Text Box control.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Picture Box control to Form1. Picture1 is created by default. Set its&lt;br /&gt;    AutoRedraw property to True.&lt;br /&gt; 3. Add a Text Box control to Form1 over top of the Picture Box control. Text1 is&lt;br /&gt;    created by default. Set its MultiLine property to True.&lt;br /&gt; 4. Add the following Constant and Declare statements to the General Declarations&lt;br /&gt;    section of Form1 (note that the Declare statement must be typed as a single&lt;br /&gt;    line of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function SendMessage Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;   ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long&lt;br /&gt;Const WM_USER = &amp;H400&lt;br /&gt;Const EM_GETLINECOUNT = WM_USER + 10&lt;br /&gt;Dim NumLines As Integer&lt;br /&gt;&lt;br /&gt; 5. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Dim HT As Integer&lt;br /&gt;    Text1.Left = 0&lt;br /&gt;    Text1.Width = Picture1.Width&lt;br /&gt;    Text1.Height = Picture1.TextHeight("A")&lt;br /&gt;    Text1.Top = (Picture1.Height = Text1.Height) / 2&lt;br /&gt;    Text1.Visible = True&lt;br /&gt;    NumLines = 1&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. Add the following code to the Change event for Text1:&lt;br /&gt;&lt;br /&gt;Private Sub Text1_Change()&lt;br /&gt;    Dim Ret As Long&lt;br /&gt;    Dim HT As Integer&lt;br /&gt;    Ret = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, ByVal 0&amp;)&lt;br /&gt;    If Ret &lt;&gt; NumLines Then&lt;br /&gt;        HT = Picture1.TextHeight("A")&lt;br /&gt;        Text1.Height = HT * Ret&lt;br /&gt;        Text1.Top = (Picture1.Height - Text1.Height) / 2&lt;br /&gt;        NumLines = Ret&lt;br /&gt;        SendKeys "{PGUP}", True&lt;br /&gt;        Text1.SelStart = Len(Text1)&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6949324638078507312?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6949324638078507312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6949324638078507312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6949324638078507312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6949324638078507312'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-106-centering-text-vertically-in.html' title='Tip 106: Centering Text Vertically in a Text Box Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-9020532652887080204</id><published>2007-11-06T05:57:00.000-08:00</published><updated>2007-11-06T05:58:12.581-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 105: Removing a Form's Title Bar</title><content type='html'>Abstract&lt;br /&gt;This article explains how you can remove the title bar from a window or form from&lt;br /&gt;within a Microsoft® Visual Basic® application.&lt;br /&gt;&lt;br /&gt;Modifying the Style Attributes of a Window&lt;br /&gt;You can use two Microsoft® Windows® application programming interface (API)&lt;br /&gt;functions GetWindowLong and SetWindowLong to modify the appearance of a window&lt;br /&gt;when your Visual Basic® application is running.&lt;br /&gt;&lt;br /&gt;These functions allow you to programmatically change one or more style bits&lt;br /&gt;associated with a specific window. For example, you can remove a window's&lt;br /&gt;title bar by changing the following style bits at run time:&lt;br /&gt;&lt;br /&gt;WS_SYSMENU      The window has a control menu on the left side of its title bar&lt;br /&gt;WS_MINIMIZEBOX  The window has a minimize box on the right side of its title bar&lt;br /&gt;WS_MAXMIZEBOX   The window has a maximize box on the right side of its title bar&lt;br /&gt;WS_DLGFRAME     The window has a double border, but does not have a title bar&lt;br /&gt;&lt;br /&gt;First, we must first call GetWindowLong. This function reports the window style&lt;br /&gt;associated with a window, among other pieces of information.&lt;br /&gt;To use GetWindowLong, you must include its Declare statement in your program as&lt;br /&gt;follows (note that the Declare statement must be typed as a single line of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function GetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;   ByVal nIndex As Integer) As Long&lt;br /&gt;&lt;br /&gt;The GetWindowLong function requires two arguments. The first argument is the&lt;br /&gt;window's handle; the second argument specifies the type of information you&lt;br /&gt;want to retrieve. In this case, we want to retrieve the window's style settings.&lt;br /&gt;The current window style is returned as a long value after GetWindowLong is&lt;br /&gt;called.&lt;br /&gt;&lt;br /&gt;After we have retrieved the current window style for the window, we need to save&lt;br /&gt;the original style value that was just retrieved so that we can later restore the&lt;br /&gt;window's title bar, if desired. This is done by testing for the individual title&lt;br /&gt;bar attributes and saving each in turn to a new OriginalStyle variable. Next, we&lt;br /&gt;need to remove the attributes associated with the window's title bar. These&lt;br /&gt;attributes are the Minimize and Maximize buttons, the control menu, and the&lt;br /&gt;dialog box frame.  We can remove them from the original window style value that&lt;br /&gt;was just retrieved by using the bitwise AND NOT function. Finally, we can call&lt;br /&gt;SetWindowLong to send this information to Windows, which causes the title bar&lt;br /&gt;to be removed from the window.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;&lt;br /&gt;This program shows how you can remove and later restore a window's title bar.&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Command Button control to Form1. Command1 is created by default. Set&lt;br /&gt;    its Caption property to "Remove Title Bar".&lt;br /&gt; 3. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    RemoveTitleBar Form2&lt;br /&gt;    Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. Add a second Command Button control to Form1. Command2 is created by default.&lt;br /&gt;    Set its Caption property to "Restore Title Bar".&lt;br /&gt; 5. Add the following code to the Click event for Command2:&lt;br /&gt;&lt;br /&gt;Private Sub Command2_Click()&lt;br /&gt;    RestoreTitleBar Form2&lt;br /&gt;    Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. From the Insert menu, select Form. Form2 is created by default. Adjust the&lt;br /&gt;    size of this form so that it is approximately half the size of Form1. Set&lt;br /&gt;    its AutoRedraw property to True and its Caption property to an empty (NULL)&lt;br /&gt;    string.&lt;br /&gt; 7. Add a Command Button control to Form2. Command1 is created by default. Set&lt;br /&gt;    its Caption property to "OK".&lt;br /&gt; 8. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Form1.Show&lt;br /&gt;    Unload Form2&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 9. From the Insert menu, select Module. Module1.Bas is created by default.&lt;br /&gt;10. Add the following Constant and Declare statements to Module1.Bas (note that&lt;br /&gt;    each Declare statement must be typed as a single line of text):&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;Private Declare Function GetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;   ByVal nIndex As Integer) As Long&lt;br /&gt;Private Declare Function SetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;   ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long&lt;br /&gt;Const GWL_STYLE = (-16)&lt;br /&gt;Const WS_DLGFRAME = &amp;H400000&lt;br /&gt;Const WS_SYSMENU = &amp;H80000&lt;br /&gt;Const WS_MINIMIZEBOX = &amp;H20000&lt;br /&gt;Const WS_MAXIMIZEBOX = &amp;H10000&lt;br /&gt;&lt;br /&gt;11. Create a new function called RemoveTitleBar to Module1.Bas. Add the following&lt;br /&gt;    code to this function:&lt;br /&gt;&lt;br /&gt;Sub RemoveTitleBar(frm As Form)&lt;br /&gt;    Static OriginalStyle As Long&lt;br /&gt;    Dim CurrentStyle As Long&lt;br /&gt;    Dim X As Long&lt;br /&gt;    OriginalStyle = 0&lt;br /&gt;    CurrentStyle = GetWindowLong(frm.hWnd, GWL_STYLE)&lt;br /&gt;&lt;br /&gt;    OriginalStyle = OriginalStyle Or (CurrentStyle And WS_DLGFRAME)&lt;br /&gt;    OriginalStyle = OriginalStyle Or (CurrentStyle And WS_SYSMENU)&lt;br /&gt;    OriginalStyle = OriginalStyle Or (CurrentStyle And WS_MINIMIZEBOX)&lt;br /&gt;    OriginalStyle = OriginalStyle Or (CurrentStyle And WS_MAXIMIZEBOX)&lt;br /&gt;&lt;br /&gt;    CurrentStyle = CurrentStyle And Not WS_DLGFRAME&lt;br /&gt;    CurrentStyle = CurrentStyle And Not WS_SYSMENU&lt;br /&gt;    CurrentStyle = CurrentStyle And Not WS_MINIMIZEBOX&lt;br /&gt;    CurrentStyle = CurrentStyle And Not WS_MAXIMIZEBOX&lt;br /&gt;&lt;br /&gt;    X = SetWindowLong(frm.hWnd, GWL_STYLE, CurrentStyle)&lt;br /&gt;    frm.Refresh&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;12. Create a new function called RestoreTitleBar to Module1.Bas. Add the&lt;br /&gt;    following code to this function:&lt;br /&gt;&lt;br /&gt;Sub RestoreTitleBar(frm As Form)&lt;br /&gt;    Static OriginalStyle As Long&lt;br /&gt;    Dim CurrentStyle As Long&lt;br /&gt;    Dim X As Long&lt;br /&gt;&lt;br /&gt;    CurrentStyle = GetWindowLong(frm.hWnd, GWL_STYLE)&lt;br /&gt;    CurrentStyle = CurrentStyle Or OriginalStyle&lt;br /&gt;    X = SetWindowLong(frm.hWnd, GWL_STYLE, CurrentStyle)&lt;br /&gt;    frm.Refresh&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run this example program by pressing F5. Click the "Remove Title Bar" command&lt;br /&gt;button. Form2 is displayed. Notice that the title bar has been removed from&lt;br /&gt;the form. Click the OK command button, then click the Restore Title Bar command&lt;br /&gt;button. Form2 is displayed again, this time with its title bar intact.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"GetWindowLong." (Development Library, Product Documentation, SDKs, Windows 3.1&lt;br /&gt;   SDK, Programmer's Reference, Volume 2: Functions)&lt;br /&gt;Knowledge Base Q77316."How to Determine Display State of a VB Form, Modal or&lt;br /&gt;   Modeless."&lt;br /&gt;Knowledge Base Q83915. "SAMPLE: Adding and Removing Caption of a Window."&lt;br /&gt;"SetWindowLong." (Development Library, Product Documentation, SDKs, Windows 3.1&lt;br /&gt;   SDK, Programmer's Reference Volume 2: Functions)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-9020532652887080204?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/9020532652887080204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=9020532652887080204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9020532652887080204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9020532652887080204'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-105-removing-forms-title-bar.html' title='Tip 105: Removing a Form&apos;s Title Bar'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6325005805616171913</id><published>2007-11-06T05:56:00.002-08:00</published><updated>2007-11-06T05:57:33.456-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 104: Creating a Form with a Thin Title Bar</title><content type='html'>Abstract&lt;br /&gt;Many Microsoft® Windows®-based applications include a Toolbox control. A toolbox&lt;br /&gt;is a group of icons that the user can click to perform various operations within&lt;br /&gt;a running application. These toolbox windows usually display a very small, thin&lt;br /&gt;title bar instead of the normal-sized title bar. This article explains how you&lt;br /&gt;can create forms with thin title bars in your Visual Basic® applications.&lt;br /&gt;&lt;br /&gt;Using SendMessage and GetCursorPos to Create Title Bars&lt;br /&gt;&lt;br /&gt;You can design a form that contains a thin title bar. This is most often used in&lt;br /&gt;Toolbox controls from which the user can click on an icon to perform a program&lt;br /&gt;operation.&lt;br /&gt;In the example program below, we use a Label control, sized to fit at the top of&lt;br /&gt;our form. This control, which will become the thin title bar, responds to both&lt;br /&gt;the Click and MouseDown events. These two events allow the user to click on the&lt;br /&gt;Label control (that is, the thin title bar) and drag the entire form to a new&lt;br /&gt;location on the screen. This gives our Microsoft® Visual Basic® application the&lt;br /&gt;same functionality as a toolbox window.&lt;br /&gt;&lt;br /&gt;To enable our user to drag the form to a new location on the screen, we need to&lt;br /&gt;determine the cursor's current X and Y coordinates on the screen. You can use the&lt;br /&gt;Microsoft® Windows® application programming interface (API) GetCursorPos function&lt;br /&gt;to retrieve the cursor's current location.&lt;br /&gt;To call the GetCursorPos function, you must first add its Declare statement to&lt;br /&gt;the General Declarations section of your Visual Basic application. Following is&lt;br /&gt;the declaration for the GetCursorPos function:&lt;br /&gt;&lt;br /&gt;Private Declare Sub GetCursorPos Lib "User" (lpPoint As POINTAPI)&lt;br /&gt;&lt;br /&gt;The GetCursorPos function requires only one argument a POINTAPI structure. This&lt;br /&gt;structure will hold the cursor's current position, which is reported in screen&lt;br /&gt;coordinate values.&lt;br /&gt;The cursor's horizontal position is stored in the X variable; the cursor's&lt;br /&gt;vertical position is stored in the Y variable within the POINTAPI structure:&lt;br /&gt;&lt;br /&gt;Type POINTAPI&lt;br /&gt;    X As Integer&lt;br /&gt;    Y As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;After the cursor's position has been retrieved, we issue the LSet statement to&lt;br /&gt;convert the X and Y values to values that can be understood by the SendMessage&lt;br /&gt;function. In other words, LSet converts the X and Y integers to a single long&lt;br /&gt;value.&lt;br /&gt;Next, we issue two SendMessage commands to Windows. The first SendMessage&lt;br /&gt;statement tells Windows that, because a MouseDown event has just occurred,&lt;br /&gt;it needs an equivalent MouseUp event. The second SendMessage statement tells&lt;br /&gt;Windows that the user has clicked the title bar. Windows then processes our&lt;br /&gt;thin title bar's Click and MouseDown events as it would for a normal window.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to create a form with a small title bar.&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Set the following properties for Form1:&lt;br /&gt;&lt;br /&gt;ClipControls  0  'False&lt;br /&gt;ControlBox    0  'False&lt;br /&gt;MaxButton     0  'False&lt;br /&gt;MinButton     0  'False&lt;br /&gt;&lt;br /&gt; 3. Add the following Constant and Declare statements to the General Declarations&lt;br /&gt;    section of Form1 (note that the Declare statements must be typed as single&lt;br /&gt;    lines of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal&lt;br /&gt;   wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Any) As Long&lt;br /&gt;Private Declare Sub GetCursorPos Lib "User" (lpPoint As POINTAPI)&lt;br /&gt;Const WM_LBUTTONUP = &amp;H202&lt;br /&gt;Const WM_SYSCOMMAND = &amp;H112&lt;br /&gt;Const MOUSE_MOVE = &amp;HF012&lt;br /&gt;&lt;br /&gt; 4. Add a Label control to Form1. Label1 is created by default. Set its Caption&lt;br /&gt;    property to "Thin Title Bar".&lt;br /&gt;    Note: For this example program, change the size of Form1 so that it&lt;br /&gt;          resembles the size and shape of a Toolbox window. Next, position&lt;br /&gt;          the Label control at the top of the form and adjust its size so&lt;br /&gt;          that it isthe same size as a thin title bar.&lt;br /&gt; 5. Add the following code to the Click event for Label1:&lt;br /&gt;&lt;br /&gt;Private Sub Label1_Click()&lt;br /&gt;    Dim mpos As POINTAPI&lt;br /&gt;    Dim P As ConvertPOINTAPI&lt;br /&gt;    Dim Ret As Integer&lt;br /&gt;&lt;br /&gt;    Call GetCursorPos(mpos)&lt;br /&gt;    LSet P = mpos&lt;br /&gt;    Ret = SendMessage(Me.hWnd, WM_LBUTTONUP, 0, P.XY)&lt;br /&gt;    Ret = SendMessage(Me.hWnd, WM_SYSCOMMAND, MOUSE_MOVE, P.XY)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. Add the following code to the MouseDown event for Label1 (note that the first&lt;br /&gt;    two lines must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Label1_MouseDown(Button As Integer, Shift As Integer,&lt;br /&gt; X As Single, Y As Single)&lt;br /&gt;    Dim mpos As POINTAPI&lt;br /&gt;    Dim P As ConvertPOINTAPI&lt;br /&gt;    Dim Ret As Integer&lt;br /&gt;&lt;br /&gt;    Call GetCursorPos(mpos)&lt;br /&gt;    LSet P = mpos&lt;br /&gt;    Ret = SendMessage(Me.hWnd, WM_LBUTTONUP, 0, P.XY)&lt;br /&gt;    Ret = SendMessage(Me.hWnd, WM_SYSCOMMAND, MOUSE_MOVE, P.XY)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 7. From the Insert menu, select Module. Module1.Bas is created by default.&lt;br /&gt; 8. Add the following type declarations to Module1.Bas:&lt;br /&gt;&lt;br /&gt;Type POINTAPI&lt;br /&gt;    X As Integer&lt;br /&gt;    Y As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Type ConvertPOINTAPI&lt;br /&gt;    XY As Long&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Run the example program by pressing F5. Form1 should be displayed on the screen&lt;br /&gt;with the thin title bar appearing at the top of the form. You can drag the form&lt;br /&gt;by clicking on the title bar, just as you would do with any other window that has&lt;br /&gt;a title bar.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Dave's Top Ten List of Tricks, Hints, and Techniques for Programming in Windows."&lt;br /&gt;   (Development Library, Books and Periodicals, Microsoft Systems Journal,&lt;br /&gt;   October 1992, Volume 7, Number 6)&lt;br /&gt;Knowledge Base Q83349. "How to Create a Form with No Title Bar in VB for Windows."&lt;br /&gt;Knowledge Base Q71280. "How to Create a Flashing Title Bar on a Visual Basic Form."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6325005805616171913?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6325005805616171913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6325005805616171913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6325005805616171913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6325005805616171913'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-104-creating-form-with-thin-title.html' title='Tip 104: Creating a Form with a Thin Title Bar'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3167390953935147843</id><published>2007-11-06T05:56:00.001-08:00</published><updated>2007-11-06T05:56:52.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 103: Preventing the CTRL+TAB and CTRL+F6 Key Combinations from Activating</title><content type='html'>Abstract&lt;br /&gt;A multiple-document interface (MDI) window can contain multiple child windows. A&lt;br /&gt;user can switch between child windows by pressing the CTRL+TAB or CTRL+F6 key&lt;br /&gt;combinations. This article explains how you can prevent the user from using these&lt;br /&gt;keys to switch to another child window.&lt;br /&gt;&lt;br /&gt;Using Message Blaster to Disable Keystrokes&lt;br /&gt;Many Microsoft® Windows®-based applications use multiple-document interface (MDI)&lt;br /&gt;windows to display several child windows to the user. For instance, Word for&lt;br /&gt;Windows lets you work with several different documents at the same time. Each text&lt;br /&gt;file is displayed in its own child window.&lt;br /&gt;&lt;br /&gt;When users want to switch from one child window to another, they press either&lt;br /&gt;CTRL+TAB or CTRL+F6. The next window in the list is then brought to the top of&lt;br /&gt;the window list (that is, it becomes the currently active window).&lt;br /&gt;In a Visual Basic® application, you can disable this window-switching by&lt;br /&gt;intercepting the messages sent to Windows. The WM_SYSCOMMAND message triggers the&lt;br /&gt;event that switches between child windows. The Message Blaster custom control can&lt;br /&gt;be used to process this WM_SYSCOMMAND message in your Visual Basic program. You&lt;br /&gt;can retrieve Message Blaster from the Microsoft Development Library. For&lt;br /&gt;information on the Message Blaster custom control, see "Additional References" at&lt;br /&gt;the end of this article.&lt;br /&gt;&lt;br /&gt;The general idea, however, is to capture the WM_SYSCOMMAND that is sent to&lt;br /&gt;Windows when the CTRL+F6 or CTRL+TAB combination is pressed. To do this, you must&lt;br /&gt;register the Message Blaster control to the target controlin this case, the first&lt;br /&gt;child window (Form1). To prevent a user from activating other child windows,&lt;br /&gt;execute the following statement:&lt;br /&gt;&lt;br /&gt;MsgBlaster1=MsgPassage(0)&lt;br /&gt;&lt;br /&gt;After you have disabled a child window in this manner, the user will not be able&lt;br /&gt;to minimize or maximize the target window. In addition, the resize and move&lt;br /&gt;options are also disabled.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to disable the CTRL+F6 and CTRL+TAB key combinations so&lt;br /&gt;that the user cannot move to the next MDI child window. Run the example program&lt;br /&gt;by pressing F5. The program displays two child windows (Form1 and Form2) within&lt;br /&gt;an MDI document window. Normally, you can press the CTRL+TAB or CTRL+F6 keys to&lt;br /&gt;switch between the child windows. The Message Blaster control has been used to&lt;br /&gt;disable these two key combinations if you try to use them in Form1. Click Form2&lt;br /&gt;to bring that child window to the top. Unlike Form 1, the Form 2 child window&lt;br /&gt;will process the CTRL+TAB and CTRL+F6 key combinations.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. From the Visual Basic Insert menu, select MDI Form. MDIForm1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Set Form1's MDIChild property to True.&lt;br /&gt; 4. From the Visual Basic Insert menu, select Form. Form2 is created by default.&lt;br /&gt; 5. Set the Form 2 MDIChild property to True.&lt;br /&gt; 6. From the Visual Basic Tools menu, select Custom Controls. Add a Message&lt;br /&gt;    Blaster control to Form1. MsgBlaster1 is created by default.&lt;br /&gt; 7. Add the following code to the General Declarations section of Form1:&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;Const WM_SYSCOMMAND = &amp;H112&lt;br /&gt;&lt;br /&gt; 8. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    MsgBlaster1.hWndTarget = Form1.hWnd&lt;br /&gt;    MsgBlaster1.MsgList(0) = WM_SYSCOMMAND&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 9. Add the following code to the MsgBlaster1_Message event for Form1 (note that&lt;br /&gt;    the first two lines below must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub MsgBlaster1_Message(MsgVal As Integer, wParam As Integer,&lt;br /&gt;   lParam As Long, ReturnVal As Long)&lt;br /&gt;    MsgBlaster1.MsgPassage(0) = 0&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;10. Add the following code to the Form_Load event for MDIForm1:&lt;br /&gt;&lt;br /&gt;Private Sub MDIForm_Load()&lt;br /&gt;    Form1.Show&lt;br /&gt;    Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"The Elements of MDI." (Development Library, Books and Periodicals,&lt;br /&gt;   "Programming Windows 3.1" by Charles Petzold, PART 5 Data Exchange and Links,&lt;br /&gt;   Chapter 18 The Multiple-Document Interface [MDI])&lt;br /&gt;Knowledge Base Q110104. "Using MSGBLAST.VBX Control to Process Windows Messages."&lt;br /&gt;"Message Blaster: Processing Messages in Visual Basic." (Development Library,&lt;br /&gt;   Technical Articles, Visual Basic Articles)&lt;br /&gt;"Switching Between MDI Child Windows." (Development Library,&lt;br /&gt;   Product Documentation, SDKs, Windows Interface Guidelines for Software Design,&lt;br /&gt;   Chapter 9 Window Management, Multiple-Document Interface)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3167390953935147843?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3167390953935147843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3167390953935147843' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3167390953935147843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3167390953935147843'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-103-preventing-ctrltab-and-ctrlf6.html' title='Tip 103: Preventing the CTRL+TAB and CTRL+F6 Key Combinations from Activating'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2575907814060350954</id><published>2007-11-06T05:55:00.002-08:00</published><updated>2007-11-06T05:56:16.524-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 102: Modifying a Child Window's Caption</title><content type='html'>Abstract&lt;br /&gt;This article explains how you can modify the caption displayed in a&lt;br /&gt;multiple-document interface (MDI) child window.&lt;br /&gt;&lt;br /&gt;Changing the Caption of Child Windows or Forms&lt;br /&gt;The Microsoft® Word for Windows® application allows you to have several&lt;br /&gt;documents loaded into memory at one time. These text files are displayed in&lt;br /&gt;multiple-document interface (MDI) child windows.&lt;br /&gt;An MDI child window automatically inherits the parent window's caption. This&lt;br /&gt;caption is inserted before the child window's own caption. As an example, if&lt;br /&gt;the parent window's caption is MDIForm1 and the child window's caption is Form1,&lt;br /&gt;the child window's caption, at run time, will be set to MDIForm1 - [Form1].&lt;br /&gt;&lt;br /&gt;In your Visual Basic® application, you can set the child form's caption to a&lt;br /&gt;NULL string so that only the caption of the parent window is displayed. However,&lt;br /&gt;the dash and bracket characters must also be deleted. Because the caption is&lt;br /&gt;displayed in the non-client area of a window, you must use a subclassing control&lt;br /&gt;to process the paint event yourself. The Message Blaster custom control can be&lt;br /&gt;used to modify a child window's caption.&lt;br /&gt;However, another solution can do the same thing without using a subclassing&lt;br /&gt;control. Just use Visual Basic's string functions (Mid and InStr) to remove the&lt;br /&gt;unwanted text from the child window's caption. This code, as shown below in the&lt;br /&gt;example program, is placed in the child form's Resize event. Each time Windows&lt;br /&gt;needs to repaint the window, the caption will be modified.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to modify a child window's caption text. Start this&lt;br /&gt;program by pressing F5. The original caption is "MDIForm1 - [Form1]".&lt;br /&gt;Start this program again after removing the Exit Sub statement from the Resize&lt;br /&gt;event (at the beginning of the code listing). The caption for the MDIForm1&lt;br /&gt;window now reads, "MDIForm1 - Form1". The dash and bracket characters have been&lt;br /&gt;removed from the string. In addition, if you set Form1's caption to a NULL&lt;br /&gt;string, MDIForm1 will simply display its own caption even when Form1 is&lt;br /&gt;minimized.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. From the Visual Basic Insert menu, select MDI Form. MDIForm1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Set Form1's MDIChild property to True. Modify the size of this form so that&lt;br /&gt;    it is smaller than the MDIForm1 form.&lt;br /&gt; 4. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Form1.Tag = Form1.Caption&lt;br /&gt;    MDIForm1.Tag = MDIForm1.Caption&lt;br /&gt;    Form1.WindowState = 2 'Maximize this form&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add the following code to the Resize event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Resize()&lt;br /&gt;    Dim Cap As String&lt;br /&gt;    Dim Postn As Integer&lt;br /&gt;&lt;br /&gt;    If (Form1.WindowState = 2) Then&lt;br /&gt;        Cap = MDIForm1.Caption&lt;br /&gt;&lt;br /&gt;        MDIForm1.Caption = ""&lt;br /&gt;        Postn = InStr(Cap, "[")&lt;br /&gt;        If (Postn) Then&lt;br /&gt;            Mid(Cap, Postn, 1) = " "&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        Postn = InStr(Cap, "]")&lt;br /&gt;        If (Postn) Then&lt;br /&gt;            Mid(Cap, Postn, 1) = " "&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        Postn = InStr(Cap, "-")&lt;br /&gt;        If (Postn) Then&lt;br /&gt;            Mid(Cap, Postn, 1) = " "&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        Form1.Caption = ""&lt;br /&gt;        MDIForm1.Caption = Cap&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    If (Form1.WindowState = 0) Then&lt;br /&gt;        Form1.Caption = Form1.Tag&lt;br /&gt;        MDIForm1.Caption = MDIForm1.Tag&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2575907814060350954?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2575907814060350954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2575907814060350954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2575907814060350954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2575907814060350954'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-102-modifying-child-windows-caption.html' title='Tip 102: Modifying a Child Window&apos;s Caption'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2821176347999225560</id><published>2007-11-06T05:55:00.001-08:00</published><updated>2007-11-06T05:55:40.526-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 101: Using the Built-In Windows Icons</title><content type='html'>Abstract&lt;br /&gt;There are several icons built into the Windows® operating system that are used&lt;br /&gt;by Windows when displaying message boxes. This article explains how to use the&lt;br /&gt;built-in icons in your own Visual Basic® applications.&lt;br /&gt;&lt;br /&gt;Displaying the Built-In Windows Icons&lt;br /&gt;In a Visual Basic® application, you can use the icons built into the Windows®&lt;br /&gt;operating system. These include the hand, exclamation point, question mark,&lt;br /&gt;asterisk, and application icons. The CONSTANT.TXT file defines these as follows:&lt;br /&gt;&lt;br /&gt;Const IDI_APPLICATION = 32512&amp;&lt;br /&gt;Const IDI_HAND = 32513&amp;&lt;br /&gt;Const IDI_QUESTION = 32514&amp;&lt;br /&gt;Const IDI_EXCLAMATION = 32515&amp;&lt;br /&gt;Const IDI_ASTERISK = 32516&amp;&lt;br /&gt;&lt;br /&gt;Before you can use one of these icons in your Visual Basic application, you must&lt;br /&gt;load the icon using the Windows application programming interface (API) LoadIcon&lt;br /&gt;function. This function loads a specified icon into the device context. In the&lt;br /&gt;example program below, we want to display the icon in a Picture Box control.&lt;br /&gt;Therefore, we must first retrieve a device context for the Picture Box control.&lt;br /&gt;&lt;br /&gt;To retrieve a device context for a window, you use the Windows application&lt;br /&gt;programming interface (API) GetWindowDC function, as follows:&lt;br /&gt;&lt;br /&gt;Private Declare Function GetWindowDC Lib "User" (ByVal hWnd As Integer)&lt;br /&gt;   As Integer&lt;br /&gt;&lt;br /&gt;(Note that this statement must be typed as a single line of code.)&lt;br /&gt;This function requires only one argumentan integer value containing the window's&lt;br /&gt;handle. The device context's handle is returned as an integer value or, if the&lt;br /&gt;function was not successful, a value of zero is returned.&lt;br /&gt;&lt;br /&gt;When you have finished using the device context you must remember to release the&lt;br /&gt;device context. This can be done by calling the ReleaseDC function, passing it&lt;br /&gt;the handle of the device context that you want to release.&lt;br /&gt;After retrieving the device context, you can call the LoadIcon function to&lt;br /&gt;display the specified icon in the device context. Because this is a built-in&lt;br /&gt;Windows icon, we set the first argument to a value of zero. The second argument&lt;br /&gt;to the LoadIcon function is a constant value telling the function which icon you&lt;br /&gt;want to load.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to use the built-in icons used by the Windows operating&lt;br /&gt;system. This program displays the exclamation icon in the Picture Box control.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following Constant and Declare statements to the General&lt;br /&gt;    Declarations section of Form1 (note that each Declare statement must be&lt;br /&gt;    typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function DrawIcon Lib "User" (ByVal hDC As Integer, ByVal X&lt;br /&gt;   As Integer, ByVal y As Integer, ByVal hIcon As Integer) As Integer&lt;br /&gt;Private Declare Function LoadIcon Lib "User" (ByVal hInstance As Integer, ByVal&lt;br /&gt;   lpIconName As Any) As Integer&lt;br /&gt;Private Declare Function GetWindowDC Lib "User" (ByVal hWnd As Integer) As&lt;br /&gt;   Integer&lt;br /&gt;Private Declare Function ReleaseDC Lib "User" (ByVal hWnd As Integer, ByVal hDC&lt;br /&gt;   As Integer) As Integer&lt;br /&gt;Const IDI_EXCLAMATION = 32515&amp;&lt;br /&gt;&lt;br /&gt; 3. Add a Picture Box control to Form1. Picture1 is created by default. Set its&lt;br /&gt;    AutoRedraw property to True.&lt;br /&gt; 4. Add a Command Button control to Form1. Command1 is created by default.&lt;br /&gt; 5. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim hDCCur As Long&lt;br /&gt;    Dim hIcon As Integer&lt;br /&gt;    Dim X As Integer&lt;br /&gt;&lt;br /&gt;    hDCCur = GetWindowDC(Picture1.hWnd)&lt;br /&gt;    hIcon = LoadIcon(0, IDI_EXCLAMATION)&lt;br /&gt;    X = DrawIcon(hDCCur, 0, 0, hIcon)&lt;br /&gt;    Call ReleaseDC(Picture1.hWnd, hDCCur)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q88944. How to Extract a Windows Program IconRunning or Not.&lt;br /&gt;Specifying a Class Icon and Using Built-In Icons (Product Documentation, SDKs,&lt;br /&gt;   Windows 3.1 SDK, Guide to Programming)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2821176347999225560?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2821176347999225560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2821176347999225560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2821176347999225560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2821176347999225560'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-101-using-built-in-windows-icons.html' title='Tip 101: Using the Built-In Windows Icons'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-478542778761668226</id><published>2007-11-06T05:54:00.001-08:00</published><updated>2007-11-06T05:54:59.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 100: Printing a Form Multiple Times on One Page</title><content type='html'>Abstract&lt;br /&gt;This article explains how you can print a Visual Basic® form several&lt;br /&gt;times on a single piece of paper.&lt;br /&gt;&lt;br /&gt;Printing Forms on the Printer Device&lt;br /&gt;You can use the Windows® application programming interface (API)&lt;br /&gt;StretchBlt function to copy a form to another form multiple times. For&lt;br /&gt;instance, the example program below uses the StretchBlt function to&lt;br /&gt;copy a form to a new form. The original form is copied four times. The&lt;br /&gt;destination form then contains a copy of the original form in its&lt;br /&gt;upper left, lower left, upper right, and lower right corners.&lt;br /&gt;&lt;br /&gt;The technique presented in this article is usefull for duplicating a&lt;br /&gt;form several times. For example, if you designed a form to keep track&lt;br /&gt;of telephone messages, you could print four messages per printed page,&lt;br /&gt;instead of using one piece of paper per telephone message.&lt;br /&gt;The StretchBlt function can be used to copy an image from one device&lt;br /&gt;context to another. To use this function in your Visual Basic®&lt;br /&gt;application, include the following Declare statement in the General&lt;br /&gt;Declarations section of your form (note that it must be typed as a&lt;br /&gt;single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function StretchBlt Lib "GDI" (ByVal hDC%, ByVal X%, ByVal y%,&lt;br /&gt;   ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%, ByVal&lt;br /&gt;   nSrcWidth%, ByVal nSrcHeight%, ByVal dwRop&amp;) As Integer&lt;br /&gt;&lt;br /&gt;The StretchBlt function requires the following arguments:&lt;br /&gt;&lt;br /&gt;hDC         An integer value containing the destination device context.&lt;br /&gt;X,Y         Integer values defining the rectangle's upper left corner&lt;br /&gt;            for the destination device context.&lt;br /&gt;nWidth      The width of the image.&lt;br /&gt;nHeight     The height of the image.&lt;br /&gt;hSrcDC      An integer value containing the source device context.&lt;br /&gt;Xsrc, YSrc  Integer values defining the rectangle's upper left corner&lt;br /&gt;            for the source device context.&lt;br /&gt;nSrcWidth   The width of the image.&lt;br /&gt;nSrcHeight  The height of the image.&lt;br /&gt;dwRop       The raster operation that is to be used.&lt;br /&gt;&lt;br /&gt;In the example program below, the StretchBlt function is called four&lt;br /&gt;times to copy the original Form1 to the destination Form2. Each time&lt;br /&gt;the copy operation is performed, the destination is offset to the next&lt;br /&gt;quarter section of Form2.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;Before running this program, make sure your printer is online and&lt;br /&gt;ready to accept data. Press the F5 function key to run the example&lt;br /&gt;program, which will print Form2 on the paper four times.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Add the following code to the Click event for Command1 (note that&lt;br /&gt;    the X = lines must each be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim W As Integer&lt;br /&gt;    Dim H As Integer&lt;br /&gt;    Dim X As Integer&lt;br /&gt;&lt;br /&gt;    W = Form2.ScaleWidth / 2&lt;br /&gt;    H = Form2.ScaleHeight / 2&lt;br /&gt;    X = SetStretchBltMode(Form2.hDC, 3)&lt;br /&gt;&lt;br /&gt;    X = StretchBlt(Form2.hDC, 0, 0, W, H, Form1.hDC, 0, 0, Form1.ScaleWidth,&lt;br /&gt;        Form1.ScaleHeight, SRCCOPY)&lt;br /&gt;    X = StretchBlt(Form2.hDC, W, 0, W, H, Form1.hDC, 0, 0, Form1.ScaleWidth,&lt;br /&gt;        Form1.ScaleHeight, SRCCOPY)&lt;br /&gt;    X = StretchBlt(Form2.hDC, W, H, W, H, Form1.hDC, 0, 0, Form1.ScaleWidth,&lt;br /&gt;        Form1.ScaleHeight, SRCCOPY)&lt;br /&gt;    X = StretchBlt(Form2.hDC, 0, H, W, H, Form1.hDC, 0, 0, Form1.ScaleWidth,&lt;br /&gt;        Form1.ScaleHeight, SRCCOPY)&lt;br /&gt;&lt;br /&gt;    Form2.Refresh&lt;br /&gt;    Form2.PrintForm&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. From Visual Basic's menu, select Insert. Select Form to create a new form.&lt;br /&gt;    Form2 is created by default. Add a Text Box control to Form2 or otherwise&lt;br /&gt;    put some type of material on the form so you can see it printed on the paper.&lt;br /&gt; 5. Add the following code to the General Declarations section of Form1 (note&lt;br /&gt;    that each Declare statement should be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function SetStretchBltMode Lib "GDI" (ByVal hDC%, ByVal&lt;br /&gt;   nStretchMode%) As Integer&lt;br /&gt;Private Declare Function StretchBlt Lib "GDI" (ByVal hDC%, ByVal X%, ByVal y%,&lt;br /&gt;   ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%, ByVal&lt;br /&gt;   nSrcWidth%, ByVal nSrcHeight%, ByVal dwRop&amp;) As Integer&lt;br /&gt;Const SRCCOPY = &amp;HCC0020&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Creating Bitmaps of Any Size with StretchBlt." (Books and Periodicals, Inside&lt;br /&gt;   Visual Basic Articles [Cobb])&lt;br /&gt;Knowledge Base Q84066. "How to Print Entire VB Form and Control the Printed Size."&lt;br /&gt;Knowledge Base Q77060. "How to Print a VB Picture Control Using Windows API&lt;br /&gt;   Functions."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-478542778761668226?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/478542778761668226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=478542778761668226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/478542778761668226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/478542778761668226'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-100-printing-form-multiple-times-on.html' title='Tip 100: Printing a Form Multiple Times on One Page'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8348651384440271038</id><published>2007-11-06T05:52:00.000-08:00</published><updated>2007-11-06T05:54:10.265-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 99: Adding Three-Dimensional Effects to Visual Basic Forms</title><content type='html'>Abstract&lt;br /&gt;You can use functions in the CTL3D.DLL dynamic-link library to add a&lt;br /&gt;three-dimensional (3-D) look to any form. This article explains how to&lt;br /&gt;use this .DLL to create a 3-D form in a Visual Basic® application.&lt;br /&gt;&lt;br /&gt;Creating 3-D Forms&lt;br /&gt;The CTL3D.DLL dynamic-link library contains Windows® application&lt;br /&gt;programming interface (API) functions you can use to create&lt;br /&gt;three-dimensional (3-D) message boxes and common dialog boxes in your&lt;br /&gt;Visual Basic® applications. You can also use these functions to create&lt;br /&gt;a 3-D form. The form must have a fixed-double-style border. In&lt;br /&gt;addition, the form's MinButton and MaxButton properties must be set to&lt;br /&gt;False.&lt;br /&gt;&lt;br /&gt;As the example program below shows, the CTL3D.DLL functions can enable&lt;br /&gt;your Visual Basic application to display 3-D forms, message boxes, and&lt;br /&gt;common dialog boxes.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. From the Insert menu, select Form to create a second form. Form2&lt;br /&gt;    is created by default. Set the form's BorderStyle property to&lt;br /&gt;    3-Fixed Double, the MinButton property to False, and the MaxButton&lt;br /&gt;    property to False.&lt;br /&gt; 5. Add the following code to the Form_Load event for Form2:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Call Ctl3DForm(Me)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. From the Insert menu, select Module to create a new module.&lt;br /&gt;    Module1.Bas is created by default.&lt;br /&gt; 7. Add the following code to Module1.Bas (note that the Private&lt;br /&gt;    lines must each be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Const SWW_HPARENT = -8&lt;br /&gt;Const GWW_HINSTANCE = -6&lt;br /&gt;Const GWW_HPARENT = -8&lt;br /&gt;Const BUTTON_FACE = &amp;H8000000F&lt;br /&gt;Const FIXED_DOUBLE = 3&lt;br /&gt;Const DS_MODALFRAME = &amp;H80&amp;&lt;br /&gt;Const GWL_STYLE = (-16)&lt;br /&gt;Private Declare Function Ctl3DSubClassDlgEx Lib "CTL3D.DLL" (ByVal hWnd As&lt;br /&gt;   Integer, ByVal Flags As Long) As Integer&lt;br /&gt;Private Declare Function GetWindowLong Lib "User" (ByVal hWnd As Integer, ByVal&lt;br /&gt;   nIndex As Integer) As Long&lt;br /&gt;Private Declare Function SetWindowLong Lib "User" (ByVal hWnd As Integer, ByVal&lt;br /&gt;   nIndex As Integer, ByVal dwNewLong As Long) As Long&lt;br /&gt;Sub Ctl3DForm(frm As Form)&lt;br /&gt;    Dim hWnd As Integer&lt;br /&gt;    Dim Result As Integer&lt;br /&gt;    Dim lStyle As Long&lt;br /&gt;    Dim Flag1 As Long&lt;br /&gt;&lt;br /&gt;    hWnd = frm.hWnd&lt;br /&gt;    Flag1 = 0&lt;br /&gt;&lt;br /&gt;    If frm.BorderStyle = FIXED_DOUBLE Then&lt;br /&gt;        frm.BackColor = BUTTON_FACE&lt;br /&gt;        lStyle = GetWindowLong(hWnd, GWL_STYLE)&lt;br /&gt;        lStyle = lStyle Or DS_MODALFRAME&lt;br /&gt;        lStyle = SetWindowLong(hWnd, GWL_STYLE, lStyle)&lt;br /&gt;        Result = Ctl3DSubClassDlgEx(hWnd, Flag1)&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the example program by pressing the F5 function key. Click the&lt;br /&gt;Command Button to display Form2. Form2 is modified so that it has a&lt;br /&gt;three-dimensional look.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q113898. "How to Use CTL3D.DLL in Your Visual Basic&lt;br /&gt;   Program."&lt;br /&gt;"Seventeen Techniques for Preparing Your 16-Bit Applications for&lt;br /&gt;   Chicago." (Books and Periodicals, Microsoft Systems Journal,&lt;br /&gt;   1994 Volume 9, February 1994 Number 2)&lt;br /&gt;"Windows Questions and Answers." (Books and Periodicals, Microsoft&lt;br /&gt;   Systems Journal, 1994 Volume 9, August 1994, Number 8)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8348651384440271038?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8348651384440271038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8348651384440271038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8348651384440271038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8348651384440271038'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-99-adding-three-dimensional-effects.html' title='Tip 99: Adding Three-Dimensional Effects to Visual Basic Forms'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-49847408132367180</id><published>2007-11-06T05:51:00.000-08:00</published><updated>2007-11-06T05:52:08.652-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 98: Saving a Window's Client Area in Bitmap Format</title><content type='html'>Abstract&lt;br /&gt;You may need to create a bitmap (.BMP) image file that contains a&lt;br /&gt;window's client area. This article explains how to save a window's&lt;br /&gt;client area to disk in a bitmap image file format.&lt;br /&gt;&lt;br /&gt;Saving Bitmap Images to Disk&lt;br /&gt;You can save the contents of a window to a disk file in bitmap format&lt;br /&gt;by retrieving the target window's rectangle area and then using&lt;br /&gt;several Windows® application programming interface (API) functions to&lt;br /&gt;save that image to a device context such as a Picture Box control.&lt;br /&gt;&lt;br /&gt;The GetWindowRect function can be used to retrieve the bounding&lt;br /&gt;rectangle of a window or form. This rectangle includes the window's&lt;br /&gt;borders, title bars, and other attributes associated with a window.&lt;br /&gt;The Declare statement for the GetWindowRect function is as follows:&lt;br /&gt;&lt;br /&gt;Private Declare Sub GetWindowRect Lib "User" (ByVal hWnd As Integer, lpRect&lt;br /&gt;  As RECT)&lt;br /&gt;&lt;br /&gt;The GetWindowRect function takes two arguments: an integer value&lt;br /&gt;containing the window's handle and a pointer to a RECT rectangle&lt;br /&gt;structure. The RECT structure will contain the dimensions of the&lt;br /&gt;window's rectangle area after the function is called.&lt;br /&gt;&lt;br /&gt;The BitBlt function uses the rectangle that contains the image you&lt;br /&gt;want to save to disk to copy the image from one device context to&lt;br /&gt;another. In this case, BitBlt is used to copy the window's client&lt;br /&gt;area to the Picture Box control. Then the Save As dialog box is used&lt;br /&gt;to save the contents of the Picture Box to disk as a .BMP file.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to save the client area of a form or window&lt;br /&gt;and save it as a .BMP file.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic®. Form1 is created by default.&lt;br /&gt; 2. Add the following Constant and Declare statements to the General&lt;br /&gt;    Declarations section of Form1 (note that each Declare statement&lt;br /&gt;    must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function GetActiveWindow Lib "User" () As Integer&lt;br /&gt;Private Declare Function GetWindowDC Lib "User" (ByVal hWnd As Integer)&lt;br /&gt;   As Integer&lt;br /&gt;Private Declare Sub GetWindowRect Lib "User" (ByVal hWnd As Integer, lpRect&lt;br /&gt;   As RECT)&lt;br /&gt;Private Declare Function ReleaseDC Lib "User" (ByVal hWnd As Integer, ByVal hDC&lt;br /&gt;   As Integer) As Integer&lt;br /&gt;Private Declare Function BitBlt% Lib "GDI" (ByVal hDestDC%, ByVal X%, ByVal Y%,&lt;br /&gt;   ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%, ByVal&lt;br /&gt;   dwRop&amp;)&lt;br /&gt;Const SRCCOPY = &amp;HCC0020&lt;br /&gt;&lt;br /&gt; 3. From the Insert menu, select Form to create a second form. Form2&lt;br /&gt;    is created by default. Set its Picture property to&lt;br /&gt;    "C:\WINDOWS\ARCHES.BMP".&lt;br /&gt; 4. From the Insert menu, select Module to create a BASIC module.&lt;br /&gt;    Module1.Bas is created by default.&lt;br /&gt; 5. Add the following Type structure to Module1.Bas:&lt;br /&gt;&lt;br /&gt;Type RECT&lt;br /&gt;    Left As Integer&lt;br /&gt;    Top As Integer&lt;br /&gt;    Right As Integer&lt;br /&gt;    Bottom As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt; 6. Add a Timer control to Form1. Timer1 is created by default.&lt;br /&gt; 7. Add a Picture Box control to Form1. Picture1 is created by&lt;br /&gt;    default. Set its AutoRedraw property to True.&lt;br /&gt; 8. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 9. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    SaveToPicture&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;10. Create a new function called SaveToPicture. Add the following code&lt;br /&gt;   to this function:&lt;br /&gt;&lt;br /&gt;Sub SaveToPicture()&lt;br /&gt;    Dim hDCCur As Long&lt;br /&gt;    Dim hWndCur As Long&lt;br /&gt;    Dim HWndOld As Long&lt;br /&gt;    Dim Tim As Double&lt;br /&gt;    Dim ThisRect As RECT&lt;br /&gt;    Dim DX As Long&lt;br /&gt;    Dim DY As Long&lt;br /&gt;&lt;br /&gt;    HWndOld = GetActiveWindow()&lt;br /&gt;    Form2.Show&lt;br /&gt;    hWndCur = Form2.hWnd&lt;br /&gt;    Tim = Timer + 0.5&lt;br /&gt;    Do&lt;br /&gt;        DoEvents&lt;br /&gt;    Loop Until Timer &gt;= Tim&lt;br /&gt;&lt;br /&gt;    hDCCur = GetWindowDC(hWndCur)&lt;br /&gt;    Call GetWindowRect(hWndCur, ThisRect)&lt;br /&gt;    DX = ThisRect.Right - ThisRect.Left + 2: DY = ThisRect.Bottom - ThisRect.Top + 2&lt;br /&gt;&lt;br /&gt;    With Picture1&lt;br /&gt;        .Width = Screen.TwipsPerPixelX * DX&lt;br /&gt;        .Height = Screen.TwipsPerPixelY * DY&lt;br /&gt;        Call BitBlt(.hDC, 0, 0, DX, DY, hDCCur, 0, 0, SRCCOPY)&lt;br /&gt;        .Picture = .Image&lt;br /&gt;    End With&lt;br /&gt;&lt;br /&gt;    Call ReleaseDC(hWndCur, hDCCur)&lt;br /&gt;    Form2.Hide&lt;br /&gt;&lt;br /&gt;    CommonDialog1.DefaultExt = "BMP"&lt;br /&gt;    CommonDialog1.DialogTitle = "Save Window As"&lt;br /&gt;    CommonDialog1.FileName = "*.BMP"&lt;br /&gt;    CommonDialog1.Action = 2&lt;br /&gt;&lt;br /&gt;    If CommonDialog1.FileName &lt;&gt; Empty Then&lt;br /&gt;        SavePicture Picture1.Picture, CommonDialog1.FileName&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;11. Add a Common Dialog control to Form1. CommonDialog1 is created by&lt;br /&gt;    default.&lt;br /&gt;&lt;br /&gt;Run this program by pressing the F5 function key. Click once on the&lt;br /&gt;command button. The ARCHES.BMP picture is displayed on Form2. Next,&lt;br /&gt;the Save File As dialog box pops up on the screen. Type a filename&lt;br /&gt;for the .BMP file and Visual Basic will save Form2's window (which&lt;br /&gt;contains the ARCHES.BMP picture) to a new bitmap file.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Bitmaps." (Product Documentation, DDKs, Windows 3.1 DDK, Device&lt;br /&gt;   Driver Adaptation Guide)&lt;br /&gt;"GetActiveWindow"; "GetWindowDC"; and "ReleaseDC." (Product&lt;br /&gt;   Documentation, SDKs, Windows 3.1 SDK, Programmer's Reference&lt;br /&gt;   Volume 2: Functions)&lt;br /&gt;Knowledge Base Q71104. "How to Use Windows BitBlt Function in Visual&lt;br /&gt;   Basic Application."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-49847408132367180?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/49847408132367180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=49847408132367180' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/49847408132367180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/49847408132367180'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-98-saving-windows-client-area-in.html' title='Tip 98: Saving a Window&apos;s Client Area in Bitmap Format'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1287248749032773505</id><published>2007-11-06T05:50:00.000-08:00</published><updated>2007-11-06T05:51:09.873-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 97: Creating a Task List</title><content type='html'>Abstract&lt;br /&gt;This article explains how you can determine what modules are currently&lt;br /&gt;running under Microsoft® Windows® and create a task list based on that&lt;br /&gt;information.&lt;br /&gt;&lt;br /&gt;Determine What Modules Are Currently Running&lt;br /&gt;The TOOLHELP.DLL dynamic-link library (.DLL) file contains two&lt;br /&gt;Windows® application programming interface (API) functions that can be&lt;br /&gt;used to create a list of modules currently loaded under Windows. These&lt;br /&gt;are the ModuleFirst and ModuleNext functions. To declare these&lt;br /&gt;functions within your program, include the following Declare&lt;br /&gt;statements in the Global Module or General Declarations section of a&lt;br /&gt;Visual Basic® form:&lt;br /&gt;&lt;br /&gt;Private Declare Function ModuleFirst Lib "toolhelp.dll" (mdlentry As&lt;br /&gt;   ModuleEntry) As Integer&lt;br /&gt;Private Declare Function ModuleNext Lib "toolhelp.dll" (mdlentry As ModuleEntry)&lt;br /&gt;   As Integer&lt;br /&gt;&lt;br /&gt;Note that each Declare statement must be typed as a single line of text.&lt;br /&gt;The ModuleFirst and ModuleNext functions are the key to traversing&lt;br /&gt;the chain of loaded modules in Windows. The ModuleFirst function fills&lt;br /&gt;the specified structure with information describing the first module&lt;br /&gt;in the list of currently loaded modules. The ModuleNext function is&lt;br /&gt;then called to find the next module in the list.&lt;br /&gt;&lt;br /&gt;The MODULEENTRY structure required by these two functions must be&lt;br /&gt;defined as follows:&lt;br /&gt;&lt;br /&gt;dwSize     The size of the structure in bytes.&lt;br /&gt;szModule   The module's name (a null-terminated string).&lt;br /&gt;hModule    The module's handle.&lt;br /&gt;wcUsage    Used by GetModuleUsage function.&lt;br /&gt;szExePath  The module.&lt;br /&gt;wNext      The window.&lt;br /&gt;&lt;br /&gt;Before you can use these two functions, however, you must initialize&lt;br /&gt;the dwSize field of the MODULEENTRY structure. This value should be&lt;br /&gt;specified as the number of bytes needed to store the information&lt;br /&gt;returned by ModuleFirst and ModuleNext.&lt;br /&gt;These functions return a value indicating the status of the function.&lt;br /&gt;The function was successful if the returned value is nonzero; the&lt;br /&gt;function was not successful (or no more modules were found in memory)&lt;br /&gt;if the value returned is zero.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to retrieve the module name and path for every&lt;br /&gt;running task under Windows. The name of each module is displayed in&lt;br /&gt;the first List Box control, while the full path of the module is&lt;br /&gt;displayed in the second List Box control.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following code to the General Declarations section of&lt;br /&gt;    Form1 (note that each Declare statement should be typed as a&lt;br /&gt;    single line of text):&lt;br /&gt;&lt;br /&gt;Private Declare Function ModuleFirst Lib "toolhelp.dll" (mdlentry As&lt;br /&gt;   ModuleEntry) As Integer&lt;br /&gt;Private Declare Function ModuleNext Lib "toolhelp.dll" (mdlentry As ModuleEntry)&lt;br /&gt;   As Integer&lt;br /&gt;&lt;br /&gt; 3. Add a Command Button control to Form1. Add the following code to&lt;br /&gt;    the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim Tmp As ModuleEntry&lt;br /&gt;    Dim Retn As Integer&lt;br /&gt;&lt;br /&gt;    Tmp.dwSize = Len(Tmp)&lt;br /&gt;    Retn = ModuleFirst(Tmp)&lt;br /&gt;    While Retn &lt;&gt; 0&lt;br /&gt;        If InStr(Tmp.szExepath, ".VBX") &lt;&gt; 0 Or InStr(Tmp.szExepath, ".DLL") &lt;&gt;&lt;br /&gt;                 0 Or InStr(Tmp.szExepath, "&gt;DRV") &lt;&gt; 0 Then&lt;br /&gt;            List1.AddItem Tmp.szModule&lt;br /&gt;            List2.AddItem Tmp.szExepath&lt;br /&gt;        End If&lt;br /&gt;        Tmp.szExepath = ""&lt;br /&gt;        Retn = ModuleNext(Tmp)&lt;br /&gt;    Wend&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt; 5. Add a second List Box control to Form1. List2 is created by&lt;br /&gt;    default.&lt;br /&gt; 6. From the Insert menu, select Module. Module1.Bas is created by&lt;br /&gt;    default.&lt;br /&gt; 7. Add the following user-defined Type to Module1.Bas:&lt;br /&gt;&lt;br /&gt;Type ModuleEntry&lt;br /&gt;    dwSize As Long&lt;br /&gt;    szModule As String * 10&lt;br /&gt;    hModule As Integer&lt;br /&gt;    wcUsage As Integer&lt;br /&gt;    szExepath As String * 256&lt;br /&gt;    wNext As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;&lt;br /&gt;Knowledge Base Q78001. "How to Get Windows Master (Task List) Using&lt;br /&gt;   Visual Basic."&lt;br /&gt;Knowledge Base Q80124. "Retrieving the Names of Simultaneous Tasks&lt;br /&gt;   Under Windows."&lt;br /&gt;"Windows Questions and Answers." (Books and Periodicals, Microsoft&lt;br /&gt;   Systems Journal, 1994 Volume 9, May 1994 Number 5)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1287248749032773505?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1287248749032773505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1287248749032773505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1287248749032773505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1287248749032773505'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-97-creating-task-list.html' title='Tip 97: Creating a Task List'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-9155921600800937727</id><published>2007-11-06T05:49:00.000-08:00</published><updated>2007-11-06T05:50:20.672-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 96: Centering a Form over Another Form</title><content type='html'>Abstract&lt;br /&gt;You can position a form so it appears centered within another form.&lt;br /&gt;This article explains how to center a form within its parent form.&lt;br /&gt;This same technique can be applied to centering controls such as&lt;br /&gt;Picture Box controls over other controls.&lt;br /&gt;&lt;br /&gt;Centering Forms in Visual Basic&lt;br /&gt;When developing an application in Visual Basic®, you may need to&lt;br /&gt;position a form so it is centered over another form. You can position&lt;br /&gt;a form in this way by using Visual Basic's Left, Top, Height, and&lt;br /&gt;Width properties.&lt;br /&gt;&lt;br /&gt;The Left property defines the position of the form's left edge and the&lt;br /&gt;Top property defines the position of the form's top edge. In the same&lt;br /&gt;manner, the Width and Height properties define how wide and high the&lt;br /&gt;form is. It is easy enough to center a form on a container by&lt;br /&gt;calculating the width and height of the form and dividing that value&lt;br /&gt;by two to center it within the control.&lt;br /&gt;To center a form within a parent form, take the width of Form1 and&lt;br /&gt;Form2, subtract these two values, and divide the result by two. Next,&lt;br /&gt;add Form1's width to the result to determine the position of Form2's&lt;br /&gt;left edge within Form1. This will center Form2 horizontally within&lt;br /&gt;Form1.&lt;br /&gt;&lt;br /&gt;In the same manner, you can center a form vertically within another&lt;br /&gt;form by using the Top and Height properties of each form, dividing by&lt;br /&gt;two, and setting Form2's Top property to the result.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to center a form over another form. After you&lt;br /&gt;run this example program by pressing the F5 function key, click the&lt;br /&gt;Command Button. The program displays Form2 centered over its "parent,"&lt;br /&gt;Form1.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Form2.Show&lt;br /&gt;    CentreFormWithParent Form2, Form1&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. From the Insert menu, select Form to create a second form. Form2&lt;br /&gt;    is created by default. Change this form's size so it is smaller&lt;br /&gt;    than Form1.&lt;br /&gt; 5. Create a new function called CreateFormWithParent. Add the&lt;br /&gt;    following code to this function:&lt;br /&gt;&lt;br /&gt;Sub CenterFormWithParent(aForm As Form, aParent As Form)&lt;br /&gt;    aForm.Left = aParent.Left + (aParent.Width - aForm.Width) / 2&lt;br /&gt;    aForm.Top = aParent.Top + (aParent.Height - aForm.Height) / 2&lt;br /&gt;    If (aForm.Left + aForm.Width) &gt; Screen.Width Then&lt;br /&gt;        aForm.Left = Screen.Width - aForm.Width&lt;br /&gt;    Else&lt;br /&gt;        If aForm.Left &lt; 0 Then aForm.Left = 0&lt;br /&gt;    End If&lt;br /&gt;    If (aForm.Top + aForm.Height) &gt; Screen.Height Then&lt;br /&gt;        aForm.Top = Screen.Height - aForm.Height&lt;br /&gt;    Else&lt;br /&gt;        If aForm.Top &lt; 0 Then aForm.Top = 0&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-9155921600800937727?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/9155921600800937727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=9155921600800937727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9155921600800937727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9155921600800937727'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-96-centering-form-over-another-form.html' title='Tip 96: Centering a Form over Another Form'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7917804700510017846</id><published>2007-11-06T05:40:00.000-08:00</published><updated>2007-11-06T05:42:08.280-08:00</updated><title type='text'>Tip 95: Deleting All Records from Every Table in a Microsoft Access Database</title><content type='html'>Abstract&lt;br /&gt;A Microsoft® Access® database may contain several tables, with each&lt;br /&gt;table holding many records. This article explains how to delete all&lt;br /&gt;records from all tables associated with a Microsoft Access database&lt;br /&gt;application.&lt;br /&gt;&lt;br /&gt;Removing Records from Tables&lt;br /&gt;There may be occasions when you need to delete all records in a table&lt;br /&gt;from a Microsoft® Access® database application. For instance, if you&lt;br /&gt;have an inventory program that contains a table of stock and another&lt;br /&gt;table of purchase orders, at the end of the year you would need to&lt;br /&gt;remove these records in preparation for the next year's information.&lt;br /&gt;To remove each record from both tables would be a tedious job.&lt;br /&gt;&lt;br /&gt;You can create an Access Basic function that will remove every record&lt;br /&gt;from the specified table. However, if your Microsoft Access database&lt;br /&gt;contains many tables, you need to process each individual table&lt;br /&gt;associated with that specific Microsoft Access database.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This example Access program shows how to delete all records from every&lt;br /&gt;table in a Microsoft Access database application. Note that this&lt;br /&gt;function also processes those table names that include space&lt;br /&gt;characters in them (Inventory Year1, for example).&lt;br /&gt;&lt;br /&gt; 1. Open the sample database ORDERS.MDB. (This database can usually be&lt;br /&gt;    found in the C:\ACCESS\SAMPAPPS directory.)&lt;br /&gt;    Note:  The example program will permanently modify this Access&lt;br /&gt;    database. Therefore, you should copy ORDERS.MDB to another&lt;br /&gt;    directory and run this program on the temporary copy of ORDERS.MDB.&lt;br /&gt; 2. From the File menu, choose New, and select Module.&lt;br /&gt; 3. Enter the following code to create the DeleteAllRecords()&lt;br /&gt;    function:&lt;br /&gt;&lt;br /&gt;Function DeleteAllRecords ()&lt;br /&gt;    Dim DB As Database&lt;br /&gt;    Dim X As Integer&lt;br /&gt;    Dim TDF As TableDef&lt;br /&gt;    DoCmd SetWarnings False&lt;br /&gt;    Set DB = CurrentDB()&lt;br /&gt;    For X = 0 To DB.TableDefs.Count - 1&lt;br /&gt;        Set TDF = DB.TableDefs(X)&lt;br /&gt;            If (TDF.Attributes And DB_SYSTEMOBJECT) = 0 Then&lt;br /&gt;                DB.Execute "Delete * From [" &amp; DB.TableDefs(X).Name &amp; "]"&lt;br /&gt;            End If&lt;br /&gt;    Next X&lt;br /&gt;    DoCmd SetWarnings True&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt; 4. From the View menu, choose Immediate Window.&lt;br /&gt; 5. In the Immediate Window, type the following line and press the ENTER key:&lt;br /&gt;&lt;br /&gt;?DeleteAllRecords()&lt;br /&gt;&lt;br /&gt;This statement will execute the DeleteAllRecords() function. After a&lt;br /&gt;short time, all records will be deleted from each table included in&lt;br /&gt;the ORDERS.MDB database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7917804700510017846?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7917804700510017846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7917804700510017846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7917804700510017846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7917804700510017846'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-95-deleting-all-records-from-every.html' title='Tip 95: Deleting All Records from Every Table in a Microsoft Access Database'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7199963929959292719</id><published>2007-11-06T05:39:00.000-08:00</published><updated>2007-11-06T05:40:29.047-08:00</updated><title type='text'>Tip 94: Using Drag-and-Drop on Multiple items in a List Box Control</title><content type='html'>Abstract&lt;br /&gt;The drag-and-drop functionality provided in many Windows®-based&lt;br /&gt;applications allows you to copy an item from one program to another&lt;br /&gt;or from one control to another control in the same application. This&lt;br /&gt;article explains how to use this drag-and-drop technique in Visual&lt;br /&gt;Basic® to copy multiple items selected in a List Box control to&lt;br /&gt;another List Box control.&lt;br /&gt;&lt;br /&gt;Dragging Multiple list Box Items&lt;br /&gt;Many Windows-based applications include drag-and-drop functionality.&lt;br /&gt;This means that you can select an item, such as an entry in a List&lt;br /&gt;Box control, click on the item, and, while holding the mouse button&lt;br /&gt;down, drag that item to another window or control and drop it on its&lt;br /&gt;new location.&lt;br /&gt;&lt;br /&gt;The example program below shows how you can add this drag-and-drop&lt;br /&gt;feature to your Visual Basic® applications. This program allows you&lt;br /&gt;to select multiple items in the source List Box control and drag the&lt;br /&gt;whole group of selected items to a second List Box control all at one&lt;br /&gt;time.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to drag several items selected in one List Box&lt;br /&gt;control to another List Box control. Run the example program by&lt;br /&gt;pressing the F5 function key. From the first List Box control, click&lt;br /&gt;the mouse on several items to select (highlight) them. While clicking&lt;br /&gt;each item, hold down the SHIFT key. When you want to drag the selected&lt;br /&gt;items to the second List Box control, click once on the first List Box&lt;br /&gt;control and hold the mouse button down while you drag the control to&lt;br /&gt;the second List Box. Release the mouse button to drop the selected&lt;br /&gt;items onto the second List Box control.&lt;br /&gt;&lt;br /&gt;While using this program, you can select the items from the first&lt;br /&gt;List Box either by holding the SHIFT key down while you click on each&lt;br /&gt;entry, or by simply clicking the mouse on each individual entry. If&lt;br /&gt;you hold the SHIFT key down when selecting entries, those entries will&lt;br /&gt;remain selected (highlighted) in the first List Box control after the&lt;br /&gt;items have been dropped onto the second List Box control. If the&lt;br /&gt;SHIFT key is not used, one of the selected items will not retain its&lt;br /&gt;selected status after the drag-and-drop operation has finished.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following code to the General Declarations section of&lt;br /&gt;    Form1:&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;Dim IG As Integer&lt;br /&gt;Dim LIG(20) As Integer&lt;br /&gt;Dim LGlobal As Long&lt;br /&gt;Const VK_SHIFT = &amp;H10&lt;br /&gt;&lt;br /&gt; 3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Dim X As Integer&lt;br /&gt;    IG = 0&lt;br /&gt;    For X = 0 To 9&lt;br /&gt;        List1.AddItem "Item #" + Str$(X)&lt;br /&gt;    Next X&lt;br /&gt;    List1.DragMode = 0&lt;br /&gt;    LGlobal = 99999&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. Add a List Box control to Form1. List1 is created by default. Set&lt;br /&gt;    its MultiSelect property to 1-Simple.&lt;br /&gt; 5. Add the following code to the MouseDown event for List1 (note that&lt;br /&gt;    the Private line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single,&lt;br /&gt;  Y As Single)&lt;br /&gt;    LGlobal = List1.ListIndex&lt;br /&gt;    For X = 1 To IG&lt;br /&gt;        List1.Selected(LIG(X)) = True&lt;br /&gt;    Next X&lt;br /&gt;    List1.Drag&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. Add a second List Box control to Form1. List2 is created by&lt;br /&gt;    default. Set its MultiSelect property to 1-Simple.&lt;br /&gt; 7. Add the following code to the DragDrop event for List2:&lt;br /&gt;&lt;br /&gt;Private Sub List2_DragDrop(Source As Control, X As Single, Y As Single)&lt;br /&gt;    For X = 0 To List1.ListCount - 1&lt;br /&gt;        If X = LGlobal Then&lt;br /&gt;            List2.AddItem List1.List(X)&lt;br /&gt;        Else&lt;br /&gt;            If List1.Selected(X) Then&lt;br /&gt;                List2.AddItem List1.List(X)&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;    Next X&lt;br /&gt;    LGlobal = 99999&lt;br /&gt;    IG = 0&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q80187. "How to Drop Item into Specified Location in&lt;br /&gt;   VB List Box."&lt;br /&gt;Tip 50: Using Drag and Drop in List Box Controls&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7199963929959292719?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7199963929959292719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7199963929959292719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7199963929959292719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7199963929959292719'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-94-using-drag-and-drop-on-multiple.html' title='Tip 94: Using Drag-and-Drop on Multiple items in a List Box Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5141206133703711400</id><published>2007-11-06T05:38:00.002-08:00</published><updated>2007-11-06T05:39:29.031-08:00</updated><title type='text'>Tip 93: Retrieving the Names of Installed Printers</title><content type='html'>Abstract&lt;br /&gt;The Windows® initialization file, WIN.INI, contains a list of all&lt;br /&gt;printers attached to the computer system. This article contains an&lt;br /&gt;example program that retrieves the name of each printer stored in the&lt;br /&gt;WIN.INI initialization file.&lt;br /&gt;&lt;br /&gt;Using GetProfileString and GetPrivateProfileString&lt;br /&gt;The Devices section of the WIN.INI initialization file contains the&lt;br /&gt;names of all printers attached to your computer system. You can&lt;br /&gt;retrieve this list of printer names by using two Windows® application&lt;br /&gt;programming interface (API) functions.&lt;br /&gt;&lt;br /&gt;The Windows API GetProfileString and GetPrivateProfileString functions&lt;br /&gt;can be used to retrieve the name of a printer as stored in the WIN.INI&lt;br /&gt;file. For a complete discussion of these functions, see the articles&lt;br /&gt;listed in the "Additional References" section of this article.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program retrieves the names of all installed printers from the&lt;br /&gt;WIN.INI initialization file. The printer names are displayed in a&lt;br /&gt;List Box control.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following Constant, Declare, and Type statements to the&lt;br /&gt;    General Declarations section of Form1 (note that each Declare&lt;br /&gt;    statement must be typed as a single line of text):&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;Private Type WindowsDevice&lt;br /&gt;   WindowsDeviceUserName As String&lt;br /&gt;   WindowsDeviceShortName As String&lt;br /&gt;   WindowsDevicePortName As String&lt;br /&gt;End Type&lt;br /&gt;Private Declare Function GetProfileString Lib "Kernel" (ByVal lpAppName&lt;br /&gt;   As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal&lt;br /&gt;   lpReturnedString As String, ByVal nSize As Integer) As Integer&lt;br /&gt;Private Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpAppName&lt;br /&gt;   As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal&lt;br /&gt;   lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As&lt;br /&gt;   String) As Integer&lt;br /&gt;Private Declare Function GetProfileKeys Lib "Kernel" Alias "GetProfileString"&lt;br /&gt;   (ByVal lpAppName As String, ByVal lpKeyName As Long, ByVal lpDefault As&lt;br /&gt;    String, ByVal lpReturnedString As String, ByVal nSize As Integer) As Integer&lt;br /&gt;Private Declare Function GetPrivateProfileKeys Lib "Kernel" Alias&lt;br /&gt;   "GetPrivateProfileString" (ByVal lpAppName As String, ByVal lpKeyName As&lt;br /&gt;   Long, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal&lt;br /&gt;   nSize As Integer, ByVal lpFileName As String) As Integer&lt;br /&gt;&lt;br /&gt;Const WINDOWS_SECTION_NAME = "windows"&lt;br /&gt;Const DEVICES_SECTION_NAME = "devices"&lt;br /&gt;Const DEVICE_KEY_NAME = "device"&lt;br /&gt;Const NO_PRINTER = "(none)"&lt;br /&gt;&lt;br /&gt; 3. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt; 4. Add a Command Button control to Form1. Command1 is created by default.&lt;br /&gt; 5. Add the following code to the Click event for Command1 (note that the&lt;br /&gt;    List1.AddItem statement must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim OrgPrinter As WindowsDevice&lt;br /&gt;    Call GetDefaultPrinter(OrgPrinter)&lt;br /&gt;    Text1.Text = OrgPrinter.WindowsDeviceUserName&lt;br /&gt;    Dim NumPrinters As Integer&lt;br /&gt;    ReDim InstalledPrinters(0) As WindowsDevice&lt;br /&gt;    Call GetInstalledPrinters(InstalledPrinters())&lt;br /&gt;    For NumPrinters = 1 To UBound(InstalledPrinters)&lt;br /&gt;        List1.AddItem InstalledPrinters(NumPrinters).WindowsDeviceUserName + "&lt;br /&gt;          on " + InstalledPrinters(NumPrinters).WindowsDevicePortName&lt;br /&gt;    Next&lt;br /&gt;    List1.AddItem NO_PRINTER, 0&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. Create a new function called GetDefaultPrinter. Add the following&lt;br /&gt;    code to this function:&lt;br /&gt;&lt;br /&gt;Private Sub GetDefaultPrinter(recDefaultPrinter As WindowsDevice)&lt;br /&gt;    Dim StrPos As Integer&lt;br /&gt;    Dim DefaultPrinter As String&lt;br /&gt;    Dim RC As Integer&lt;br /&gt;    DefaultPrinter = GetString(WINDOWS_SECTION_NAME, DEVICE_KEY_NAME, "", "")&lt;br /&gt;    StrPos = InStr(DefaultPrinter, ",")&lt;br /&gt;    recDefaultPrinter.WindowsDeviceUserName = Left$(DefaultPrinter, StrPos - 1)&lt;br /&gt;    DefaultPrinter = Mid$(DefaultPrinter, StrPos + 1)&lt;br /&gt;    StrPos = InStr(DefaultPrinter, ",")&lt;br /&gt;    recDefaultPrinter.WindowsDeviceShortName = Left$(DefaultPrinter, StrPos - 1)&lt;br /&gt;    recDefaultPrinter.WindowsDevicePortName = Mid$(DefaultPrinter, StrPos + 1)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 7. Create a new function called GetInstalledPrinter. Add the&lt;br /&gt;    following code to this function (note that the InstalledPrinter&lt;br /&gt;    lines must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub GetInstalledPrinters(recInstalledPrinters() As WindowsDevice)&lt;br /&gt;    Dim StrPos As Integer&lt;br /&gt;    Dim PrtSub As Integer&lt;br /&gt;    Dim InstalledPrinter As String&lt;br /&gt;    ReDim PrinterNames(0) As String&lt;br /&gt;    Call GetKeyNames(DEVICES_SECTION_NAME, PrinterNames(), "")&lt;br /&gt;    ReDim recInstalledPrinters(UBound(PrinterNames))&lt;br /&gt;    For PrtSub = 1 To UBound(PrinterNames)&lt;br /&gt;        InstalledPrinter = GetString(DEVICES_SECTION_NAME, PrinterNames(PrtSub),&lt;br /&gt;            "", "")&lt;br /&gt;        StrPos = InStr(InstalledPrinter, ",")&lt;br /&gt;        recInstalledPrinters(PrtSub).WindowsDeviceUserName =&lt;br /&gt;            PrinterNames(PrtSub)&lt;br /&gt;        recInstalledPrinters(PrtSub).WindowsDeviceShortName =&lt;br /&gt;            Left$(InstalledPrinter, StrPos - 1)&lt;br /&gt;        InstalledPrinter = Mid$(InstalledPrinter, StrPos + 1)&lt;br /&gt;        StrPos = InStr(InstalledPrinter, ",")&lt;br /&gt;        If StrPos &gt; 0 Then&lt;br /&gt;            recInstalledPrinters(PrtSub).WindowsDevicePortName =&lt;br /&gt;               Left$(InstalledPrinter, StrPos - 1)&lt;br /&gt;        Else&lt;br /&gt;            recInstalledPrinters(PrtSub).WindowsDevicePortName =&lt;br /&gt;               InstalledPrinter&lt;br /&gt;        End If&lt;br /&gt;    Next&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 8. Create a new function called GetString. Add the following code to&lt;br /&gt;    this function (note that the Function and KeyValueLength lines&lt;br /&gt;    must each be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Function GetString(SectionName As String, KeyName As String, DefaultValue&lt;br /&gt;   As String, ProfileName As String) As String&lt;br /&gt;    Dim KeyValueLength As Integer&lt;br /&gt;    Dim KeyValue As String&lt;br /&gt;    KeyValue = Space$(256)&lt;br /&gt;    If Trim$(ProfileName) = "" Then&lt;br /&gt;        KeyValueLength = GetProfileString(SectionName, KeyName, DefaultValue,&lt;br /&gt;           KeyValue, Len(KeyValue))&lt;br /&gt;    Else&lt;br /&gt;        KeyValueLength = GetPrivateProfileString(SectionName, KeyName,&lt;br /&gt;           DefaultValue, KeyValue, Len(KeyValue), ProfileName)&lt;br /&gt;    End If&lt;br /&gt;    GetString = Left$(KeyValue, KeyValueLength)&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt; 9. Create a new function called GetKeyName. Add the following code&lt;br /&gt;    to this function (note that the Sub and KeyNamesLength lines must&lt;br /&gt;    each be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Sub GetKeyNames(SectionName As String, KeyNames() As String, ProfileName&lt;br /&gt;   As String)&lt;br /&gt;    Dim StrPos As Integer&lt;br /&gt;    Dim KeyCount As Integer&lt;br /&gt;    Dim Start As Integer&lt;br /&gt;    Dim KeyNamesLength As Integer&lt;br /&gt;    Dim KeyNameString As String&lt;br /&gt;    KeyNameString = Space$(1024)&lt;br /&gt;    If Trim$(ProfileName) = "" Then&lt;br /&gt;        KeyNamesLength = GetProfileKeys(SectionName, 0, "", KeyNameString,&lt;br /&gt;            Len(KeyNameString))&lt;br /&gt;    Else&lt;br /&gt;        KeyNamesLength = GetPrivateProfileKeys(SectionName, 0, "",&lt;br /&gt;            KeyNameString, Len(KeyNameString), ProfileName)&lt;br /&gt;    End If&lt;br /&gt;    KeyCount = 0&lt;br /&gt;    ReDim KeyNames(0)&lt;br /&gt;    If KeyNamesLength &gt; 0 Then&lt;br /&gt;        KeyNameString = Left$(KeyNameString, KeyNamesLength)&lt;br /&gt;        If Right$(KeyNameString, 1) &lt;&gt; Chr$(0) Then&lt;br /&gt;            KeyNameString = KeyNameString + Chr$(0)&lt;br /&gt;        End If&lt;br /&gt;        KeyNamesLength = Len(KeyNameString)&lt;br /&gt;        Start = 1&lt;br /&gt;        Do&lt;br /&gt;            StrPos = InStr(Start, KeyNameString, Chr$(0))&lt;br /&gt;            If StrPos &gt; 0 Then&lt;br /&gt;                KeyCount = KeyCount + 1&lt;br /&gt;                ReDim Preserve KeyNames(KeyCount)&lt;br /&gt;                KeyNames(KeyCount) = Mid$(KeyNameString, Start, StrPos - Start)&lt;br /&gt;                If StrPos &lt; KeyNamesLength Then&lt;br /&gt;                    Start = StrPos + 1&lt;br /&gt;                Else&lt;br /&gt;                    Exit Do&lt;br /&gt;&lt;br /&gt;               End If&lt;br /&gt;            Else&lt;br /&gt;                Exit Do&lt;br /&gt;            End If&lt;br /&gt;        Loop&lt;br /&gt;        End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the example program by pressing the F5 function key. Click the&lt;br /&gt;Command Button control. The name of the default printer is displayed&lt;br /&gt;in the Text Box control, and a list of all installed printers is&lt;br /&gt;displayed in the List Box control.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q105839. "Changing WIN.INI Printer Settings from VB&lt;br /&gt;   using Windows API."&lt;br /&gt;"Accessing Initialization Files." (Books and Periodicals, Inside&lt;br /&gt;   Visual Basic Articles [Cobb])&lt;br /&gt;"Querying Windows for Printer Information." (Books and Periodicals,&lt;br /&gt;   Inside Visual Basic Articles [Cobb])&lt;br /&gt;Tip 30: Retrieving the Default Printer's Name from WIN.INI&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5141206133703711400?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5141206133703711400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5141206133703711400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5141206133703711400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5141206133703711400'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-93-retrieving-names-of-installed.html' title='Tip 93: Retrieving the Names of Installed Printers'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8441479893787724767</id><published>2007-11-06T05:38:00.001-08:00</published><updated>2007-11-06T05:38:46.363-08:00</updated><title type='text'>Tip 92: Using the Shell Statement to Execute MS-DOS Programs</title><content type='html'>Abstract&lt;br /&gt;From within a Visual Basic® application, you can execute an MS-DOS®&lt;br /&gt;program. This article explains how to use the Shell statement in&lt;br /&gt;conjunction with the Windows® application programming interface (API)&lt;br /&gt;GetNumTasks function to execute an MS-DOS program.&lt;br /&gt;&lt;br /&gt;Running MS-DOS Programs&lt;br /&gt;A very popular set of utilities called PKZIP and PKUNZIP can be found&lt;br /&gt;on bulletin board systems throughout the world. These two utilities&lt;br /&gt;are used to compress and decompress a group of related files. The&lt;br /&gt;resulting ZIP file can then be distributed as one single entity.&lt;br /&gt;Because these programs are used by people daily, you may need to allow&lt;br /&gt;your user to execute these MS-DOS programs (or an entirely different&lt;br /&gt;MS-DOS program) from within your Visual Basic® application program.&lt;br /&gt;&lt;br /&gt;Visual Basic's Shell function can be used to execute another program.&lt;br /&gt;To run a program, you would issue the statement:&lt;br /&gt;&lt;br /&gt;X = Shell("program name",[windowstate]])&lt;br /&gt;&lt;br /&gt;The program name must be a valid MS-DOS or Windows®-based-application&lt;br /&gt;name and may optionally include any command-line parameters needed by&lt;br /&gt;the program. The second parameter tells Visual Basic how to execute&lt;br /&gt;the program. There are five possible values for this argument, as&lt;br /&gt;follows:&lt;br /&gt;&lt;br /&gt;1 Normal size, program retains focus&lt;br /&gt;2 Minimized, program retains focus&lt;br /&gt;3 Maximized, program retains focus&lt;br /&gt;4 Normal size, Visual Basic application retains focus&lt;br /&gt;5 Minimized, program does not retain focus&lt;br /&gt;&lt;br /&gt;While the MS-DOS program is executing, you can use the SendKeys&lt;br /&gt;statement to send specific keystrokes to the application. In this&lt;br /&gt;manner, you can actually control what the MS-DOS program does or&lt;br /&gt;provide some required input.&lt;br /&gt;In addition, you can determine when the secondary program has&lt;br /&gt;terminated by using the GetNumTasks function. To use the GetNumTasks&lt;br /&gt;function in your Visual Basic application, you must include the&lt;br /&gt;following Declare statement in the Global Module or General&lt;br /&gt;Declarations section of your form:&lt;br /&gt;&lt;br /&gt;Private Declare Function GetNumTasks Lib "Kernel" () As Integer&lt;br /&gt;&lt;br /&gt;The GetNumTasks function does not require any arguments but simply&lt;br /&gt;returns an integer value set to the number of tasks that are currently&lt;br /&gt;running under Windows. Therefore, to determine when your MS-DOS&lt;br /&gt;program has finished executing, call GetNumTasks first, saving the&lt;br /&gt;value it returns in a variable. After the MS-DOS program has finished&lt;br /&gt;executing, call the GetNumTasks function a second time to find out if&lt;br /&gt;the number of tasks has decreased by a value of one. If the value has&lt;br /&gt;decreased, you know that your MS-DOS program has finished executing&lt;br /&gt;and you can return control to your Visual Basic application.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how you can use the Shell function and the&lt;br /&gt;GetNumTasks function to execute an MS-DOS program. This program&lt;br /&gt;assumes that you have the PKUNZIP program stored in the UTILS&lt;br /&gt;directory and that you have previously created a destination&lt;br /&gt;directory called DESTDIR on your hard drive.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following statements to the General Declarations section&lt;br /&gt;    of Form1:&lt;br /&gt;&lt;br /&gt;Dim ActiveApps As Integer&lt;br /&gt;Private Declare Function GetNumTasks Lib "Kernel" () As Integer&lt;br /&gt;&lt;br /&gt; 3. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim AppDir As String&lt;br /&gt;    Dim Zip As String&lt;br /&gt;    Dim Y As Integer&lt;br /&gt;    Dim X As Integer&lt;br /&gt;&lt;br /&gt;    AppDir = "c:\destdir"&lt;br /&gt;    ActiveApps = GetNumTasks()&lt;br /&gt;&lt;br /&gt;    Zip = "c:\utils\pkunzip " &amp; "c:\destdir\" &amp; "test.zip" &amp; " " &amp; AppDir&lt;br /&gt;    X = Shell(Zip, 2)&lt;br /&gt;    SendKeys "%{enter}EXIT%{ }n"&lt;br /&gt;&lt;br /&gt;    Do While GetNumTasks() &lt;&gt; ActiveApps&lt;br /&gt;        Y = DoEvents()&lt;br /&gt;    Loop&lt;br /&gt;    MsgBox "Pkunzip is finished", 0, "Demo Program"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q96844. "How to Determine When a Shelled Process Has&lt;br /&gt;   Terminated."&lt;br /&gt;"SendKeys Statement." (Product Documentation, Office Developer's&lt;br /&gt;   Kit 1.0, Visual Basic 3.0 Professional Edition, Language Reference)&lt;br /&gt;"Shell Function." (Product Documentation, Office Developer's&lt;br /&gt;   Kit 1.0, Visual Basic 3.0 Professional Edition, Language Reference)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8441479893787724767?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8441479893787724767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8441479893787724767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8441479893787724767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8441479893787724767'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-92-using-shell-statement-to-execute.html' title='Tip 92: Using the Shell Statement to Execute MS-DOS Programs'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2672078593600698105</id><published>2007-11-06T05:37:00.002-08:00</published><updated>2007-11-06T05:38:08.970-08:00</updated><title type='text'>Tip 91: Determining If a Form Is Loaded</title><content type='html'>Abstract&lt;br /&gt;A Visual Basic® application may contain many different forms. This&lt;br /&gt;article presents a function that can be used to determine if a form is&lt;br /&gt;currently loaded into memory.&lt;br /&gt;&lt;br /&gt;Is the Form Loaded in Memory?&lt;br /&gt;Because a Visual Basic® application can contain several forms, you&lt;br /&gt;need to be able to determine if a form is actually loaded into memory.&lt;br /&gt;The function presented in the example program below tests to see if a&lt;br /&gt;form is loaded. This function will not load the form it simply tests&lt;br /&gt;to see if it is already in memory.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to find out if a specific form is already&lt;br /&gt;loaded in a running Visual Basic application.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. From the Insert menu, select Form. Form2 is created by default.&lt;br /&gt; 3. From the Insert menu, select Form. Form3 is created by default.&lt;br /&gt; 4. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 6. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim X As Integer&lt;br /&gt;    X = IsFormLoaded(Form2)&lt;br /&gt;    If X Then&lt;br /&gt;        MsgBox "Form2 is loaded"&lt;br /&gt;    End If&lt;br /&gt;    X = IsFormLoaded(Form3)&lt;br /&gt;    If X = False Then&lt;br /&gt;        MsgBox "Form3 is not loaded"&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 7. Create a new function called IsFormLoaded. Add the following code&lt;br /&gt;    to this function:&lt;br /&gt;&lt;br /&gt;Function IsFormLoaded(FormToCheck As Form) As Integer&lt;br /&gt;    Dim Y As Integer&lt;br /&gt;    For Y = 0 To Forms.Count - 1&lt;br /&gt;        If Forms(Y) Is FormToCheck Then&lt;br /&gt;            IsFormLoaded = True&lt;br /&gt;            Exit Function&lt;br /&gt;        End If&lt;br /&gt;    Next&lt;br /&gt;    IsFormLoaded = False&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;When you run this program, click the Command Button. A message box&lt;br /&gt;will pop up on the screen displaying the "Form2 is loaded" message.&lt;br /&gt;Click the OK command button. A second message box is immediately shown&lt;br /&gt;displaying the "Form3 is not loaded" message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2672078593600698105?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2672078593600698105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2672078593600698105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2672078593600698105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2672078593600698105'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-91-determining-if-form-is-loaded.html' title='Tip 91: Determining If a Form Is Loaded'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1513343394715366146</id><published>2007-11-06T05:37:00.001-08:00</published><updated>2007-11-06T05:37:22.718-08:00</updated><title type='text'>Tip 90: Adding ToolTips to Visual Basic applications</title><content type='html'>Abstract&lt;br /&gt;Many Windows®-based applications have a toolbox from which you can&lt;br /&gt;select a command to execute. When you move the cursor (mouse pointer)&lt;br /&gt;over an item in the toolbox, a ToolTip is displayed. This article&lt;br /&gt;shows how to add this ToolTip help feature to your own Visual Basic®&lt;br /&gt;applications.&lt;br /&gt;&lt;br /&gt;Creating ToolTips in Visual Basic&lt;br /&gt;You can create a more professional-looking Visual Basic® application&lt;br /&gt;if you include the ToolTips that are featured in the newest version of&lt;br /&gt;Microsoft® Word. ToolTips are small, yellow description "balloons"&lt;br /&gt;that pop up on your screen when your cursor (mouse pointer) is over a&lt;br /&gt;control. The ToolTip usually contains a short descriptive word or&lt;br /&gt;phrase that describes the control's underlying purpose. It makes&lt;br /&gt;memorizing what icons do a thing of the past.&lt;br /&gt;&lt;br /&gt;The example program below shows the code you need to add to your&lt;br /&gt;application to create and use ToolTips. Let's assume that you want to&lt;br /&gt;add a Command Button control to your form. In the Tag property of the&lt;br /&gt;Command Button control you place the text that you want displayed when&lt;br /&gt;the user moves the cursor over the control. This descriptive text can&lt;br /&gt;be as long as you like, but keep in mind that the shorter the&lt;br /&gt;description, the better. The AutoSize property of the Picture Box&lt;br /&gt;control must be set to True so that when the program is running, the&lt;br /&gt;Picture Box will size itself according to the length of the&lt;br /&gt;descriptive text you entered in the Tag property.&lt;br /&gt;&lt;br /&gt;Next, you need to tell your Visual Basic application when to display&lt;br /&gt;the ToolTips description. In the MouseMove event, you want to call&lt;br /&gt;the ToolTips function with the statement:&lt;br /&gt;ToolTip Me, Command1, True&lt;br /&gt;where "Me" is the form the control resides on, "Command1" is the name&lt;br /&gt;of the individual control, and True means you want to display the&lt;br /&gt;ToolTip for this control. If you don't want to display a ToolTip for&lt;br /&gt;this particular control, set the last argument to False. This is done&lt;br /&gt;in the form's MoveMove event so that no ToolTip is ever displayed&lt;br /&gt;while the cursor is over the form itself. Once the Timer's interval&lt;br /&gt;has elapsed, the ToolTip will be displayed for that control.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how to add ToolTips to a Visual Basic application.&lt;br /&gt;Press the F5 function key to run the example program. You will see a&lt;br /&gt;Command Button control and a Text Box control on the form. Move the&lt;br /&gt;cursor over the Command Button and the ToolTip message "A command&lt;br /&gt;button control to click on" will be displayed. Move the cursor over&lt;br /&gt;the Text Box control and the ToolTip message "A text box control" will&lt;br /&gt;be displayed.&lt;br /&gt;&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;    Timer1.Enabled = True&lt;br /&gt;    ToolTips Me, ToolTip, False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 3. Add the following code to the MouseMove event for Form1 (note that&lt;br /&gt;    the Private line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Form_MouseMove(Button As Integer, Shift As Integer,&lt;br /&gt;   X As Single, Y As Single)&lt;br /&gt;    ToolTips Me, ToolTip, False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 4. Add a Timer control to Form1. Timer1 is created by default. Set&lt;br /&gt;    its Interval property to 1.&lt;br /&gt; 5. Add the following code to the Timer_Event for Timer1:&lt;br /&gt;&lt;br /&gt;Private Sub Timer1_Timer()&lt;br /&gt;      ToolTip.Visible = True&lt;br /&gt;      ToolTip.ZOrder 0   &lt;br /&gt;      Timer1.Enabled = False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 6. Add a Picture Box control to Form1. Picture1 is created by&lt;br /&gt;    default. Set the following properties for Picture1:&lt;br /&gt;&lt;br /&gt;AutoSize   True&lt;br /&gt;BackColor  &amp;H0000FFFF&amp; (yellow)&lt;br /&gt;Height     255&lt;br /&gt;Left       480&lt;br /&gt;Name       ToolTip&lt;br /&gt;Top        480&lt;br /&gt;Visible    False&lt;br /&gt;Width      975&lt;br /&gt;&lt;br /&gt; 7. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default. Set its Tag property to "A command button control to&lt;br /&gt;    click on".&lt;br /&gt; 8. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    ToolTips Me, Command1, False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 9. Add the following code to the MouseMove event for Command1 (note&lt;br /&gt;    that the Private line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Command1_MouseMove(Button As Integer, Shift As Integer,&lt;br /&gt;   X As Single, Y As Single)&lt;br /&gt;    ToolTips Me, Command1, True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;10. Add a Text Box control to Form1. Text1 is created by default. Set&lt;br /&gt;    its Tag property to "A text box".&lt;br /&gt;11. Add the following code to the Click event for Text1:&lt;br /&gt;&lt;br /&gt;Private Sub Text1_Click()&lt;br /&gt;    ToolTips Me, Text1, False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;12. Add the following code to the MouseMove event for Text1 (note that&lt;br /&gt;    the Private line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Text1_MouseMove(Button As Integer, Shift As Integer,&lt;br /&gt;   X As Single, Y As Single)&lt;br /&gt;    ToolTips Me, Text1, True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;13. Create a new function called ToolTips. Add the following code to&lt;br /&gt;    this function:&lt;br /&gt;&lt;br /&gt;Sub ToolTips(Frm As Form, Ctl As Control, OnOff As Integer)&lt;br /&gt; If OnOff Then&lt;br /&gt;   Frm.ToolTip.Cls&lt;br /&gt;   Frm.ToolTip.Print " " &amp; Ctl.Tag &amp; " "&lt;br /&gt;   Frm.ToolTip.Width = Frm.ToolTip.TextWidth(Ctl.Tag &amp; "  ")&lt;br /&gt;   If Ctl.Top + Ctl.Height + Frm.ToolTip.Height + 40 &lt; Frm.ScaleHeight Then&lt;br /&gt;      Frm.ToolTip.Top = Ctl.Top + Ctl.Height + 40&lt;br /&gt;   Else&lt;br /&gt;      Frm.ToolTip.Top = Ctl.Top - Frm.ToolTip.Height - 40&lt;br /&gt;   End If&lt;br /&gt;   If Ctl.Left + Frm.ToolTip.Width &lt; Frm.ScaleWidth Then&lt;br /&gt;      Frm.ToolTip.Left = Ctl.Left&lt;br /&gt;   Else&lt;br /&gt;      Frm.ToolTip.Left = Ctl.Left - Frm.ToolTip.Width + Ctl.Width&lt;br /&gt;   End If&lt;br /&gt;   Frm.Timer1.Enabled = True&lt;br /&gt; Else&lt;br /&gt;   Frm.ToolTip.Visible = False&lt;br /&gt;   Frm.ToolTip.ZOrder 1  &lt;br /&gt;   Frm.Timer1.Enabled = False&lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q111495. "How to Implement ToolTips Help in Visual&lt;br /&gt;   Basic applications."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1513343394715366146?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1513343394715366146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1513343394715366146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1513343394715366146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1513343394715366146'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-90-adding-tooltips-to-visual-basic.html' title='Tip 90: Adding ToolTips to Visual Basic applications'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3788080183553320939</id><published>2007-11-06T05:30:00.000-08:00</published><updated>2007-11-06T05:31:36.301-08:00</updated><title type='text'>Tip 89: Invoking the Microsoft Word Page Setup Dialog Box</title><content type='html'>Abstract&lt;br /&gt;From within a Visual Basic® application, you can instruct Microsoft®&lt;br /&gt;Word to display its Page Setup dialog box. This article explains how&lt;br /&gt;this task can be accomplished by creating a Word Basic macro and&lt;br /&gt;executing that macro from within Visual Basic.&lt;br /&gt;&lt;br /&gt;Calling Word Basic Macros from Within Visual Basic&lt;br /&gt;You can execute a Word Basic macro from within a Visual Basic®&lt;br /&gt;application to perform any number of tasks. The example program below&lt;br /&gt;executes Microsoft® Word and opens up a new document page. Then the&lt;br /&gt;program calls a Word Basic macro, FPSdlg, to display the Word Page&lt;br /&gt;Setup dialog box.&lt;br /&gt;&lt;br /&gt;In order to execute Word from within a Visual Basic application, you&lt;br /&gt;must initiate a connection to Word. This is done by calling the&lt;br /&gt;CreateObject function. This function lets you create an OLE object,&lt;br /&gt;in this case Microsoft Word. When this function is executed, it runs&lt;br /&gt;Word if it is not already running in memory. To transfer control to&lt;br /&gt;Word, you can use the AppActivate function.&lt;br /&gt;The next step is to call the Word Basic macro that you have&lt;br /&gt;previously created in Word. In your Visual Basic program, you execute&lt;br /&gt;a Word Basic command with the Object.Method syntax. For example, after&lt;br /&gt;executing Word, we want to start with a new document. Therefore, we&lt;br /&gt;issue the statement wobjApp.FileNewDefault, where the object has been&lt;br /&gt;defined as Word and FileNewDefault is the Basic command we want to&lt;br /&gt;execute. A list of these Word Basic commands can be found in the&lt;br /&gt;WRDBASIC.HLP file that is stored in the Word directory when you&lt;br /&gt;initially installed Microsoft Word.&lt;br /&gt;&lt;br /&gt;After the new document screen has been displayed in Word, we want to&lt;br /&gt;actually execute the Word Basic macro called CallFPS. To do this, we&lt;br /&gt;again issue a Word Basic command called ToolsMacro. This command&lt;br /&gt;executes the specified macro file in Word. When the macro has been&lt;br /&gt;terminated, we can close Word and return to our Visual Basic program&lt;br /&gt;by issuing the Set wobjApp=Nothing statement. This statement removes&lt;br /&gt;the object variable, which in turn causes Word to terminate.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The following example program shows how you can invoke a Word Basic&lt;br /&gt;macro to call up the Word Page Setup dialog box.&lt;br /&gt;First, you must create the Word Basic macro that the Visual Basic&lt;br /&gt;program will call. Start Word. From the Tools menu, select Macro. Type&lt;br /&gt;the name of the macro as FPSdlg and click the Create command button.&lt;br /&gt;Type the following as the macro's text. When you're done, save the&lt;br /&gt;macro so that it can be used by all newly created Word documents.&lt;br /&gt;&lt;br /&gt;Sub Main&lt;br /&gt;    Dim FPSdlg as FilePageSetup&lt;br /&gt;    GetCurValues FPSdlg&lt;br /&gt;    rc = Dialog(FPSdlg)&lt;br /&gt;    If rc &lt;&gt; 0 then&lt;br /&gt;        FilePageSetup FPSdlg&lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;At this point, make sure the macro actually works from within Word.&lt;br /&gt;From the Tools menu, select Macro. Click the name of the macro you&lt;br /&gt;want to execute in this case, the FPSdlg macro. Click the Run command&lt;br /&gt;button. Word should respond by popping up the Page Setup dialog box.&lt;br /&gt;Click the Cancel button to return to the document screen. Exit Word.&lt;br /&gt;&lt;br /&gt;Now, you need to create the demonstration program in Visual Basic by&lt;br /&gt;following these steps:&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default.&lt;br /&gt; 3. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim wobjApp As Object&lt;br /&gt;    Set wobjApp = CreateObject("word.basic")&lt;br /&gt;    AppActivate "Microsoft Word"&lt;br /&gt;    wobjApp.FileNewDefault&lt;br /&gt;    wobjApp.ToolsMacro "CallFPS", True&lt;br /&gt;    Set wobjApp = Nothing&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;To run the example program, press the F5 function key. Click the&lt;br /&gt;command button. After a few seconds, Word will be executed and the&lt;br /&gt;FPSdlg macro will also be executed. The program stops after it has&lt;br /&gt;displayed the Page Setup dialog box in Word. Click the Cancel command&lt;br /&gt;button and you will be returned to Visual Basic's design environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q115782. "How to Have a VB Program Change a Word&lt;br /&gt;   Document's Page Layout."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3788080183553320939?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3788080183553320939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3788080183553320939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3788080183553320939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3788080183553320939'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-89-invoking-microsoft-word-page.html' title='Tip 89: Invoking the Microsoft Word Page Setup Dialog Box'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2941104160503691775</id><published>2007-11-06T05:28:00.000-08:00</published><updated>2007-11-06T05:32:01.397-08:00</updated><title type='text'>Tip 88: Shrinking Icons Down to Size</title><content type='html'>Abstract&lt;br /&gt;You can use the Windows® application programming interface (API)&lt;br /&gt;BitBlt function to modify the size of an icon. This article explains&lt;br /&gt;how to enlarge or shrink an icon.&lt;br /&gt;&lt;br /&gt;Modifying an Icon's Size&lt;br /&gt;You can use the Windows® application programming interface (API)&lt;br /&gt;BitBlt function to create an icon that is smaller or larger than the&lt;br /&gt;original icon. The BitBlt function copies a memory device context to&lt;br /&gt;another memory device context. (A memory device context is a block of&lt;br /&gt;memory that represents a display surface, such as an Image or Picture&lt;br /&gt;Box control. See Tip 31: "Creating the Windows Wallpaper Effect for a&lt;br /&gt;complete explanation of the BitBlt function.)&lt;br /&gt;&lt;br /&gt;In the example program below, we first load an icon into an Image&lt;br /&gt;control. Then we modify the Image control's Height and Width&lt;br /&gt;properties so the icon becomes 75 percent smaller than its original&lt;br /&gt;size. The BitBlt function is then used to copy the icon stored in the&lt;br /&gt;Image control to the Picture Box control.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt; 2. Add the following Constant and Declare statements to the General&lt;br /&gt;    Declarations section of Form1 (note that the Declare statement&lt;br /&gt;    must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function BitBlt Lib "GDI" (ByVal hDestDC As Integer,&lt;br /&gt;   ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer,&lt;br /&gt;   ByVal nHeight As Integer, ByVal hSrcDC As Integer,&lt;br /&gt;   ByVal XSrc As Integer, ByVal YSrc As Integer,&lt;br /&gt;   ByVal dwRop As Long) As Integer&lt;br /&gt;Const SRCCOPY = &amp;HCC0020&lt;br /&gt;&lt;br /&gt; 3. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;    default. Set its Caption property to "Shrink Icon".&lt;br /&gt; 4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;    Dim X As Integer&lt;br /&gt;    Dim Y As Integer&lt;br /&gt;    Dim W As Integer&lt;br /&gt;    Dim H As Integer&lt;br /&gt;    Dim Ret As Integer&lt;br /&gt;&lt;br /&gt;    Image1 = LoadPicture("c:\vb\icons\misc\binoculr.ico")&lt;br /&gt;    Image1.Width = 0.75 * Image1.Width&lt;br /&gt;    Image1.Height = 0.75 * Image1.Height&lt;br /&gt;    Picture1.Width = Image1.Width&lt;br /&gt;    Picture1.Height = Image1.Height&lt;br /&gt;&lt;br /&gt;    X = Image1.Left / Screen.TwipsPerPixelX&lt;br /&gt;    Y = Image1.Top / Screen.TwipsPerPixelY&lt;br /&gt;&lt;br /&gt;    W = Picture1.Width / Screen.TwipsPerPixelX&lt;br /&gt;    H = Picture1.Height / Screen.TwipsPerPixelY&lt;br /&gt;&lt;br /&gt;    Ret = BitBlt(Picture1.hDC, 0, 0, W, H, Form1.hDC, X, Y, SRCCOPY)&lt;br /&gt;    Picture1.Refresh&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt; 5. Add an Image control to Form1. Image1 is created by default. Set&lt;br /&gt;    its Stretch property to True.&lt;br /&gt; 6. Add a Picture Box control to Form1. Picture1 is created by&lt;br /&gt;    default. Set its AutoRedraw property to True.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q71104. "How to Use Windows BitBlt Function in Visual&lt;br /&gt;   Basic Application."&lt;br /&gt;Knowledge Base Q80670. "How to Copy Entire Screen into a Picture Box&lt;br /&gt;   in Visual Basic."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2941104160503691775?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2941104160503691775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2941104160503691775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2941104160503691775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2941104160503691775'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/tip-88-shrinking-icons-down-to-size_06.html' title='Tip 88: Shrinking Icons Down to Size'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2124108335739540711</id><published>2007-11-05T01:03:00.000-08:00</published><updated>2007-11-05T01:04:02.136-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code snippets'/><title type='text'>CheckTime</title><content type='html'>'convert (most of) any &lt;br /&gt;input&lt;br /&gt; to a time&lt;br /&gt;&lt;br /&gt;Public Function CheckTijd(bron$) As Date&lt;br /&gt;    &lt;br /&gt;dim&lt;br /&gt; t%&lt;br /&gt;    'checking &lt;br /&gt;on&lt;br /&gt; digits and seperator&lt;br /&gt;    Const Getal$ = "1234567890.:"   &lt;br /&gt;    &lt;br /&gt;    For t% = 1 To Len(bron$)&lt;br /&gt;        If InStr(Getal$, Mid$(bron$, t%, 1)) = 0 Then &lt;br /&gt;exit&lt;br /&gt; Function&lt;br /&gt;        If Mid$(bron$, t%, 1) = "." Then bron$ = Left$(bron$, t% - 1) &amp; ":" &amp; Right$(bron$, Len(bron$) - t%)&lt;br /&gt;    Next t%&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;select&lt;br /&gt; &lt;br /&gt;case&lt;br /&gt; Len(bron$)&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 0&lt;br /&gt;        &lt;br /&gt;exit&lt;br /&gt; Function&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 1&lt;br /&gt;        bron$ = "0" &amp; bron$ &amp; ":00"&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 2&lt;br /&gt;        bron$ = bron$ &amp; ":00"&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 3&lt;br /&gt;        t% = InStr(bron$, ":")&lt;br /&gt;        If t% = 0 Then _&lt;br /&gt;            bron$ = Left$(bron$, 1) &amp; ":" &amp; Right$(bron$, 2)&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 4&lt;br /&gt;        t% = InStr(bron$, ":")&lt;br /&gt;        If t% = 0 Then _&lt;br /&gt;            bron$ = Left$(bron$, 2) &amp; ":" &amp; Right$(bron$, 2)&lt;br /&gt;    &lt;br /&gt;case&lt;br /&gt; 5&lt;br /&gt;        bron$ = Left$(bron$, 2) &amp; ":" &amp; Right$(bron$, 2)&lt;br /&gt;    &lt;br /&gt;end&lt;br /&gt; Select&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;on&lt;br /&gt; Error Resume Next&lt;br /&gt;    CheckTijd = TimeValue(bron$)&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;'use it in the Text_Lostfocus event like&lt;br /&gt;&lt;br /&gt;Sub Text1_LostFocus&lt;br /&gt; Text1.Text = CheckTijd(Text1.Text)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;'giving the &lt;br /&gt;input&lt;br /&gt; in text1 =&gt; result&lt;br /&gt;'1  =&gt; 01:00&lt;br /&gt;'12  =&gt; 12:00&lt;br /&gt;'1.1  =&gt; 01:10&lt;br /&gt;'915  =&gt; 9:15&lt;br /&gt;'9.15  =&gt; 9:15&lt;br /&gt;'1015  =&gt; 10:15&lt;br /&gt;'10.15  =&gt; 10:15&lt;br /&gt;'12:15 =&gt; 12:15&lt;br /&gt;&lt;br /&gt;'giving an impossible &lt;br /&gt;time&lt;br /&gt; =&gt; result&lt;br /&gt;'26 =&gt; 00:00&lt;br /&gt;'1976 =&gt; 00:00&lt;br /&gt;&lt;br /&gt;'giving just nothing (TAB/ENTER) will give no result&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2124108335739540711?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2124108335739540711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2124108335739540711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2124108335739540711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2124108335739540711'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/checktime.html' title='CheckTime'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4838485986817814609</id><published>2007-11-05T01:00:00.000-08:00</published><updated>2007-11-05T01:02:52.918-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code snippets'/><title type='text'>CheckSoftware</title><content type='html'>Public &lt;br /&gt;sub&lt;br /&gt; CheckSoftware(x &lt;br /&gt;as&lt;br /&gt; Form)&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;dim&lt;br /&gt; SaveTitle$&lt;br /&gt;&lt;br /&gt;    If App.PrevInstance Then&lt;br /&gt;        SaveTitle$ = App.Title&lt;br /&gt;        MsgBox "This &lt;br /&gt;program&lt;br /&gt; is already in the air...."&lt;br /&gt;        App.Title = ""&lt;br /&gt;        x.Caption = ""&lt;br /&gt;        AppActivate SaveTitle$&lt;br /&gt;        SendKeys "%{ENTER}", True&lt;br /&gt;        End&lt;br /&gt;    &lt;br /&gt;end&lt;br /&gt; If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;'use &lt;br /&gt;as&lt;br /&gt; in the first form_load event&lt;br /&gt;Call CheckSoftware(form1)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4838485986817814609?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4838485986817814609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4838485986817814609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4838485986817814609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4838485986817814609'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/checksoftware.html' title='CheckSoftware'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5615341423408615000</id><published>2007-11-05T00:59:00.000-08:00</published><updated>2007-11-05T01:00:31.125-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Working with Crystal Reports'/><title type='text'>Use CR with MsAccess and Oracle</title><content type='html'>Campbell, Stanley (Stan); Stanley_Campbell@dscc.dla.mil&lt;br /&gt;WEB: http://www.dscc.dla.mil&lt;br /&gt;&lt;br /&gt;In This Code I have data Stored in a Access.MDB and an Oracle Database.&lt;br /&gt;&lt;br /&gt;I put these in a Module:&lt;br /&gt;&lt;br /&gt;Public MyDataSource As String&lt;br /&gt;Public MyUserID As String&lt;br /&gt;Public MyPassword As String&lt;br /&gt;Public strConnectInformation As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Getting Ready to Use the Report.&lt;br /&gt;&lt;br /&gt;   Dim DateParam As String&lt;br /&gt;&lt;br /&gt;    'Reset Crystal Report Selection Criteria.&lt;br /&gt;   CrystalReport1.SelectionFormula = ""&lt;br /&gt;   CrystalReport1.ParameterFields(0) = ""&lt;br /&gt;&lt;br /&gt;   'Put Date in Proper Format for Crystal Reports.&lt;br /&gt;   DateParam = Format(DateSelected, "yyyy,mm,dd")&lt;br /&gt;&lt;br /&gt;   'Start Crystal Reports Code.&lt;br /&gt;   Call ConnectToCR&lt;br /&gt;   CrystalReport1.ParameterFields(0) = "DateToReport; DATE(" &amp; DateParam &amp; ") ;TRUE"&lt;br /&gt;   CrystalReport1.ReportFileName = "Q:\Daily.rpt"&lt;br /&gt;   CrystalReport1.Destination = 1   'Send to Printer&lt;br /&gt;   CrystalReport1.WindowTitle = "Daily Report"&lt;br /&gt;   CrystalReport1.Action = 1  ' Run Report&lt;br /&gt;&lt;br /&gt;I connect to an Oracle Database.&lt;br /&gt;&lt;br /&gt;Private Sub ConnectToCR()&lt;br /&gt;   MyDataSource = "Name of Oracle Table"&lt;br /&gt;   MyUserID = "USER"&lt;br /&gt;   MyPassword = "ORACLE"&lt;br /&gt;   'DataSetQualifier = "Name of Oracle Table" &amp; Chr$(0)&lt;br /&gt;&lt;br /&gt;   strConnectInformation = "DSN = " &amp; MyDataSource &amp; ";"&lt;br /&gt;   strConnectInformation = strConnectInformation &amp; "UID = " &amp; MyUserID &amp;    ";" &lt;br /&gt;   strConnectInformation = strConnectInformation &amp; "PWD = " &amp;    MyPassword &amp; ";"&lt;br /&gt;   strConnectInformation = strConnectInformation &amp; "DSQ = " '&amp; DataSetQualifier&lt;br /&gt;   CrystalReport1.Connect = strConnectInformation&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5615341423408615000?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5615341423408615000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5615341423408615000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5615341423408615000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5615341423408615000'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/use-cr-with-msaccess-and-oracle.html' title='Use CR with MsAccess and Oracle'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7444879178390725648</id><published>2007-11-05T00:24:00.000-08:00</published><updated>2007-11-05T00:52:38.082-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><title type='text'>GET UBUNTU 7.10</title><content type='html'>&lt;p&gt;&lt;strong&gt;Download URL:&lt;/strong&gt;&lt;br /&gt;  &lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/gutsy/ubuntu-7.10-desktop-i386.iso"&gt;&lt;br /&gt;  ftp://dl2.foss-id.web.id/iso/ubuntu/releases/gutsy/ubuntu-7.10-desktop-i386.iso&lt;/a&gt;&lt;br&gt;&lt;br /&gt;  &lt;strong&gt;Ubuntu Edition:&lt;/strong&gt; Ubuntu 7.10 desktop&lt;br&gt;&lt;br /&gt;  &lt;strong&gt;Computer Platform:&lt;/strong&gt; i386&lt;br&gt;&lt;br /&gt;  &lt;strong&gt;Download Location:&lt;/strong&gt; &lt;br /&gt;  ftp://dl2.foss-id.web.id/iso/ubuntu/releases/&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7444879178390725648?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7444879178390725648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7444879178390725648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7444879178390725648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7444879178390725648'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/get-ubuntu-710.html' title='GET UBUNTU 7.10'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-861482145585305372</id><published>2007-11-05T00:10:00.002-08:00</published><updated>2007-11-05T00:16:20.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><title type='text'>Download Streaming Videos From Video Sites</title><content type='html'>&lt;h1&gt;&lt;a href="http://www.arfree.com/"&gt;&lt;span style="font-size:130%;"&gt; Download Streaming Videos From  Video Sites&lt;/span&gt;&lt;/a&gt; &lt;/h1&gt;   &lt;div class="descr"&gt;Search for and download all your favorite videos! &lt;/div&gt;     Most videos require &lt;a href="http://www.download.com/FLV-Player/3000-2139_4-10505954.html?tag=lst-0-1" target="_blank"&gt;Flv Player &lt;/a&gt; to play video on your PC. Blip.tv may open Windows Media Player to play video depending on extension. If you do not have an flv player then &lt;a href="http://www.download.com/FLV-Player/3000-2139_4-10505954.html?tag=lst-0-1" target="_blank"&gt;download the free FLV player now &lt;/a&gt;. You can search for videos on the popular media sites then download by pasting the url in the download box.&lt;br /&gt;&lt;a href="http://www.arfree.com/"&gt;ARFREE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-861482145585305372?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/861482145585305372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=861482145585305372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/861482145585305372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/861482145585305372'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/download-streaming-videos-from-video.html' title='Download Streaming Videos From Video Sites'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4869884483862901627</id><published>2007-11-05T00:10:00.001-08:00</published><updated>2007-11-05T00:10:28.024-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='pcmav'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><title type='text'>PCMAV RC21 + Update Build1</title><content type='html'>&lt;div id="post-89" class="item entry"&gt;     &lt;div class="itemhead"&gt;      &lt;h3&gt;&lt;a href="http://privateclopedia.wordpress.com/2007/10/27/pcmav-rc21-update-build1/" rel="bookmark" title="PCMAV RC21 + Update Build1"&gt;PCMAV RC21 + Update Build1&lt;/a&gt;&lt;/h3&gt;      Memperbaiki bug yang terdeteksi sebagai virus oleh antivirus lain dan berbagai perbaikan lainnya. Silakan langsung di download.&lt;/div&gt;       &lt;div class="itemtext"&gt;&lt;div class="snap_preview"&gt; &lt;p&gt;&lt;strong&gt;PCMAV 10 RC21&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://indoupload.net/files/6336/PCMAV/PCM4V-RC19.zip"&gt; &lt;/a&gt;&lt;a href="http://www.fileden.com/files/2007/8/26/1385039/PCMAVRC21RTP%20CLN%20Update1.zip" target="_blank"&gt;download1&lt;/a&gt; | &lt;a href="http://www.4shared.com/file/27461615/17e9d229/PCMAVRC21RTPCLNUpdate1.html?dirPwdVerified=80e0460f" target="_blank"&gt;download2&lt;/a&gt;&lt;/p&gt; &lt;p&gt;link disediakan oleh: &lt;a href="http://mumtazanas.wordpress.com/" target="_blank"&gt;mumtazanas&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;br /&gt;Update Build1&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.divshare.com/download/2475674-3f6" target="_blank"&gt;DivShare.com&lt;/a&gt;, &lt;a href="http://indoupload.net/files/10260/RC21.VDB" target="_blank"&gt;IndoUpload.net&lt;/a&gt; (mirror), atau &lt;a href="http://files-upload.com/files/578585/RC21.VDB" target="_blank"&gt;Files-Upload.com&lt;/a&gt; (mirror).&lt;/p&gt; &lt;/div&gt;           &lt;/div&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4869884483862901627?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4869884483862901627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4869884483862901627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4869884483862901627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4869884483862901627'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/pcmav-rc21-update-build1.html' title='PCMAV RC21 + Update Build1'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2096491250895435204</id><published>2007-11-05T00:07:00.001-08:00</published><updated>2007-11-05T00:08:17.570-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Windows Vista Bootable Live CD Portable edition</title><content type='html'>&lt;div id="post-82" class="item entry"&gt;     &lt;div class="itemhead"&gt;      &lt;h3&gt;&lt;a href="http://privateclopedia.wordpress.com/2007/10/03/windows-vista-bootable-live-cd-portable-edition/" rel="bookmark" title="Windows Vista Bootable Live CD Portable edition"&gt;Windows Vista Bootable Live CD Portable edition&lt;/a&gt;&lt;/h3&gt;                              &lt;/div&gt;       &lt;div class="itemtext"&gt;      &lt;div class="snap_preview"&gt;&lt;p&gt;Wow.. yang mau nyobain vista tapi ga mau repot ngeinstallnya..download aja ini ya.&lt;/p&gt; &lt;p&gt;Just Unpack, Burn, In the Bios select Boot CD as primary, Restart, Enjoy!!  &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Vista Bootable Live CD Portable edition&lt;/strong&gt;&lt;br /&gt;116 Mb (packed) | 128 Mb (unpacked) | *.iso&lt;/p&gt; &lt;p&gt;&lt;a href="http://rapidshare.com/files/56674972/WVistaPE.part1.rar" target="_blank"&gt;download bagian 1&lt;/a&gt; | &lt;a href="http://rapidshare.com/files/56672894/WVistaPE.part2.rar" target="_blank"&gt;download bagian 2&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;           &lt;/div&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2096491250895435204?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2096491250895435204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2096491250895435204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2096491250895435204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2096491250895435204'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/windows-vista-bootable-live-cd-portable.html' title='Windows Vista Bootable Live CD Portable edition'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2677514891554624227</id><published>2007-11-05T00:05:00.000-08:00</published><updated>2007-11-05T00:06:22.133-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><title type='text'>NOD32 version 2.7 + crack</title><content type='html'>&lt;div id="post-91" class="item entry"&gt;     &lt;div class="itemhead"&gt;      &lt;h3&gt;&lt;a href="http://privateclopedia.wordpress.com/2007/10/27/nod32-version-27-crack/" rel="bookmark" title="NOD32 version 2.7 + crack"&gt;NOD32 version 2.7 + crack&lt;/a&gt;&lt;/h3&gt;                              &lt;/div&gt;       &lt;div class="itemtext"&gt;      &lt;div class="snap_preview"&gt;&lt;p&gt;&lt;strong&gt;Anti Virus NOD32 version 2.7 + Crack&lt;br /&gt;&lt;a href="http://www.4shared.com/file/26971791/fe16c7d5/micropoint07101212105710082r1.html" target="_blank"&gt;Download&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Micropoint&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;a href="http://www.4shared.com/file/26971793/1018a6f9/nentenst.html" target="_blank"&gt;Download&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;GigaGet&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/26975602/387dd046/gigaget_V10023.html" target="_blank"&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rapidshare&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://rapidshare.com/files/43700405/Bluecafe_NOD32_AntiVirus_v2.70.39_lifetime_updates.rar" target="_blank"&gt;Download&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt;           &lt;/div&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2677514891554624227?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2677514891554624227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2677514891554624227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2677514891554624227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2677514891554624227'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/nod32-version-27-crack.html' title='NOD32 version 2.7 + crack'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1661235173490604798</id><published>2007-11-05T00:00:00.000-08:00</published><updated>2007-11-05T00:04:37.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='Recovery'/><title type='text'>FinalRecovery Portable</title><content type='html'>&lt;div class="itemhead"&gt;      &lt;h3&gt;&lt;a href="http://privateclopedia.wordpress.com/2007/10/24/finalrecovery-portable/" rel="bookmark" title="FinalRecovery Portable"&gt;FinalRecovery Portable&lt;/a&gt;&lt;/h3&gt;                              &lt;/div&gt;             &lt;div style="text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_bY_qA7zEQmc/RxePkyH-ldI/AAAAAAAAAIo/Vh2_MhTEWR4/s1600-h/i_Marty_f_1181067812.gif"&gt;&lt;img src="http://3.bp.blogspot.com/_bY_qA7zEQmc/RxePkyH-ldI/AAAAAAAAAIo/Vh2_MhTEWR4/s320/i_Marty_f_1181067812.gif" style="margin: 0pt auto 10px; display: block; text-align: center; cursor: pointer;" border="0" /&gt;&lt;/a&gt;Final Recovery 2.2 Portable Version&lt;br /&gt;&lt;/div&gt;&lt;p&gt; Works under Win9x, ME, NT, 2K, XP, 2003, Vista (32bit &amp;amp; 64bit)&lt;br /&gt;Supports FAT12, FAT16, FAT32, NTFS, NTFS5 file systems&lt;br /&gt;Recovers files from formatted partitions&lt;br /&gt;Recovers files from hard drive, floppy disk, digital&lt;br /&gt;Recovers files from deleted (damaged) partitions&lt;br /&gt;Recovers lost, deleted files.&lt;br /&gt;IDE hard drives health diagnosis&lt;br /&gt;Attempts to recover files which damaged by OS&lt;br /&gt;Recover files from hard drive, floppy disk, digital&lt;br /&gt;camera, compactflashs, memory sticks, smart media&lt;/p&gt; &lt;a href="http://rapidshare.com/files/30711511/Portable-FinalRecovery-2.2.4.0241.rar"&gt;Download disini&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1661235173490604798?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1661235173490604798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1661235173490604798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1661235173490604798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1661235173490604798'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/finalrecovery-portable.html' title='FinalRecovery Portable'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bY_qA7zEQmc/RxePkyH-ldI/AAAAAAAAAIo/Vh2_MhTEWR4/s72-c/i_Marty_f_1181067812.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3435966659912469317</id><published>2007-11-03T02:15:00.000-07:00</published><updated>2007-11-03T02:16:52.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Update Antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='Norton Anti Virus'/><title type='text'>Norton AntiVirus for Windows 98/Me/2000/XP/Vista</title><content type='html'>&lt;table bgcolor="#dddddd" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffdd88"&gt;&lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Filename&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Creation Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;File Size&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://definitions.symantec.com/defs/20071102-016-v5i32.exe"&gt;20071102-016-v5i32.exe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 02, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 2, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;17.10 MB&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td colspan="4"&gt;&lt;p class="tiny"&gt;&lt;a href="http://www.symantec.com/avcenter/refa.html#md5"&gt;MD5&lt;/a&gt;: 7029B3B6E20DEEBDBE2EDAE8B8E7ADFF &lt;a href="http://www.symantec.com/avcenter/download/md5-hash.txt"&gt;all MD5 hashes&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt;&lt;td colspan="4"&gt;&lt;br /&gt;&lt;p class="tiny"&gt;Supports the following versions of Symantec antivirus software:&lt;/p&gt; &lt;ul class="tiny"&gt; Norton AntiVirus 2008 for Windows XP Home/XP Pro/Vista&lt;br /&gt;Norton Internet Security 2008 for Windows XP Home/XP Pro/Vista&lt;br /&gt;Symantec Endpoint Protection 11.0&lt;br /&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br /&gt; &lt;table bgcolor="#dddddd" cellspacing="1" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ffdd88"&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Filename&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Creation Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;File Size&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://definitions.symantec.com/defs/20071102-016-i32.exe"&gt;20071102-016-i32.exe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 02, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 2, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;19.29 MB&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td colspan="4"&gt;&lt;p class="tiny"&gt;&lt;a href="http://www.symantec.com/avcenter/refa.html#md5"&gt;MD5&lt;/a&gt;: A8C84E9EDB80B19BE6AD10D8F9813EBE &lt;a href="http://www.symantec.com/avcenter/download/md5-hash.txt"&gt;all MD5 hashes&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt;&lt;td colspan="4"&gt;&lt;br /&gt;&lt;p class="tiny"&gt;Supports the following versions of Symantec antivirus software:&lt;/p&gt; &lt;ul class="tiny"&gt; Norton AntiVirus 2003 Professional Edition&lt;br /&gt;Norton AntiVirus 2003 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2004 Professional Edition&lt;br /&gt;Norton AntiVirus 2004 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2005 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2006 for Windows 2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2007 for Windows XP Home/XP Pro/Vista&lt;br /&gt;Norton AntiVirus for Microsoft Exchange (Intel)&lt;br /&gt;Norton SystemWorks (all versions)&lt;br /&gt;Norton Utilities for Windows 95/98 (all versions)&lt;br /&gt;Symantec AntiVirus 3.0 for CacheFlow Security Gateway&lt;br /&gt;Symantec AntiVirus 3.0 for Inktomi Traffic Edge&lt;br /&gt;Symantec AntiVirus 3.0 for NetApp Filer/NetCache&lt;br /&gt;Symantec AntiVirus 8.0 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 8.1 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 9.0 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.0 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.1 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.2 Corporate Edition Client&lt;br /&gt;Symantec Mail Security for Domino v 4.x/5.x&lt;br /&gt;Symantec Mail Security for Microsoft Exchange v 4.x/5.x&lt;br /&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;End of Life for Floppy Disk Definition Sets&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Beginning Thursday, August 18th, 2005, US Pacific Time, Symantec will no longer be releasing definitions sized to fit a set of standard 1.44 MB floppy disks. Due to the increasing size of virus definitions files and the supplanting of floppy disks with other technologies, we will no longer be releasing definitions in this format. Definitions will continue to be made available through all other current methods.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.symantec.com/avcenter/graphics/black.gif" height="1" width="100%" /&gt;&lt;/p&gt;   &lt;table bgcolor="#dddddd" cellspacing="1" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ffdd88"&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Filename&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Creation Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;File Size&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://definitions.symantec.com/defs/20071102-016-x86.exe"&gt;20071102-016-x86.exe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 02, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 2, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;21.91 MB&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td colspan="4"&gt;&lt;p class="tiny"&gt;&lt;a href="http://www.symantec.com/avcenter/refa.html#md5"&gt;MD5&lt;/a&gt;: E95C71BCEEBAAD4BB9E5CE8BF36FE7EE &lt;a href="http://www.symantec.com/avcenter/download/md5-hash.txt"&gt;all MD5 hashes&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt;&lt;td colspan="4"&gt;&lt;br /&gt;&lt;p class="tiny"&gt;Supports the following versions of Symantec antivirus software:&lt;/p&gt; &lt;ul class="tiny"&gt; Norton AntiVirus 2003 Professional Edition&lt;br /&gt;Norton AntiVirus 2003 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2004 Professional Edition&lt;br /&gt;Norton AntiVirus 2004 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2005 for Windows 98/Me/2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2006 for Windows 2000/XP Home/XP Pro&lt;br /&gt;Norton AntiVirus 2007 for Windows XP Home/XP Pro/Vista&lt;br /&gt;Norton AntiVirus for Microsoft Exchange (Intel)&lt;br /&gt;Symantec AntiVirus 3.0 CacheFlow Security Gateway&lt;br /&gt;Symantec AntiVirus 3.0 for Inktomi Traffic Edge&lt;br /&gt;Symantec AntiVirus 3.0 for NetApp Filer/NetCache&lt;br /&gt;Symantec AntiVirus 8.01 (Build 457 and above) Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 8.01 (any Build prior to 457) Corporate Edition Client or Server&lt;br /&gt;Symantec AntiVirus 8.1 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 9.0 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.0 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.1 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus 10.2 Corporate Edition Client&lt;br /&gt;Symantec AntiVirus for Bluecoat Security Gateway for Windows 2000 Server/2003 Server&lt;br /&gt;Symantec AntiVirus for Clearswift MIMESweeper for Windows 2000 Server/2003 Server&lt;br /&gt;Symantec AntiVirus for Microsoft ISA Server for Windows 2000 Server/2003 Server&lt;br /&gt;Symantec Mail Security for Domino v 4.x/5.x&lt;br /&gt;Symantec Mail Security for Microsoft Exchange v 4.x/5.x&lt;br /&gt;Symantec Mail Security for SMTP v 4.x&lt;br /&gt;Symantec Web Security 3.0 for Windows&lt;br /&gt;Symantec AntiVirus Scan Engine for Windows&lt;br /&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This all inclusive updater will update all of the products listed above. This is useful for updating multiple machines and products with one single package.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.symantec.com/avcenter/graphics/black.gif" height="1" width="100%" /&gt;&lt;/p&gt;   &lt;p&gt;&lt;b&gt;64-bit Platforms&lt;/b&gt;&lt;/p&gt;  &lt;table bgcolor="#dddddd" cellspacing="1" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ffdd88"&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Filename&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Creation Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;File Size&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://definitions.symantec.com/defs/20071102-016-v5i64.exe"&gt;20071102-016-v5i64.exe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 02, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 2, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;18.33 MB&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td colspan="4"&gt;&lt;p class="tiny"&gt;&lt;a href="http://www.symantec.com/avcenter/refa.html#md5"&gt;MD5&lt;/a&gt;: 98AFFF035C27581AB3959362415A87B2 &lt;a href="http://www.symantec.com/avcenter/download/md5-hash.txt"&gt;all MD5 hashes&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt;&lt;td colspan="4"&gt;&lt;br /&gt;&lt;p class="tiny"&gt;Supports the following versions of Symantec antivirus software:&lt;/p&gt; &lt;ul class="tiny"&gt; Norton AntiVirus 2008 for Windows XP/Vista for 64-bit OS only&lt;br /&gt;Norton Internet Security 2008 for Windows XP/Vista for 64-bit OS only&lt;br /&gt;Symantec Endpoint Protection 11.0 for 64-bit OS only&lt;br /&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br /&gt;  &lt;table bgcolor="#dddddd" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffdd88"&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Filename&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Creation Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p class="tiny"&gt;&lt;b&gt;File Size&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://definitions.symantec.com/defs/20071102-016-i64.exe"&gt;20071102-016-i64.exe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 02, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;November 2, 2007&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;20.30 MB&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt; &lt;td colspan="4"&gt;&lt;p class="tiny"&gt;&lt;a href="http://www.symantec.com/avcenter/refa.html#md5"&gt;MD5&lt;/a&gt;: 52158A5B5180ED566B5F613405148D0C &lt;a href="http://www.symantec.com/avcenter/download/md5-hash.txt"&gt;all MD5 hashes&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor="white"&gt;&lt;td colspan="4"&gt;&lt;br /&gt;&lt;p class="tiny"&gt;Supports the following versions of Symantec antivirus software:&lt;/p&gt; &lt;ul class="tiny"&gt; Symantec AntiVirus 8.1 Corporate Edition Client for 64-bit OS only&lt;br /&gt;Symantec AntiVirus 9.0 Corporate Edition Client for 64-bit OS only&lt;br /&gt;Symantec AntiVirus 10.0 Corporate Edition Client for 64-bit OS only&lt;br /&gt;Symantec AntiVirus 10.1 Corporate Edition Client for 64-bit OS only&lt;br /&gt;Symantec AntiVirus 10.2 Corporate Edition Client for 64-bit OS only&lt;br /&gt;Norton AntiVirus 2007 for Windows Vista 64-bit OS only&lt;br /&gt;Norton Internet Security 2007 for Windows Vista 64-bit OS only&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3435966659912469317?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3435966659912469317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3435966659912469317' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3435966659912469317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3435966659912469317'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/norton-antivirus-for-windows.html' title='Norton AntiVirus for Windows 98/Me/2000/XP/Vista'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1545548223206482047</id><published>2007-11-01T00:47:00.000-07:00</published><updated>2007-11-01T00:49:35.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Update Antivirus'/><title type='text'>Download update antivirus</title><content type='html'>&lt;div id="post-48" class="item entry"&gt;     &lt;div class="itemhead"&gt;      &lt;h3&gt;&lt;a href="http://privateclopedia.wordpress.com/2007/08/21/download-update-antivirus/" rel="bookmark" title="Download update antivirus"&gt;Download update antivirus&lt;/a&gt;&lt;/h3&gt;                              &lt;/div&gt;       &lt;div class="itemtext"&gt;      &lt;div class="snap_preview"&gt;&lt;p&gt;Silakan &lt;strong&gt;download update antivirus&lt;/strong&gt; anda disini:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.symantec.com/avcenter/download/pages/US-N95.html" target="blank"&gt;Norton / Symantec Anti Virus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://free.grisoft.com/doc/24/lng/us/tpl/v5" target="blank"&gt;AVG Free  Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bestdownload.com/" target="blank"&gt;McAfee (pilih dari link  yang ada)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kaspersky.com/faq?chapter=170709721&amp;amp;qid=174644652" target="blank"&gt;Kaspersky Anti-Virus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pandasoftware.com/download/Client%20Zone/?NRMODE=Published&amp;amp;NRORIGINALURL=%2fdownload%2fupdates%2f&amp;amp;NRNODEGUID=%7bC9AE49F3-DC1D-4DF1-92A7-D58B49D09620%7d&amp;amp;NRCACHEHINT=Guest" target="blank"&gt;pandasoftware&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.free-av.com/index.html" target="blank"&gt;Avira AntiVir&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avast.com/eng/updates.html" target="blank"&gt;Avast&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.trendmicro.com/download/viruspattern.asp" target="blank"&gt;TREND Micro&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;           &lt;/div&gt;     &lt;/div&gt;    &lt;!-- You can start editing here. --&gt; &lt;hr /&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1545548223206482047?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1545548223206482047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1545548223206482047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1545548223206482047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1545548223206482047'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/download-update-antivirus.html' title='Download update antivirus'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2734577391090325785</id><published>2007-11-01T00:26:00.001-07:00</published><updated>2007-11-01T00:26:27.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu Feisty</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;4156140 KB&lt;/td&gt;  &lt;td&gt;15/06/2007&lt;/td&gt;  &lt;td&gt;21:03:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-amd64.iso.torrent"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-amd64.iso.torrent&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;80 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-amd64.list"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-amd64.list&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;299 KB&lt;/td&gt;  &lt;td&gt;18/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-amd64.manifest"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-amd64.manifest&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;30 KB&lt;/td&gt;  &lt;td&gt;17/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;4163890 KB&lt;/td&gt;  &lt;td&gt;15/06/2007&lt;/td&gt;  &lt;td&gt;20:19:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-i386.iso.torrent"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-i386.iso.torrent&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;80 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-i386.list"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-i386.list&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;303 KB&lt;/td&gt;  &lt;td&gt;18/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/cdimage/releases/feisty/release/ubuntu-7.04-dvd-i386.manifest"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;ubuntu-7.04-dvd-i386.manifest&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;31 KB&lt;/td&gt;  &lt;td&gt;17/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2734577391090325785?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2734577391090325785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2734577391090325785' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2734577391090325785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2734577391090325785'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/ubuntu-feisty.html' title='Ubuntu Feisty'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5636511781338128842</id><published>2007-11-01T00:22:00.000-07:00</published><updated>2007-11-01T00:23:03.082-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opensuse'/><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><title type='text'>Opensuse-guru</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/experimental"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;experimental&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;17/11/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/guru-rpm.asc"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;guru-rpm.asc&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;2 KB&lt;/td&gt;  &lt;td&gt;29/02/2004&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/kde35"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;kde35&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;26/07/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/rpm"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;rpm&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;10/10/2007&lt;/td&gt;  &lt;td&gt;22:22:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/smart"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;smart&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;31/08/2007&lt;/td&gt;  &lt;td&gt;21:11:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/subversion"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;subversion&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;15/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse-guru/zypp"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;zypp&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;04/11/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5636511781338128842?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5636511781338128842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5636511781338128842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5636511781338128842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5636511781338128842'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/opensuse-guru.html' title='Opensuse-guru'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4703694320432613575</id><published>2007-11-01T00:15:00.000-07:00</published><updated>2007-11-01T00:16:41.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Opensuse</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse/distribution"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;distribution&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;04/10/2007&lt;/td&gt;  &lt;td&gt;8:44:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse/tools"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;tools&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;23/10/2005&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/repo/opensuse/update"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;update&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;30/03/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4703694320432613575?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4703694320432613575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4703694320432613575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4703694320432613575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4703694320432613575'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/opensuse.html' title='Opensuse'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5697152828511786614</id><published>2007-11-01T00:13:00.000-07:00</published><updated>2007-11-01T00:14:38.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Kamsifo</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/kamsifo/IKSI.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;IKSI.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;401052 KB&lt;/td&gt;  &lt;td&gt;01/08/2007&lt;/td&gt;  &lt;td&gt;16:58:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/kamsifo/KDB.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;KDB.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;378690 KB&lt;/td&gt;  &lt;td&gt;01/08/2007&lt;/td&gt;  &lt;td&gt;17:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/kamsifo/KTE.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;KTE.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;526012 KB&lt;/td&gt;  &lt;td&gt;01/08/2007&lt;/td&gt;  &lt;td&gt;17:04:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/kamsifo/MD5SUM"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUM&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;19/09/2007&lt;/td&gt;  &lt;td&gt;9:55:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/kamsifo/SKJ.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;SKJ.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;704552 KB&lt;/td&gt;  &lt;td&gt;01/08/2007&lt;/td&gt;  &lt;td&gt;17:08:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5697152828511786614?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5697152828511786614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5697152828511786614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5697152828511786614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5697152828511786614'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/kamsifo.html' title='Kamsifo'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6950976366863348080</id><published>2007-11-01T00:07:00.000-07:00</published><updated>2007-11-01T00:09:31.424-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><title type='text'>Debian</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-1.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-1.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663506 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:41:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-10.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-10.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;645676 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:05:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-11.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-11.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;662808 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:11:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-12.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-12.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;597242 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:16:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-13.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-13.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663362 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:21:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-14.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-14.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;660544 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:27:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-15.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-15.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;658582 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:34:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-16.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-16.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;616832 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:40:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-17.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-17.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;629732 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:46:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-18.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-18.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663682 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:52:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-19.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-19.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663642 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:58:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-2.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-2.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663300 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:41:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-20.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-20.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663518 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;4:04:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-21.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-21.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;578648 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;4:09:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-3.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-3.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663376 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:41:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-4.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-4.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663778 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:42:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-5.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-5.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;661990 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:42:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-6.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-6.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;661570 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:42:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-7.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-7.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;659918 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-8.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-8.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;654048 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;2:55:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-CD-9.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-CD-9.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;652976 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;3:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-DVD-1.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-DVD-1.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;4588298 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;5:23:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-DVD-2.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-DVD-2.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;4571754 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;6:07:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-DVD-3.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-DVD-3.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;4463888 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;7:01:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-businesscard.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-businesscard.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;32828 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;4:09:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-kde-CD-1.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-kde-CD-1.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;660572 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;4:15:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-netinst.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-netinst.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;162716 KB&lt;/td&gt;  &lt;td&gt;07/05/2007&lt;/td&gt;  &lt;td&gt;16:40:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/debian/etch/debian-40r0-i386-xfce-CD-1.iso"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;debian-40r0-i386-xfce-CD-1.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;663062 KB&lt;/td&gt;  &lt;td&gt;15/08/2007&lt;/td&gt;  &lt;td&gt;4:22:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6950976366863348080?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6950976366863348080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6950976366863348080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6950976366863348080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6950976366863348080'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/11/debian.html' title='Debian'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-9216498841931861960</id><published>2007-10-31T20:55:00.001-07:00</published><updated>2007-10-31T20:55:46.179-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu Dapper</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-alternate-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-alternate-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-alternate-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-desktop-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-desktop-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-desktop-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-server-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-server-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-server-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper/ubuntu-6.06.1-server-sparc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-sparc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-9216498841931861960?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/9216498841931861960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=9216498841931861960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9216498841931861960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9216498841931861960'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/ubuntu-dapper.html' title='Ubuntu Dapper'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-893574652875149643</id><published>2007-10-31T20:50:00.000-07:00</published><updated>2007-10-31T20:51:27.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu 7.10</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;7:47:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;7:47:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-alternate-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-alternate-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-alternate-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-alternate-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-desktop-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-desktop-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-desktop-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-desktop-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-server-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-server-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-server-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-server-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10/ubuntu-7.10-server-sparc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.10-server-sparc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;9:43:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-893574652875149643?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/893574652875149643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=893574652875149643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/893574652875149643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/893574652875149643'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/ubuntu-710.html' title='Ubuntu 7.10'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-9090546430144882486</id><published>2007-10-31T20:44:00.002-07:00</published><updated>2007-10-31T20:46:40.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu 7.04</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;19/04/2007&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-alternate-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-alternate-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-alternate-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-alternate-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-desktop-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-desktop-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-desktop-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-desktop-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-server-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-server-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-server-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-server-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04/ubuntu-7.04-server-sparc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-7.04-server-sparc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;7:12:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-9090546430144882486?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/9090546430144882486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=9090546430144882486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9090546430144882486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9090546430144882486'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/ubuntu-704.html' title='Ubuntu 7.04'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-662326295030691635</id><published>2007-10-31T20:44:00.001-07:00</published><updated>2007-10-31T20:44:46.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu 6.06</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-sparc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-sparc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-662326295030691635?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/662326295030691635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=662326295030691635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/662326295030691635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/662326295030691635'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/ubuntu-606.html' title='Ubuntu 6.06'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2701684884245108949</id><published>2007-10-31T20:41:00.000-07:00</published><updated>2007-10-31T20:42:27.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download UBUNTU'/><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>Ubuntu Higher Level</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/"&gt;Up to higher level directory&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;6.06&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;27/08/2007&lt;/td&gt;  &lt;td&gt;5:36:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06.1"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;6.06.1&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;27/08/2007&lt;/td&gt;  &lt;td&gt;5:36:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.10"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;6.10&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;27/08/2007&lt;/td&gt;  &lt;td&gt;5:36:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.04"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;7.04&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;27/08/2007&lt;/td&gt;  &lt;td&gt;5:36:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/7.10"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;7.10&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/09/2007&lt;/td&gt;  &lt;td&gt;6:10:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/dapper"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;dapper&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;05/09/2007&lt;/td&gt;  &lt;td&gt;17:56:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/edgy"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;edgy&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;05/09/2007&lt;/td&gt;  &lt;td&gt;17:56:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/edubuntu"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;edubuntu&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;12/10/2007&lt;/td&gt;  &lt;td&gt;8:30:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/feisty"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;feisty&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;05/09/2007&lt;/td&gt;  &lt;td&gt;17:55:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/gutsy"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;gutsy&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;18/10/2007&lt;/td&gt;  &lt;td&gt;7:47:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/kubuntu"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;kubuntu&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;17/10/2007&lt;/td&gt;  &lt;td&gt;9:26:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/releases"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;releases&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/09/2007&lt;/td&gt;  &lt;td&gt;6:10:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2701684884245108949?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2701684884245108949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2701684884245108949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2701684884245108949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2701684884245108949'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/ubuntu-higher-level.html' title='Ubuntu Higher Level'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-103393114168087164</id><published>2007-10-31T20:32:00.001-07:00</published><updated>2007-10-31T20:32:43.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UBUNTU'/><title type='text'>DOWNLOAD UBUNTU</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/"&gt;Up to higher level directory&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/MD5SUMS"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/MD5SUMS.gpg"&gt;&lt;img src="resource://gre/res/html/gopher-unknown.gif" alt="File: " /&gt;MD5SUMS.gpg&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;1 KB&lt;/td&gt;  &lt;td&gt;16/08/2006&lt;/td&gt;  &lt;td&gt;0:00:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-alternate-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-alternate-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-desktop-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-desktop-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-amd64.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-amd64.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-i386.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-i386.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-powerpc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-powerpc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a class="symlink" href="ftp://dl2.foss-id.web.id/iso/ubuntu/releases/6.06/ubuntu-6.06.1-server-sparc.iso"&gt;&lt;img src="resource://gre/res/html/gopher-menu.gif" alt="Directory: " /&gt;ubuntu-6.06.1-server-sparc.iso&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;28/08/2007&lt;/td&gt;  &lt;td&gt;6:39:00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-103393114168087164?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/103393114168087164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=103393114168087164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/103393114168087164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/103393114168087164'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/download-ubuntu.html' title='DOWNLOAD UBUNTU'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1363949272012468169</id><published>2007-10-31T08:32:00.000-07:00</published><updated>2007-10-31T20:10:15.855-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Antivirus Update'/><category scheme='http://www.blogger.com/atom/ns#' term='Update Antivirus'/><title type='text'>Antivirus Update</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.trendmicro.com/download/pattern.asp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7M-jWj8JcRc/RylCUMB5usI/AAAAAAAAADY/d5WX4yar06M/s320/av_trendmicro.gif" alt="" id="BLOGGER_PHOTO_ID_5127702565332040386" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.scanwith.com/download/McAfee_SuperDAT_Update.htm"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7M-jWj8JcRc/RylCN8B5urI/AAAAAAAAADQ/sFLD4u_OwiM/s320/av_mcafee.gif" alt="" id="BLOGGER_PHOTO_ID_5127702457957857970" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.f-secure.com/download-purchase/updates_manual.shtml"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7M-jWj8JcRc/RylCHcB5uqI/AAAAAAAAADI/9uKhyqYGYlE/s320/av_f-secure.gif" alt="" id="BLOGGER_PHOTO_ID_5127702346288708258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kaspersky.com/avupdates"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7M-jWj8JcRc/RylCBsB5upI/AAAAAAAAADA/3sTG1kjLz_s/s320/av_kaspersky.gif" alt="" id="BLOGGER_PHOTO_ID_5127702247504460434" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://free.grisoft.com/doc/update/us/frt/0"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7M-jWj8JcRc/RylB8MB5uoI/AAAAAAAAAC4/5SFCmgtiHyk/s320/av_avg.gif" alt="" id="BLOGGER_PHOTO_ID_5127702153015179906" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.avast.com/eng/updates.html"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7M-jWj8JcRc/RylBtcB5umI/AAAAAAAAACo/EyUxT1a0VsI/s320/av_avast.gif" alt="" id="BLOGGER_PHOTO_ID_5127701899612109410" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.symantec.com/avcenter/download/pages/US-N95.html"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7M-jWj8JcRc/Ryig7MB5uiI/AAAAAAAAACI/Dl4KmeUwIfY/s320/av_nav.gif" alt="" id="BLOGGER_PHOTO_ID_5127525114463238690" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7M-jWj8JcRc/RylB1MB5unI/AAAAAAAAACw/aWIv-MmrYi8/s1600-h/av_avg.gif"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1363949272012468169?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1363949272012468169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1363949272012468169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1363949272012468169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1363949272012468169'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/antivirus-update.html' title='Antivirus Update'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7M-jWj8JcRc/RylCUMB5usI/AAAAAAAAADY/d5WX4yar06M/s72-c/av_trendmicro.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7212954859834617705</id><published>2007-10-31T08:21:00.000-07:00</published><updated>2007-10-31T08:25:24.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Update Antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='NOD32'/><title type='text'>NOD32 version 2.7 + crack</title><content type='html'>&lt;span style="font-weight:bold;"&gt;NOD32 version 2.7 + crack&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anti Virus NOD32 version 2.7 + Crack&lt;br /&gt;&lt;a href="http://www.4shared.com/file/26971791/fe16c7d5/micropoint07101212105710082r1.html"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Micropoint&lt;br /&gt;&lt;a href="http://http://www.4shared.com/file/26971793/1018a6f9/nentenst.html"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;GigaGet&lt;br /&gt;&lt;a href="http://www.4shared.com/file/26975602/387dd046/gigaget_V10023.html"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rapidshare&lt;br /&gt;&lt;a href="http://rapidshare.com/files/43700405/Bluecafe_NOD32_AntiVirus_v2.70.39_lifetime_updates.rar"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7212954859834617705?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7212954859834617705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7212954859834617705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7212954859834617705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7212954859834617705'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/nod32-version-27-crack.html' title='NOD32 version 2.7 + crack'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7358898520850933148</id><published>2007-10-31T08:19:00.001-07:00</published><updated>2007-10-31T08:19:38.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NOD32'/><title type='text'>Update NOD32 di jaringan lokal</title><content type='html'>Update NOD32 di jaringan lokal&lt;br /&gt;&lt;br /&gt;Yang di butuhkan :&lt;br /&gt;&lt;br /&gt;    * Satu komputer yang ada internetnya, ada NOD32 yang Full registered&lt;br /&gt;      dan bisa download update NOD32 (mo pake yang cr*c*k ya monggo..)&lt;br /&gt;    * Program yang namanya NOD32 Update Generator, bisa download di sini atau disini&lt;br /&gt;    * Apache Web Server atau IIS, terserah sih tergantung familier dengan yang mana&lt;br /&gt;&lt;br /&gt;Udah ada semua ??&lt;br /&gt;&lt;br /&gt;Langkah selanjutnya :&lt;br /&gt;&lt;br /&gt;   1. Install web server di komputer server anda.. trus bikin virtual direktori buat tempat file update nod. misal : upd_files&lt;br /&gt;   2. Share&lt;br /&gt;      direktori tadi dengan hak akses administrator, sehingga direktori&lt;br /&gt;      tersebut di jaringan lokal bisa akses lewat komputer yang punya bisa&lt;br /&gt;      download update nod32-nya&lt;br /&gt;   3. Update data virus terakhir di komputer yang ada NOD32-nya&lt;br /&gt;   4. Jalankan program nod32ugen, arahkan ke folder \\nama_server\upd_files, lalu klik generate file&lt;br /&gt;   5. Setelah selesai, Install program NOD32 di masing-masing client.&lt;br /&gt;   6. Masuk ke bagian update, Setup, Servers, Add, masukkan nama servernya dengan http://nama_server/upd_files, klik ok&lt;br /&gt;   7. Lalu di bagian server, pilih server : http://nama_server/upd_files, klik ok&lt;br /&gt;   8. Untuk memastikannya sudah terinstall dengan baik, klik tombol “update now”.&lt;br /&gt;   9. Jika settingnya benar, maka data update virus tersebut akan terinstall di komputer masing-masing client.&lt;br /&gt;  10. Selesai&lt;br /&gt;&lt;br /&gt;Mungkin pada awalnya kita akan capek di setting server tiap-tiap client, tapi itu hanya setting pada awalnya saja..&lt;br /&gt;Untuk selanjutnya kita hanya melakukan step no 4 saja dari komputer yang bisa download data antivirus NOD32. Secara otomatis per jam, komputer client akan download data update tersebut..&lt;br /&gt;&lt;br /&gt;Mudah bukan.. dan komputer jaringan Anda akan aman dari virus.. D&lt;br /&gt;&lt;br /&gt;Untuk LAN : setting di masing-masing client&lt;br /&gt;caranya, masuk ke setup updater… lalu masuk ke advanced..&lt;br /&gt;lalu ke LAN CONNECTION setup… pilih current user&lt;br /&gt;sim salabim… semua bisa update ke main pc ……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7358898520850933148?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7358898520850933148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7358898520850933148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7358898520850933148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7358898520850933148'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/update-nod32-di-jaringan-lokal.html' title='Update NOD32 di jaringan lokal'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5092897279866187547</id><published>2007-10-31T08:08:00.000-07:00</published><updated>2007-10-31T08:17:17.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Update Antivirus'/><title type='text'>Update Offline NOD32</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Update Offline NOD32&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Okt 27, 2007 in Nod32, antivirus, download, tips with 1 Comment&lt;br /&gt;&lt;br /&gt;Anti virus yang satu ini memang untuk proses updatenya langsung menggunakan server online. tapi tidak tertutup kemungkinan bagi kita yang menggunakan komputer rumahan untuk tidak menggunakan anti virus ini.&lt;br /&gt;&lt;br /&gt;untuk download Trialnya anda bisa langsung ke website nod32 : ESET&lt;br /&gt;&lt;br /&gt;sedangkan untuk ful versionnya anda bisa kunjungi Site Ini untuk menyesuaikan dengan karakteristik komputer anda&lt;br /&gt;&lt;br /&gt;untuk update secara online anda cukup menyambungkan komputer anda dengan koneksi internet dan mengikuti printah pada automatic update&lt;br /&gt;&lt;br /&gt;Sedangkan untuk yang offline. ada beberapa trik yang digunakan&lt;br /&gt;1. Download file update Nod 32 dari situs mirror atau situs yang menyediakan update Nod32 secara gratis&lt;br /&gt;2. File yang ada pada direktory update Nod32 di download semua dan dikumpulkan pada satu direktory misal: “E:Download/Program/Nod32/Mirror”&lt;br /&gt;3. setelah langka kedua selesai tinggal meng”Add” direktory anda (E:Download/Program/Nod32/Mirror)pada program Nod32 anda, untuk lebih jelasnya silahkan anda ikuti gambar dibawah ini&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7M-jWj8JcRc/RyicKcB5uaI/AAAAAAAAABI/OhST19f--sE/s1600-h/04.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7M-jWj8JcRc/RyicKcB5uaI/AAAAAAAAABI/OhST19f--sE/s320/04.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5127519878898104738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7M-jWj8JcRc/RyicWsB5ubI/AAAAAAAAABQ/RGdxNGDz7EE/s1600-h/09.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7M-jWj8JcRc/RyicWsB5ubI/AAAAAAAAABQ/RGdxNGDz7EE/s320/09.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5127520089351502258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Setelah anda mengklik “Update Now” dan menyelesaikan proses Updatenya, maka otomastis Signature Virusnya akan bertambah&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5092897279866187547?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5092897279866187547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5092897279866187547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5092897279866187547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5092897279866187547'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/10/update-offline-nod32.html' title='Update Offline NOD32'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7M-jWj8JcRc/RyicKcB5uaI/AAAAAAAAABI/OhST19f--sE/s72-c/04.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2298074841321277083</id><published>2007-07-26T01:14:00.000-07:00</published><updated>2007-10-30T23:28:01.799-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Access'/><title type='text'>working with SQL command Like</title><content type='html'>&lt;pre&gt;Make a form with&lt;br /&gt;a listbox = List1&lt;br /&gt;an textbox = txtSearch&lt;br /&gt;a commandbutton = cmdGo&lt;br /&gt;assuming there's a database in the 'c:\win' directorie with the name 'test.md'&lt;br /&gt;with a table called 'testing' which contains two fields: 'name' and 'adress'&lt;br /&gt;&lt;br /&gt;'on Form1.general&lt;br /&gt;Dim ds as recordset, db as database&lt;br /&gt;Dim criteria$&lt;br /&gt;&lt;br /&gt;Const databasenaam="c:\win\test.mdb"&lt;br /&gt;Const tablename="testing"&lt;br /&gt;&lt;br /&gt;Sub Form1_load&lt;br /&gt; set db=opendatabase(databasename)&lt;br /&gt; txtSearch.text=""&lt;br /&gt;end sub&lt;br /&gt;&lt;br /&gt;Sub cmdGo_Click&lt;br /&gt; Dim SQL$&lt;br /&gt;&lt;br /&gt; criteria$= "*" &amp; txtSearch &amp;amp; "*"&lt;br /&gt; SQL$= "SELECT * FROM " &amp; tablename &amp;amp; " WHERE name ='" &amp; _&lt;br /&gt;  criteria$ &amp;amp; "'"&lt;br /&gt; set ds = db.openrecordset(SQL$)&lt;br /&gt; do while not ds.eof&lt;br /&gt;  List1.additem ds("name") &amp; " " &amp;amp; ds("adress")&lt;br /&gt;  ds.movenext&lt;br /&gt; loop&lt;br /&gt; ds.close&lt;br /&gt;end Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2298074841321277083?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2298074841321277083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2298074841321277083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2298074841321277083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2298074841321277083'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/working-with-sql-command-like.html' title='working with SQL command Like'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7342707007367577671</id><published>2007-07-22T21:05:00.000-07:00</published><updated>2007-07-22T21:11:10.076-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 87: Sending Output to the Printer in Any Order</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;You can use the Visual Basic® Print method to send text to the default&lt;br /&gt;printer. This article explains how you can send data to the printer in&lt;br /&gt;any order (that is, you can print a line of text in the middle of the&lt;br /&gt;page and then print some other text at the top of page).&lt;br /&gt;&lt;br /&gt;Outputting Data to the Printer&lt;br /&gt;In a Visual Basic® application, you may need to create a hard copy of&lt;br /&gt;some data. To send data to the default printer, you use Visual Basic's&lt;br /&gt;Print method. For example, to send a line of text to the printer, you&lt;br /&gt;would issue a statement such as:&lt;br /&gt;&lt;br /&gt;Printer.Print "This is a test"&lt;br /&gt;&lt;br /&gt;When this statement is executed, Visual Basic will print the text on&lt;br /&gt;the printer. Note that the text is printed at the coordinates&lt;br /&gt;specified by the CurrentX and CurrentY properties.&lt;br /&gt;Each time you send data to the printer, Visual Basic automatically&lt;br /&gt;updates the CurrentX and CurrentY properties. CurrentX is incremented&lt;br /&gt;each time a new character is sent to the printer on the same line.&lt;br /&gt;When a new line is needed, the value in CurrentX is reset to zero,&lt;br /&gt;and CurrentY is incremented by one to account for the new line.&lt;br /&gt;&lt;br /&gt;Therefore, as the example program below shows, you can print to any&lt;br /&gt;specific physical location on the paper. You can print a line of text&lt;br /&gt;in the center of the paper first and then, by simply changing the&lt;br /&gt;CurrentX and CurrentY properties, print a line of text at the top of&lt;br /&gt;the page.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below prints two lines of text on the default&lt;br /&gt;printer. The first line is actually the second line to be physically&lt;br /&gt;transferred to the printer.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;  default.&lt;br /&gt;3. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;  Printer.ScaleMode = 2&lt;br /&gt;  Printer.FontSize = 42&lt;br /&gt;  Printer.CurrentX = 40&lt;br /&gt;  Printer.CurrentY = 40&lt;br /&gt;  Printer.Print "This is the first line to be printed"&lt;br /&gt;  Printer.CurrentX = 40&lt;br /&gt;  Printer.CurrentY = 12&lt;br /&gt;  Printer.FontSize = 14&lt;br /&gt;  Printer.Print "This is actually the second line to be printed"&lt;br /&gt;  Printer.EndDoc&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q119673. "How to Print with Rotated Text."&lt;br /&gt;"Managing Your Print Jobs." (Books and Periodicals, Inside Visual&lt;br /&gt; Basic Articles [Cobb])&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7342707007367577671?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7342707007367577671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7342707007367577671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7342707007367577671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7342707007367577671'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-87-sending-output-to-printer-in-any.html' title='Tip 87: Sending Output to the Printer in Any Order'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5797595040043087464</id><published>2007-07-22T21:02:00.001-07:00</published><updated>2007-07-22T21:11:39.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 86: Allowing a Visual Basic Application to Accept Drag-and-Drop</title><content type='html'>&lt;pre&gt;* VB-CODE (4)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;Many Windows=AE-based applications can accept, or process, a file that&lt;br /&gt;has been dragged from File Manager. This article explains how you can&lt;br /&gt;add this feature to your own Visual Basic=AE application.&lt;br /&gt;&lt;br /&gt;Using MSGBLAST.VBX to Accept Drag-and-Drop Files&lt;br /&gt;Using File Manager, you can drag a file to another application and,&lt;br /&gt;when you release the mouse button (drop the file), the target&lt;br /&gt;application can process the file any way it wants to.&lt;br /&gt;&lt;br /&gt;In order for a program to be able to accept drag-and-drop files,&lt;br /&gt;however, the program must have a method of recognizing when a file has&lt;br /&gt;been sent to it. In Visual Basic=AE, this can be done by using the&lt;br /&gt;Message Blaster custom control and three Windows=AE application&lt;br /&gt;programming interface (API) functions: DragAcceptFiles, DragQueryFile,&lt;br /&gt;and DragFinish.&lt;br /&gt;The DragAcceptFiles function tells Windows that a specific window&lt;br /&gt;(that is, your Visual Basic application's form) can accept files&lt;br /&gt;dropped from File Manager. The Declare statement for this function is:&lt;br /&gt;&lt;br /&gt;Private Declare Sub DragAcceptFiles Lib "shell" (ByVal hWnd&lt;br /&gt; As Integer, ByVal bool As Integer)&lt;br /&gt;&lt;br /&gt;(Note that this Declare statement must be typed as a single line of&lt;br /&gt;code.)&lt;br /&gt;The DragAcceptFiles function takes only two arguments: the handle of&lt;br /&gt;the window that will accept the dropped files, and an integer value&lt;br /&gt;that specifies if the file can be accepted or ignored. If the Boolean&lt;br /&gt;argument is set to True, the window can accept dropped files; if it is&lt;br /&gt;set to zero, the window can no longer accept dropped files.&lt;br /&gt;&lt;br /&gt;You can retrieve the name of the file that was dropped on the target&lt;br /&gt;window by calling the DragQueryFile function. This function's&lt;br /&gt;declaration statement is:&lt;br /&gt;&lt;br /&gt;Private Declare Function DragQueryFile Lib "shell" (ByVal wParam&lt;br /&gt; As Integer, ByVal Index As Integer, ByVal lpszFile&lt;br /&gt; As Any, ByVal BufferSize As Integer) As Integer&lt;br /&gt;&lt;br /&gt;(Note that this Declare statement must be typed as a single line of&lt;br /&gt;code.)&lt;br /&gt;DragQueryFile requires four arguments, as follows:&lt;br /&gt;&lt;br /&gt;wParam      An integer value that contains the internal data&lt;br /&gt;          structure's handle. This is provided by the WM_DROPFILES&lt;br /&gt;          message.&lt;br /&gt;Index       An integer value containing the number of the individual&lt;br /&gt;          file to be retrieved. If this value is -1, the number of&lt;br /&gt;          files listed in the wParam structure will be returned.&lt;br /&gt;lpszFile    A string buffer that contains the name of the dropped file.&lt;br /&gt;BufferSize  An integer value containing the maximum number of&lt;br /&gt;          characters in lpszFile.&lt;br /&gt;&lt;br /&gt;After calling the DragQueryFile function, an integer value reports the&lt;br /&gt;status of the function. This value contains the number of characters&lt;br /&gt;copied to the lpszFile string or the number of files available if&lt;br /&gt;Index was set to zero.&lt;br /&gt;The third function needed to work with drag-and-drop files is the&lt;br /&gt;DragFinish function. This function simply requires that the internal&lt;br /&gt;data structure's handle be passed to it. DragFinish frees all&lt;br /&gt;structures used when transferring the file to the target application.&lt;br /&gt;&lt;br /&gt;The final step is to process the WM_DROPFILES message. This message is&lt;br /&gt;sent by Windows each time it needs to send a drag-and-drop request to&lt;br /&gt;a program. In your Visual Basic program you need only use the Message&lt;br /&gt;Blaster custom control to intercept the WM_DROPFILES message before&lt;br /&gt;Windows actually processes it itself. In the example program below,&lt;br /&gt;we use the Message Blaster control to retrieve the name of the dropped&lt;br /&gt;file and store that name in the List Box control.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below shows how to allow your Visual Basic&lt;br /&gt;application to accept drag-and-drop files from File Manager. To use&lt;br /&gt;this demonstration program, first execute the Windows Explorer or&lt;br /&gt;File Manager application. Then run the DEMO.EXE program. When you drag&lt;br /&gt;a file from File Manager to DEMO.EXE's window and release the mouse&lt;br /&gt;button, the filename will be displayed in the List Box control.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the General Declarations section of&lt;br /&gt;  Form1 (note that each Declare statement must be typed as a single&lt;br /&gt;  line of code):&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Private Declare Sub DragAcceptFiles Lib "shell" (ByVal hWnd&lt;br /&gt; As Integer, ByVal bool As Integer)&lt;br /&gt;Private Declare Function DragQueryFile Lib "shell" (ByVal wParam&lt;br /&gt; As Integer, ByVal Index As Integer, ByVal lpszFile&lt;br /&gt; As Any, ByVal BufferSize As Integer) As Integer&lt;br /&gt;Private Declare Sub DragFinish Lib "shell" (ByVal hDrop As Integer)&lt;br /&gt;&lt;br /&gt;Const WM_DROPFILES =3D &amp;H233&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  msgblaster1.MsgList(0) =3D WM_DROPFILES&lt;br /&gt;  msgblaster1.hWndTarget =3D Me.hWnd&lt;br /&gt;  msgblaster1.MsgPassage(0) =3D 1&lt;br /&gt;  DragAcceptFiles Me.hWnd, True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a Message Blaster custom control to Form1. MsgBlaster1 is&lt;br /&gt;  created by default.&lt;br /&gt;5. Add the following code to the MsgBlaster1_Message event for&lt;br /&gt;  MsgBlaster1:&lt;br /&gt;&lt;br /&gt;Private Sub MsgBlaster1_Message(MsgVal As Integer, wParam As Integer,&lt;br /&gt; lParam As Long, ReturnVal As Long)&lt;br /&gt;  Dim hFilesInfo As Integer&lt;br /&gt;  Dim szFileName As String&lt;br /&gt;  hFilesInfo =3D wParam&lt;br /&gt;  wTotalFiles =3D DragQueryFile(hFilesInfo, &amp;amp;amp;HFFFF, ByVal 0&amp;amp;, 0)&lt;br /&gt;  For wIndex =3D 0 To wTotalFiles&lt;br /&gt;      szFileName =3D Space$(50)&lt;br /&gt;      Retv% =3D DragQueryFile(hFilesInfo, wIndex, szFileName, 50)&lt;br /&gt;      list1.AddItem szFileName&lt;br /&gt;  Next wIndex&lt;br /&gt;  DragFinish (hFilesInfo)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Compile the program. From Visual Basic's File menu, select Make&lt;br /&gt;  EXE File to create the executable file called DEMO.EXE.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"DragAcceptFiles." (Product Documentation, SDKs, Windows 3.1 SDK,&lt;br /&gt; Programmer's Reference, Volume 2, Functions)&lt;br /&gt;"Drop Everything: How to Make Your Application Accept and Source&lt;br /&gt; Drag-and-Drop Files." (Books and Periodicals, Microsoft Systems&lt;br /&gt; Journal)&lt;br /&gt;"Message Blaster: Processing Messages in Visual Basic." (Technical&lt;br /&gt; Articles, Visual Basic Articles)&lt;br /&gt;"Using Drag-Drop in an Edit Control or a Combo Box." (Knowledge&lt;br /&gt; Base and Bug Lists, Windows SDK KBase, Related Information)&lt;br /&gt;"Using MSGBLAST.VBX Control to Process Windows Messages from VB."&lt;br /&gt; (Knowledge Base and Bug Lists, Visual Basic for Windows KBase,&lt;br /&gt; Related Information)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5797595040043087464?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5797595040043087464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5797595040043087464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5797595040043087464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5797595040043087464'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-86-allowing-visual-basic.html' title='Tip 86: Allowing a Visual Basic Application to Accept Drag-and-Drop'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2318981605344183516</id><published>2007-07-22T21:01:00.001-07:00</published><updated>2007-07-22T21:12:19.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 85: Hiding MDI Child Forms at Run Time</title><content type='html'>&lt;pre&gt;* VB-CODE (3)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;There may be situations in which you do not want a multiple-document&lt;br /&gt;interface (MDI) child form displayed while your program is executing.&lt;br /&gt;This article explains how you can hide an MDI child form.&lt;br /&gt;&lt;br /&gt;Making MDI Forms Invisible&lt;br /&gt;A multiple-document interface (MDI) child form allows you to have&lt;br /&gt;several windows open at the same time with different documents loaded&lt;br /&gt;in each window. This is how Notepad and similar programs operate so&lt;br /&gt;that you can switch between different text files. You cannot, however,&lt;br /&gt;hide an MDI child form at run time.&lt;br /&gt;&lt;br /&gt;So how can you temporarily hide an MDI child window from the user? By&lt;br /&gt;moving the window to a nonexistent position on your screen.&lt;br /&gt;In the example program below, the MDI child form is moved off the&lt;br /&gt;current viewing area of the screen. Windows=AE itself doesn't care where&lt;br /&gt;you place the window; and, to your user, it appears as if the window&lt;br /&gt;has been hidden.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program shows how you can temporarily hide an MDI child form in&lt;br /&gt;your Visual Basic=AE application. Run the program by pressing the F5&lt;br /&gt;function key. The MDI child window is visible on the screen. Click the&lt;br /&gt;mouse on the main form. The MDI child window disappears from view.&lt;br /&gt;Double-click the main form and the MDI child form is again visible on&lt;br /&gt;the screen.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;  Set the following properties for Form1:&lt;br /&gt;      BorderStyle =3D 1-Fixed Single&lt;br /&gt;      Height =3D 1140&lt;br /&gt;      Left =3D 2220&lt;br /&gt;      Top =3D 3030&lt;br /&gt;      Width =3D 4605&lt;br /&gt;2. From the Insert menu, select MDI Form. MDIForm1 is created by&lt;br /&gt;  default.&lt;br /&gt;3. From the Insert menu, select Form. Form2 is created by default.&lt;br /&gt;  Set the form's MDIChild property to True.&lt;br /&gt;4. Add the following code to the Click event for MDIForm:&lt;br /&gt;&lt;br /&gt;Private Sub MDIForm_Click()&lt;br /&gt;   Form1.Move -(2 * Form1.Width), -(2 * Form1.Height)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;5. Add the following code to the DblClick event for MDIForm:&lt;br /&gt;&lt;br /&gt;Private Sub MDIForm_DblClick()&lt;br /&gt;  Form1.Move 2220, 3030, 4605, 1140&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add the following code to the Form_Load event for MDIForm:&lt;br /&gt;&lt;br /&gt;Private Sub&lt;br /&gt;  MDIForm_Load()&lt;br /&gt;  Form1.Show&lt;br /&gt;  Form2.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q115781. "How to Create Hidden MDI Child Forms."&lt;br /&gt;"Hide Method." (Product Documentation, Office Developer's Kit 1.0,&lt;br /&gt; Visual Basic 3.0 Professional Edition, Language Reference)&lt;br /&gt;"Run-Time Features of MDI Child Forms." (Product Documentation,&lt;br /&gt; Office Developer's Kit 1.0, Visual Basic 3.0, Professional Edition,&lt;br /&gt; Programmer's Guide)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2318981605344183516?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2318981605344183516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2318981605344183516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2318981605344183516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2318981605344183516'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-85-hiding-mdi-child-forms-at-run.html' title='Tip 85: Hiding MDI Child Forms at Run Time'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-9148480937377254928</id><published>2007-07-22T20:59:00.000-07:00</published><updated>2007-07-22T21:12:45.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 84: Creating a Scrolling "Credits" Control</title><content type='html'>&lt;pre&gt;* VB-CODE (2)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;You can add visual appeal to your Visual Basic=AE applications by&lt;br /&gt;including a routine that automatically scrolls text vertically within&lt;br /&gt;a picture box. This article explains how you can add this&lt;br /&gt;functionality to your programs.&lt;br /&gt;&lt;br /&gt;Scrolling Text Vertically Within a Picture Box&lt;br /&gt;The Windows=AE application programming interface (API) BitBlt function&lt;br /&gt;can be used to copy a section of a Picture Box control to another&lt;br /&gt;section of that same control. You must remember to set the ScaleMode&lt;br /&gt;property of the Picture Box control to Pixel mode.&lt;br /&gt;&lt;br /&gt;The example program below shows how to use the BitBlt function to&lt;br /&gt;print scrolling text on a Picture Box control. A Timer control is&lt;br /&gt;used to print a string of text on the Picture Box control at selected&lt;br /&gt;time intervals.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the General Declarations section of&lt;br /&gt;  Form1 (note that the Declare statement must be typed as a single&lt;br /&gt;  line of code):&lt;br /&gt;&lt;br /&gt;Const SRCCOPY =3D &amp;amp;HCC0020&lt;br /&gt;Const ShowText$ =3D "This line of text scrolls vertically."&lt;br /&gt;&lt;br /&gt;Private Declare Function BitBlt Lib "GDI" (ByVal hDestDC As Integer,&lt;br /&gt; ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer,&lt;br /&gt; ByVal nHeight As Integer, ByVal hSrcDC As Integer,&lt;br /&gt; ByVal XSrc As Integer, ByVal YSrc As Integer,&lt;br /&gt; ByVal dwRop As Long) As Integer&lt;br /&gt;&lt;br /&gt;Dim ShowIt%&lt;br /&gt;&lt;br /&gt;3. Add a Picture Box control to Form1. Picture1 is created by&lt;br /&gt;  default. Set its ScaleMode property to 3-Pixel.&lt;br /&gt;4. Add a Timer control to Form1. Timer1 is created by default. Set&lt;br /&gt;  its Interval property to 25.&lt;br /&gt;5. Add the following code to the Timer event for Timer1 (note that&lt;br /&gt;  the Ret =3D line must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub Timer1_Timer()&lt;br /&gt;  Dim Ret As Integer&lt;br /&gt;  If (ShowIt% =3D 30) Then&lt;br /&gt;      Picture1.CurrentX =3D 0&lt;br /&gt;      Picture1.CurrentY =3D Picture1.ScaleHeight - 30&lt;br /&gt;      Picture1.Print ShowText$&lt;br /&gt;      ShowIt% =3D 0&lt;br /&gt;  Else&lt;br /&gt;      Ret =3D BitBlt(Picture1.hDC, 0, 0, Picture1.ScaleWidth,&lt;br /&gt;          Picture1.ScaleHeight - 1, Picture1.hDC, 0, 1, SRCCOPY)&lt;br /&gt;      ShowIt% =3D ShowIt% + 1&lt;br /&gt;  End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the program by pressing the F5 function key. After a short time,&lt;br /&gt;the text "This line of text scrolls vertically." will be displayed in&lt;br /&gt;the Picture Box control. Each time the Timer control reaches 25, the&lt;br /&gt;line of text will be scrolled upward in the Picture Box control.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Tip 45: Using BitBlt to Display Bitmaps&lt;br /&gt;"BITBLT: Tests the BitBlt Function." (Sample Code, Sample City,&lt;br /&gt; Visual Basic Samples)&lt;br /&gt;Knowledge Base Q71104. "How to Use Windows BitBlt Function in&lt;br /&gt; Visual Basic Application."&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-9148480937377254928?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/9148480937377254928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=9148480937377254928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9148480937377254928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/9148480937377254928'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-84-creating-scrolling-credits.html' title='Tip 84: Creating a Scrolling &quot;Credits&quot; Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4668466987209180865</id><published>2007-07-22T20:57:00.002-07:00</published><updated>2007-07-22T21:14:06.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 83: Listing Fields and Associated Properties for an Attached</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;This article describes a sample user-defined Access Basic function&lt;br /&gt;that you can use to retrieve all field names and their associated&lt;br /&gt;properties for an attached Microsoft=AE Access=AE table.&lt;br /&gt;&lt;br /&gt;More Information&lt;br /&gt;This article assumes that you are familiar with Access Basic and with&lt;br /&gt;creating Microsoft=AE Access=AE applications using the programming tools&lt;br /&gt;provided with Microsoft Access. For more information on Access Basic,&lt;br /&gt;please refer to the Building Applications manual for Access 2.0 and&lt;br /&gt;the Introduction to Programming manual for Access 1.x.&lt;br /&gt;&lt;br /&gt;The example program below uses tools in Visual Basic=AE to get&lt;br /&gt;information from a Microsoft Access database.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This program demonstrates how to create and use the sample&lt;br /&gt;ListFieldProperties() function.&lt;br /&gt;&lt;br /&gt;1. Open the sample database NWIND.MDB. (This database can usually be&lt;br /&gt;  found in the C:\ACCESS\SAMPAPPS directory.)&lt;br /&gt;2. From the File menu, choose New, and select Module.&lt;br /&gt;3. Enter the following code to create the ListFieldProperties()&lt;br /&gt;  function:&lt;br /&gt;&lt;br /&gt;Function ListFieldProperties ()&lt;br /&gt;  Dim MyDB As Database&lt;br /&gt;  Dim MyTable As TableDef&lt;br /&gt;  Set MyDB =3D DBEngine(0)(0)&lt;br /&gt;  Set MyTable =3D MyDB.TableDefs("Categories")&lt;br /&gt;  For X =3D 0 To MyTable.Fields.Count - 1&lt;br /&gt;  Debug.Print MyTable.Fields(X).Name&lt;br /&gt;      For Y =3D 0 To MyTable.Fields(X).Properties.Count - 1&lt;br /&gt;          Debug.Print Chr(9) &amp;amp; MyTable.Fields(X).Properties(Y).Name&lt;br /&gt;      Next Y&lt;br /&gt;  Next X&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;4. From the View menu, choose Immediate Window.&lt;br /&gt;5. In the Immediate window, type the following line and press the&lt;br /&gt;  ENTER key:&lt;br /&gt;&lt;br /&gt;? ListFieldProperties()&lt;br /&gt;&lt;br /&gt;The name of each field in the Categories table will be displayed along&lt;br /&gt;with that field's properties.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Name Property." (Product Documentation, Office Developer's Kit 1.0,&lt;br /&gt; Microsoft Access 2.0, Language Reference)&lt;br /&gt;"Using Properties." (Product Documentation, Office Developer's Kit 1.0,&lt;br /&gt; Microsoft Access 2.0, Advanced Topics)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4668466987209180865?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4668466987209180865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4668466987209180865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4668466987209180865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4668466987209180865'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-83-listing-fields-and-associated.html' title='Tip 83: Listing Fields and Associated Properties for an Attached'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3057853779405879536</id><published>2007-07-22T20:57:00.001-07:00</published><updated>2007-07-22T21:14:33.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 82: Retrieving Multiple Filenames from the Common Dialog Control</title><content type='html'>&lt;pre&gt;* VB-CODE (4)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;The Common Dialog control in Visual Basic® allows you to display an&lt;br /&gt;Open File dialog box. You can select one or more filenames from the&lt;br /&gt;Open File dialog box to use within your Visual Basic program. This&lt;br /&gt;article explains how you can retrieve multiple filenames from the&lt;br /&gt;dialog box, parse them into separate strings, and display them in a&lt;br /&gt;List Box control.&lt;br /&gt;&lt;br /&gt;Parsing Filenames from the Common Dialog Control&lt;br /&gt;In a Visual Basic® application, you can use an Open File dialog box&lt;br /&gt;to allow your users to select a file. Using the Open File dialog box,&lt;br /&gt;users can select the drive and directory, as well as the individual&lt;br /&gt;files they want to use. To select a file, the user simply clicks the&lt;br /&gt;filename. The dialog boxs FileName property can be used in your&lt;br /&gt;program to determine the name of the selected file.&lt;br /&gt;&lt;br /&gt;If the Flags property of the Common Dialog control is set to a value&lt;br /&gt;of 512 (&amp;H200), the user can select a group of files to work with. To&lt;br /&gt;select multiple files, the user would hold the Shift key down while&lt;br /&gt;clicking the mouse on each filename. As with selecting a single file,&lt;br /&gt;the FileName property of the dialog box would return the names of all&lt;br /&gt;the selected files. Each filename is separated by a space character.&lt;br /&gt;The InStr function can be used within a Do-While loop to parse, or&lt;br /&gt;extract, each individual filename from the FileName property. Assuming&lt;br /&gt;that the filenames are stored in the string called FileNames, we can&lt;br /&gt;tell the InStr function to search through the string until it finds a&lt;br /&gt;space character. To extract a single filename, you need to first save&lt;br /&gt;the position in the target string that you are starting to search from&lt;br /&gt;(this is the beginning of the filename). Then you would use the InStr&lt;br /&gt;function to search for the first space character in the string. If a&lt;br /&gt;space character is found, you can use the starting position and the&lt;br /&gt;position returned by InStr to extract that single filename.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add a Common Dialog control to Form1. CommonDialog1 is created by&lt;br /&gt;  default.&lt;br /&gt;3. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt;4. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;  default.&lt;br /&gt;5. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;  Dim DelimPos As Integer&lt;br /&gt;  Dim FileNames As String&lt;br /&gt;  Dim NextName As String&lt;br /&gt;&lt;br /&gt;  CommonDialog1.Flags = &amp;amp;amp;H200&amp;amp;&lt;br /&gt;  CommonDialog1.Action = 1&lt;br /&gt;  CommonDialog1.Filter = 1&lt;br /&gt;&lt;br /&gt;  FileNames = CommonDialog1.FileName&lt;br /&gt;&lt;br /&gt;  Do While Len(FileNames) &gt; 0&lt;br /&gt;      DelimPos = InStr(FileNames, " ")&lt;br /&gt;      If DelimPos = 0 Then&lt;br /&gt;          NextName = FileNames&lt;br /&gt;          FileNames = ""&lt;br /&gt;      Else&lt;br /&gt;          NextName = Mid$(FileNames, 1, DelimPos - 1)&lt;br /&gt;&lt;br /&gt;          FileNames = Mid$(FileNames, DelimPos + 1)&lt;br /&gt;      End If&lt;br /&gt;  List1.AddItem NextName&lt;br /&gt;  Loop&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the example program by pressing the F5 function key. Click the&lt;br /&gt;command button to call up the Open File dialog box. Type a filename&lt;br /&gt;such as *.* and click the OK command button. Select several files&lt;br /&gt;from the file list by holding the SHIFT key down and clicking each&lt;br /&gt;individual filename. Click the OK command button when you have&lt;br /&gt;selected several files. The files you selected will be displayed in&lt;br /&gt;the List Box control.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3057853779405879536?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3057853779405879536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3057853779405879536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3057853779405879536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3057853779405879536'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-82-retrieving-multiple-filenames.html' title='Tip 82: Retrieving Multiple Filenames from the Common Dialog Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8945627667665803584</id><published>2007-07-22T20:56:00.001-07:00</published><updated>2007-07-22T21:15:07.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 81: Repairing and Compressing a Microsoft Access Database from</title><content type='html'>&lt;pre&gt;* VB-CODE (3)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;Within a Visual Basic® application, you can compress and repair a&lt;br /&gt;Microsoft® Access® database (.MDB) file. This article explains how you&lt;br /&gt;can accomplish these two tasks in Visual Basic.&lt;br /&gt;&lt;br /&gt;Repairing and Compacting Access Files&lt;br /&gt;On occasion, a Microsoft® Access® database file can become damaged.&lt;br /&gt;For example, a database can become damaged if the computer system is&lt;br /&gt;powered down without first closing the database file. The&lt;br /&gt;RepairDatabase statement provided in Visual Basic® can be used to&lt;br /&gt;repair a previously corrupted database file. You need only pass the&lt;br /&gt;name of the .MDB file to the statement to repair it.&lt;br /&gt;&lt;br /&gt;When records are deleted from a database file, the file can become&lt;br /&gt;defragmented. You can compress a defragmented database file by using&lt;br /&gt;Visual Basic's CompactDatabase statement. CompactDatabase's main&lt;br /&gt;purpose is to compress a Microsoft Access file, but it can also be&lt;br /&gt;used to change the database's sort order, encrypt/decrypt the&lt;br /&gt;database, or create a Microsoft Access 1.0 compatible file.&lt;br /&gt;&lt;br /&gt;The CompactDatabase statement requires four arguments, as follows:&lt;br /&gt;&lt;br /&gt;SourceFile  The database's complete path and filename.&lt;br /&gt;DestFile    The database's new path and filename.&lt;br /&gt;Locale      The sorting order to be used.&lt;br /&gt;Options     Set to one of the following values:&lt;br /&gt;          DB_ENCRYPT    Encrypt database.&lt;br /&gt;          DB_DECRYPT    Decrypt database.&lt;br /&gt;          DB_VERSION10  Create a compatible Access 1.0 database&lt;br /&gt;                        file.&lt;br /&gt;&lt;br /&gt;When the CompactDatabase statement is executed, it copies each valid&lt;br /&gt;record from the original database file to the new database file. Note&lt;br /&gt;that these two filenames must be different and that the security&lt;br /&gt;settings of the original file are automatically transferred to the&lt;br /&gt;new file.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program below shows how to repair and/or compact a Microsoft&lt;br /&gt;Access database (.MDB) file. To repair a damaged database file, click&lt;br /&gt;the "Repair" command button; to compress (remove deleted records) a&lt;br /&gt;database file, click the "Compact" command button.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add a Common Dialog control to Form1. CommonDialog1 is created by&lt;br /&gt;  default.&lt;br /&gt;3. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;  default. Set its Caption property to "Repair".&lt;br /&gt;4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;  On Error GoTo Repair_Error&lt;br /&gt;  Dim MDB_Name As String&lt;br /&gt;&lt;br /&gt;  CommonDialog1.Filter = "Access (*.mdb)|*.mdb"&lt;br /&gt;  CommonDialog1.Flags = &amp;H1000&lt;br /&gt;  CommonDialog1.FilterIndex = 1&lt;br /&gt;  CommonDialog1.Action = 1&lt;br /&gt;&lt;br /&gt;  If CommonDialog1.FileName &lt;&gt; "" Then&lt;br /&gt;      Screen.MousePointer = 11&lt;br /&gt;      MDB_Name = CommonDialog1.FileName&lt;br /&gt;      RepairDatabase (MDB_Name)&lt;br /&gt;      Screen.MousePointer = 0&lt;br /&gt;      MsgBox "Database repaired successfully", 64, "Repair"&lt;br /&gt;  End If&lt;br /&gt;  Screen.MousePointer = 0&lt;br /&gt;  Exit Sub&lt;br /&gt;Repair_Error:&lt;br /&gt;  MsgBox "Error when repairing database", 16, "Error"&lt;br /&gt;  Screen.MousePointer = 0&lt;br /&gt;  Exit Sub&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;5. Add a second Command Button control to Form1. Command2 is created&lt;br /&gt;  by default. Set its Caption property to "Compact".&lt;br /&gt;6. Add the following code to the Click event for Command2:&lt;br /&gt;&lt;br /&gt;Private Sub Command2_Click()&lt;br /&gt;  On Error GoTo Compact_Error&lt;br /&gt;&lt;br /&gt;  Dim MDB_Name As String&lt;br /&gt;  Dim MDB_NewName As String&lt;br /&gt;  Dim MDB_Local As String&lt;br /&gt;  Dim MDB_Options As String&lt;br /&gt;&lt;br /&gt;  MDB_NewName = "c:\dummy.mdb"&lt;br /&gt;  CommonDialog1.Filter = "Access (*.MDB)|*.mdb"&lt;br /&gt;  CommonDialog1.Flags = &amp;amp;H1000&lt;br /&gt;  CommonDialog1.FilterIndex = 1&lt;br /&gt;  CommonDialog1.Action = 1&lt;br /&gt;&lt;br /&gt;  If CommonDialog1.FileName &lt;&gt; "" Then&lt;br /&gt;      MDB_Name = CommonDialog1.FileName&lt;br /&gt;      CompactDatabase MDB_Name, MDB_NewName &amp; MDB_Local &amp;amp; MDB_Options&lt;br /&gt;      Kill MDB_Name&lt;br /&gt;      Name MDB_NewName &amp; MDB_Local &amp;amp; MDB_Options As MDB_Name&lt;br /&gt;      MsgBox "Database compressed OK", 64, "Compact"&lt;br /&gt;  End If&lt;br /&gt;  Exit Sub&lt;br /&gt;Compact_Error:&lt;br /&gt;  MsgBox "Unable to compress database", 16, "Error"&lt;br /&gt;  Exit Sub&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8945627667665803584?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8945627667665803584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8945627667665803584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8945627667665803584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8945627667665803584'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-81-repairing-and-compressing.html' title='Tip 81: Repairing and Compressing a Microsoft Access Database from'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7379613733388427446</id><published>2007-07-22T20:55:00.001-07:00</published><updated>2007-07-22T21:15:57.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 80: Drawing Borders Around Controls</title><content type='html'>&lt;pre&gt;* VB-CODE (2)&lt;br /&gt;Abstract&lt;br /&gt;You can draw borders of any width around controls such as Text Boxes&lt;br /&gt;to give the control a three-dimensional look. This article explains&lt;br /&gt;how to add a border to a control.&lt;br /&gt;&lt;br /&gt;Using a Pen and Brush to Draw Borders&lt;br /&gt;Through functions included in the Windows® application programming&lt;br /&gt;interface (API), you can draw borders around controls in your Visual&lt;br /&gt;Basic® application. The CreatePen function can be used to draw lines&lt;br /&gt;(solid, invisible, dotted) and the CreateSolidBrush function can be&lt;br /&gt;used to fill areas of an object.&lt;br /&gt;&lt;br /&gt;After you have created a pen and brush to use with the specific&lt;br /&gt;object (such as a Text Box control) that you want to draw filled&lt;br /&gt;lines around, you need to determine the coordinates of the bounding&lt;br /&gt;rectangle around the target object. Next, you must intercept the&lt;br /&gt;Windows WM_PAINT message. The WM_PAINT message triggers Visual&lt;br /&gt;Basic's Paint event. The message is sent to a window when the window&lt;br /&gt;needs to have its client area redrawn. The Message Blaster custom&lt;br /&gt;control can be used to process the WM_PAINT message. For information&lt;br /&gt;on the Message Blaster custom control, see the reference materials&lt;br /&gt;listed at the end of this article. Once the Paint event has been&lt;br /&gt;triggered, the control is redrawn with the desired borders around&lt;br /&gt;its perimeter.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program below shows how to add a three-dimensional look to a Text&lt;br /&gt;Box control. This program draws a filled line across the top and down&lt;br /&gt;the right-hand border of the Text Box.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;3. From Visual Basic's Tools menu, select Custom Controls and add the&lt;br /&gt;  MSGBLAST.VBX to your Toolbox. Add a Message Blaster control to&lt;br /&gt;  Form1. MsgBlaster1 is created by default.&lt;br /&gt;4. Add the following Dim, Constant, and Declare statements to the&lt;br /&gt;  General Declarations section of Form1 (note that each Private&lt;br /&gt;  Declare statement must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Const PS_SOLID = &amp;H0&lt;br /&gt;Const WM_PAINT = &amp;amp;HF&lt;br /&gt;&lt;br /&gt;Private Declare Function DeleteObject Lib "GDI" (ByVal hObject&lt;br /&gt; As Integer) As Integer&lt;br /&gt;Private Declare Function SelectObject Lib "GDI" (ByVal hDC&lt;br /&gt; As Integer, ByVal hObject As Integer) As Integer&lt;br /&gt;Private Declare Function Polygon Lib "GDI" (ByVal hDC&lt;br /&gt; As Integer, lpPoints As POINTAPI, ByVal nCount&lt;br /&gt; As Integer) As Integer&lt;br /&gt;Private Declare Function CreateSolidBrush Lib "GDI" (ByVal crColor&lt;br /&gt; As Long) As Integer&lt;br /&gt;Private Declare Function GetDC Lib "User" (ByVal hWnd&lt;br /&gt; As Integer) As Integer&lt;br /&gt;Private Declare Function CreatePen Lib "GDI" (ByVal nPenStyle&lt;br /&gt; As Integer, ByVal nWidth As Integer, ByVal crColor&lt;br /&gt; As Long) As Integer&lt;br /&gt;&lt;br /&gt;Dim TX As Integer&lt;br /&gt;Dim TY As Integer&lt;br /&gt;Dim DC_FRM As Integer&lt;br /&gt;Dim PT1() As POINTAPI&lt;br /&gt;Dim PT2() As POINTAPI&lt;br /&gt;&lt;br /&gt;5. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  MsgBlaster1.hWndTarget = Form1.hWnd&lt;br /&gt;  MsgBlaster1.MsgList(0) = WM_PAINT&lt;br /&gt;  MsgBlaster1.MsgPassage(0) = -1&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add the following code to the Form_Activate event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Activate()&lt;br /&gt;  TX = Screen.TwipsPerPixelX&lt;br /&gt;  TY = Screen.TwipsPerPixelY&lt;br /&gt;  DC_FRM = GetDC(Form1.hWnd)&lt;br /&gt;  Get_Rect&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;7. Add the following code to the MsgBlaster1_Message event (note that&lt;br /&gt;  the Private statement must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub MsgBlaster1_Message(MsgVal As Integer, wParam&lt;br /&gt; As Integer, lParam As Long, ReturnVal As Long)&lt;br /&gt;  Shadow&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;8. Create a new procedure called Get_Rect. Add the following code to&lt;br /&gt;  this procedure:&lt;br /&gt;&lt;br /&gt;Sub Get_Rect()&lt;br /&gt;  ReDim PT1(6) As POINTAPI&lt;br /&gt;  ReDim PT2(6) As POINTAPI&lt;br /&gt;&lt;br /&gt;  PT1(0).X = Text1.Left / TX&lt;br /&gt;  PT1(0).Y = Text1.Top / TY&lt;br /&gt;  PT1(1).X = (Text1.Left) / TX + 2&lt;br /&gt;  PT1(1).Y = (Text1.Top) / TY - 2&lt;br /&gt;  PT1(2).X = (Text1.Left + Text1.Width) / TX + 2&lt;br /&gt;  PT1(2).Y = (Text1.Top) / TY - 2&lt;br /&gt;  PT1(3).X = (Text1.Left + Text1.Width) / TX + 2&lt;br /&gt;  PT1(3).Y = (Text1.Top + Text1.Height) / TY - 2&lt;br /&gt;  PT1(4).X = (Text1.Left + Text1.Width) / TX&lt;br /&gt;  PT1(4).Y = (Text1.Top + Text1.Height) / TY&lt;br /&gt;  PT1(5).X = (Text1.Left + Text1.Width) / TX&lt;br /&gt;  PT1(5).Y = (Text1.Top) / TY&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;9. Create a new procedure called Shadow. Add the following code to&lt;br /&gt;  this procedure:&lt;br /&gt;&lt;br /&gt;Sub Shadow()&lt;br /&gt;  hbr = CreateSolidBrush(RGB(125, 125, 125))&lt;br /&gt;  hpen = CreatePen(PS_SOLID, 1, RGB(125, 125, 125))&lt;br /&gt;&lt;br /&gt;  r = SelectObject(DC_FRM, hbr)&lt;br /&gt;  r = SelectObject(DC_FRM, hpen)&lt;br /&gt;  r = Polygon(DC_FRM, PT1(0), 6)&lt;br /&gt;  r = SelectObject(DC_FRM, rbrush)&lt;br /&gt;  r1 = DeleteObject(r)&lt;br /&gt;  r = SelectObject(DC_FRM, rpen)&lt;br /&gt;  r1 = DeleteObject(r)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;10. Add a new module to the project. Module.Bas is created by default.&lt;br /&gt;11. Add the following POINTAPI structure to Module.Bas:&lt;br /&gt;&lt;br /&gt;Type POINTAPI   '4 bytes&lt;br /&gt;  X As Integer&lt;br /&gt;  Y As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Advanced Programming in Visual Basic 3.0 (Accessing the Windows&lt;br /&gt; API)." (Conferences and Seminars, Tech·Ed, March 1994, Visual&lt;br /&gt; Basic)&lt;br /&gt;"Message Blaster: Processing Messages in Visual Basic." (Technical&lt;br /&gt; Articles, Visual Basic Articles)&lt;br /&gt;"Tips and Tricks for Visual Basic." (Conferences and Seminars,&lt;br /&gt; Tech·Ed, March 1994, Visual Basic)&lt;br /&gt;"Using MSGBLAST.VBX Control to Process Windows Messages from VB."&lt;br /&gt; (Knowledge Base and Bug Lists, Visual Basic for Windows KBase,&lt;br /&gt; Miscellaneous Related Information.)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7379613733388427446?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7379613733388427446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7379613733388427446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7379613733388427446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7379613733388427446'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-80-drawing-borders-around-controls.html' title='Tip 80: Drawing Borders Around Controls'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1709213810249655346</id><published>2007-07-22T20:54:00.001-07:00</published><updated>2007-07-22T21:16:58.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 79: Closing All MDI Child Windows at One Time</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;This article explains how you can simultaneously close all child&lt;br /&gt;windows of a running Visual Basic® application.&lt;br /&gt;&lt;br /&gt;Using the Count Property of MDI Forms&lt;br /&gt;The multiple document interface (MDI) feature of Visual Basic® allows&lt;br /&gt;you to create applications that have multiple forms within a single&lt;br /&gt;parent form. This allows you to use the multitasking functions of the&lt;br /&gt;Windows® operating system in your programs.&lt;br /&gt;The Windows Notepad is an example of an MDI application. You can open&lt;br /&gt;several text files at one time and move between each document with a&lt;br /&gt;click of the mouse.&lt;br /&gt;&lt;br /&gt;When you create a child form while your program is executing, you must&lt;br /&gt;also remember to close all the open child windows before your&lt;br /&gt;application terminates. Otherwise, you could cause some unforeseen&lt;br /&gt;problems with other applications.&lt;br /&gt;The count property of a control, such as a form, can be used to&lt;br /&gt;determine how many members of that particular collection exist. In&lt;br /&gt;this case, the collection refers to the child forms of the parent&lt;br /&gt;form. We can, therefore, determine how many child forms exist in our&lt;br /&gt;application program by executing a statement such as:&lt;br /&gt;&lt;br /&gt;X = Forms.Count&lt;br /&gt;&lt;br /&gt;After this statement executes, the variable X will contain the number&lt;br /&gt;of child forms that we have created. It is important to decrement this&lt;br /&gt;value by one because the count starts with the value of one, not zero.&lt;br /&gt;Once we know how many child forms we have created within our&lt;br /&gt;application program, we can use the TypeOf statement in a loop to&lt;br /&gt;close each child form that exists. The TypeOf statement is used to&lt;br /&gt;determine the type of object you are dealing with. In this case, we&lt;br /&gt;want to find out if the object is a form (Form1, the name of the&lt;br /&gt;child form).&lt;br /&gt;&lt;br /&gt;The final step to removing the child forms from the parent form is to&lt;br /&gt;use the Unload statement. Therefore, to remove all child forms from&lt;br /&gt;our program while it is running, we simply check each object in the&lt;br /&gt;form, making sure that it is indeed a child form of the MDI form, and&lt;br /&gt;execute an Unload statement to close the form.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The following program shows how to close all child forms at one time.&lt;br /&gt;Run the program by pressing the F5 function key. The MDIForm1 form is&lt;br /&gt;displayed. Double-click the client area of MDIForm1 to create a child&lt;br /&gt;form (Form1). Do this until you have several child forms visible on&lt;br /&gt;the screen. Click the "Close Children" menu option to close all child&lt;br /&gt;windows.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;  Set the MDIChild property to True.&lt;br /&gt;2. From Visual Basic's Insert menu, click "MDI Form" to create a&lt;br /&gt;  Multiple Document Interface form. MDIForm1 is created by default.&lt;br /&gt;3. Add the following code to the DblClick event for MDIForm1:&lt;br /&gt;&lt;br /&gt;Private Sub MDIForm_DblClick()&lt;br /&gt;  Dim X As New Form1&lt;br /&gt;  X.Show&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. From Visual Basic's Tools menu, click Menu Editor. Set the Caption&lt;br /&gt;  field to "&amp;amp;Close Children" and the Name field to "mnuClose".&lt;br /&gt;5. Add the following code to the mnuClose_Click event:&lt;br /&gt;&lt;br /&gt;Private Sub mnuClose_Click()&lt;br /&gt;  Dim X As Integer&lt;br /&gt;  For X = (Forms.Count - 1) To 0 Step -1&lt;br /&gt;      If TypeOf Forms(X) Is Form1 Then&lt;br /&gt;          Unload Forms(X)&lt;br /&gt;      End If&lt;br /&gt;  Next X&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. From Visual Basic's Tools menu, select Project Options. Set the&lt;br /&gt;  StartUp Form to MDIForm1.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Opening and Closing MDI Windows." (Product Documentation, SDKs, The&lt;br /&gt; Windows Interface GuidelinesA Guide for Designing Software)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1709213810249655346?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1709213810249655346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1709213810249655346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1709213810249655346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1709213810249655346'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-79-closing-all-mdi-child-windows-at.html' title='Tip 79: Closing All MDI Child Windows at One Time'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3078042883622645194</id><published>2007-07-22T20:53:00.000-07:00</published><updated>2007-07-22T21:17:54.747-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 78: Retrieving the Names of All Printers</title><content type='html'>&lt;pre&gt;* VB-CODE (4)&lt;br /&gt;Abstract&lt;br /&gt;When Windows® is executed, it uses the WIN.INI initialization file to&lt;br /&gt;determine what printer is attached to the computer system. This&lt;br /&gt;article explains how to determine the names of all printers as stored&lt;br /&gt;in the Devices section of the WIN.INI file.&lt;br /&gt;&lt;br /&gt;Populating a List Box Control with Printer Names&lt;br /&gt;You can retrieve the names of all printers attached to the computer&lt;br /&gt;system by using the Windows® application programming interface (API)&lt;br /&gt;GetProfileString function. To declare this function in your Visual&lt;br /&gt;Basic® application, include the following Declare statement in the&lt;br /&gt;Global Module or General Declarations section of your program:&lt;br /&gt;&lt;br /&gt;Private Declare Function GetProfileString Lib "Kernel" (ByVal&lt;br /&gt; lpAppName As String, ByVal lpKeyName As Any, ByVal&lt;br /&gt; lpDefault As String, ByVal lpReturnedString As String, ByVal&lt;br /&gt; nSize As Integer) As Integer&lt;br /&gt;&lt;br /&gt;(Note that this Declare statement must be typed as a single line of&lt;br /&gt;code.)&lt;br /&gt;The GetProfileString function requires five arguments, as follows:&lt;br /&gt;&lt;br /&gt;lpAppName         A string containing the section name. Not case-&lt;br /&gt;                sensitive.&lt;br /&gt;lpKeyName         A string containing the entry name to retrieve. Not&lt;br /&gt;                case-sensitive. If this is a long value set to zero,&lt;br /&gt;                a list of all entries found in the specified section&lt;br /&gt;                will be returned in lpReturnedString.&lt;br /&gt;lpDefault         A string containing the default value to return if&lt;br /&gt;                no entry is found.&lt;br /&gt;lpReturnedString  A string buffer that will hold the information the&lt;br /&gt;                function retrieves.&lt;br /&gt;nSize             An integer value set to the maximum number of&lt;br /&gt;                characters to be stored in lpReturnedString.&lt;br /&gt;&lt;br /&gt;Calling the GetProfileString function returns an integer value. This&lt;br /&gt;value is a count of the number of characters that were stored in the&lt;br /&gt;lpReturnedString buffer, but does not include the terminating NULL&lt;br /&gt;byte. (Each entry returned in lpReturnedString is terminated by a NULL&lt;br /&gt;character.) When your program is retrieving more than a single entry,&lt;br /&gt;the last entry in the buffer is marked with two consecutive NULL bytes&lt;br /&gt;to signal the end of the list.&lt;br /&gt;Because we want to retrieve the names of all printers stored in the&lt;br /&gt;devices section of the WIN.INI file, we would execute the following&lt;br /&gt;statement:&lt;br /&gt;&lt;br /&gt;RetVal = GetProfileString(Section, 0&amp;, "", Buffer, Len(Buffer))&lt;br /&gt;&lt;br /&gt;This tells the GetProfileString function to retrieve all entries&lt;br /&gt;stored in the "devices" section of WIN.INI (notice the 0&amp;amp; argument to&lt;br /&gt;tell the function to provide us with a list of the entries).&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below populates a List Box control with the names&lt;br /&gt;of all printers attached to the computer system.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Declare statement to the General Declarations&lt;br /&gt;  section of Form1 (note that this Declare statement must be typed&lt;br /&gt;  as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function GetProfileString Lib "Kernel" (ByVal&lt;br /&gt; lpAppName As String, ByVal lpKeyName As Any, ByVal&lt;br /&gt; lpDefault As String, ByVal lpReturnedString As String, ByVal&lt;br /&gt; nSize As Integer) As Integer&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  Dim RetVal As Integer&lt;br /&gt;  Dim Buffer As String&lt;br /&gt;  Dim Section As String&lt;br /&gt;  Dim Start As Integer&lt;br /&gt;&lt;br /&gt;  Buffer = Space$(1024)&lt;br /&gt;  Section = "devices"&lt;br /&gt;  RetVal = GetProfileString(Section, 0&amp;amp;, "", Buffer, Len(Buffer))&lt;br /&gt;&lt;br /&gt;  Do Until Left$(Buffer, 1) = Chr$(0)&lt;br /&gt;      Start = InStr(Buffer, Chr$(0))&lt;br /&gt;      List1.AddItem Left$(Buffer, Start - 1)&lt;br /&gt;      Buffer = Right$(Buffer, Len(Buffer) - Start)&lt;br /&gt;  Loop&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Querying Windows for Printer Information." (Books and Periodicals,&lt;br /&gt; Inside Visual Basic Articles [Cobb])&lt;br /&gt;Knowledge Base Q105839. "Changing WIN.INI Printer Settings from VB&lt;br /&gt; Using Windows API."&lt;br /&gt;Knowledge Base Q75639. "Accessing Windows Initialization Files from&lt;br /&gt; Visual Basic."&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3078042883622645194?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3078042883622645194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3078042883622645194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3078042883622645194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3078042883622645194'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-78-retrieving-names-of-all-printers.html' title='Tip 78: Retrieving the Names of All Printers'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-2390028088165550767</id><published>2007-07-22T20:52:00.000-07:00</published><updated>2007-07-22T21:19:17.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 77: Determining the Amount of RAM Installed in a Computer</title><content type='html'>&lt;pre&gt;* VB-CODE (3)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;You can use the Windows® application programming interface (API)&lt;br /&gt;MemManInfo function to determine how much random access memory (RAM)&lt;br /&gt;is installed in the computer system. This article explains how to&lt;br /&gt;retrieve the amount of RAM.&lt;br /&gt;&lt;br /&gt;How Much Memory Do You Have?&lt;br /&gt;The Windows® application programming interface (API) MemManInfo&lt;br /&gt;function can be called to determine how much random access memory&lt;br /&gt;(RAM) is installed in your computer. This function is included in the&lt;br /&gt;TOOLHELP.DLL file.&lt;br /&gt;&lt;br /&gt;To use the MemManInfo function in a Visual Basic® application, you&lt;br /&gt;must declare the function as follows:&lt;br /&gt;&lt;br /&gt;Private Declare Function MemManInfo% Lib "Toolhelp.dll" (lpmmi&lt;br /&gt; As TagMemManInfo)&lt;br /&gt;&lt;br /&gt;The MemManInfo function takes only one argument: a structure that will&lt;br /&gt;hold information about the memory manager. The number of pages of&lt;br /&gt;memory is stored in the wPageSize field of this structure. We need&lt;br /&gt;only multiply the number of pages found by a value of 4 to calculate&lt;br /&gt;how much RAM is installed.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below shows how to retrieve the amount of RAM&lt;br /&gt;installed in the computer system.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  Dim R As Long&lt;br /&gt;  Text1.Text = "Total RAM installed: "&lt;br /&gt;  R = GetRAMSize&lt;br /&gt;  Text1.Text = Text1.Text + Str(R)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;3. Add a new module to the project. Module.Bas is created by default.&lt;br /&gt;4. Add the following code to the Module.Bas file:&lt;br /&gt;&lt;br /&gt;Type TagMemManInfo&lt;br /&gt;  dwSize As Long&lt;br /&gt;  dwLargestFreeBlock As Long&lt;br /&gt;  dwMaxPagesAvailable As Long&lt;br /&gt;  dwMaxPagesLockable As Long&lt;br /&gt;  dwTotalLinearSpace As Long&lt;br /&gt;  dwTotalUnlockedPages As Long&lt;br /&gt;  dwFreePages As Long&lt;br /&gt;  dwTotalPages As Long&lt;br /&gt;  dwFreeLinearSpace As Long&lt;br /&gt;  wPageSize As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Private Declare Function MemManInfo% Lib "Toolhelp.dll" (lpmmi&lt;br /&gt; As TagMemManInfo)&lt;br /&gt;&lt;br /&gt;Function GetRAMSize() As Long&lt;br /&gt;  Dim mmi As TagMemManInfo&lt;br /&gt;  mmi.dwSize = Len(mmi)&lt;br /&gt;  x% = MemManInfo(mmi)&lt;br /&gt;  If x% &lt;&gt; 0 Then&lt;br /&gt;      GetRAMSize = mmi.dwTotalPages * 4&lt;br /&gt;  Else&lt;br /&gt;      GetRAMSize = 0&lt;br /&gt;  End If&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;5. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;"Windows Questions and Answers." (Books and Periodicals, Microsoft&lt;br /&gt; Systems Journal, 1994 Volume 9, March 1994 Number 3)&lt;br /&gt;"FREEMEM2: Displays System Memory Information."  (Sample Code, Book&lt;br /&gt; and Periodical Samples, Microsoft Systems Journal Samples,&lt;br /&gt; 1994 Volume 9)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-2390028088165550767?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/2390028088165550767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=2390028088165550767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2390028088165550767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/2390028088165550767'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-77-determining-amount-of-ram.html' title='Tip 77: Determining the Amount of RAM Installed in a Computer'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6383763014874294191</id><published>2007-07-22T20:51:00.000-07:00</published><updated>2007-07-22T21:20:03.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 76: Detecting Right Mouse Button Clicks on List Box Controls</title><content type='html'>&lt;pre&gt; VB-CODE (2)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;When using a List Box control in a Visual Basic® application, the user&lt;br /&gt;can click on an item with the left mouse button. That item then&lt;br /&gt;becomes selected. This article explains how you can select items with&lt;br /&gt;the right mouse button instead of the left mouse button.&lt;br /&gt;&lt;br /&gt;Intercepting Right Mouse Button Click Events&lt;br /&gt;The LB_GETITEMRECT message can be used to determine which item in a&lt;br /&gt;List Box was selected. This message retrieves the coordinates of a&lt;br /&gt;bounding rectangle for the selected item in the List Box control. To&lt;br /&gt;invoke this message, you must tell it the entry number, starting at&lt;br /&gt;zero, whose dimensions you want to retrieve, as well as a RECT&lt;br /&gt;structure that will hold the coordinate information.&lt;br /&gt;&lt;br /&gt;To determine which item a user clicked on with the right mouse button,&lt;br /&gt;you trap the MouseUp event. The MouseUp event can be used to determine&lt;br /&gt;which mouse button was pressed and the mouse's current X and Y&lt;br /&gt;coordinates on the form or control.&lt;br /&gt;Once we have determined the mouse's position over the List Box control,&lt;br /&gt;we can use the Windows® application programming interface (API)&lt;br /&gt;SendMessage function to return the index number of the item the mouse&lt;br /&gt;was positioned over when the MouseUp event was triggered.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below displays a List Box control on a form.&lt;br /&gt;Whenever you click the right mouse button on an item in the List Box,&lt;br /&gt;the message "Right Click on" is displayed in the Text Box along with&lt;br /&gt;the index number corresponding to the selected item.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  List1.AddItem "Item #1"&lt;br /&gt;  List1.AddItem "Item #2"&lt;br /&gt;  List1.AddItem "Item #3"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;3. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt;4. Add the following code to the MouseUp event for List1 (note that&lt;br /&gt;  the Private lines must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Sub List1_MouseUp(Button As Integer, Shift As Integer,&lt;br /&gt; X As Single, Y As Single)&lt;br /&gt;  Dim Item%&lt;br /&gt;  If (Button = 2) Then&lt;br /&gt;      Item% = GetRClickedItem(List1, X, Y)&lt;br /&gt;      If (Item% = LB_ERR) Then&lt;br /&gt;          Text1.Text = "ERROR"&lt;br /&gt;      Else&lt;br /&gt;          Text1.Text = "Right Click on " + Str(Item%)&lt;br /&gt;      End If&lt;br /&gt;  End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;5. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;6. Add a new module to the project. Module.Bas is created by default.&lt;br /&gt;7. Add the following code to the Module.Bas file (note that the&lt;br /&gt;  Private and If lines must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Type RECT&lt;br /&gt;  Left As Integer&lt;br /&gt;  Top As Integer&lt;br /&gt;  Right As Integer&lt;br /&gt;  Bottom As Integer&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Global Const WM_USER = &amp;H400&lt;br /&gt;Global Const LB_GETITEMRECT = (WM_USER + 25)&lt;br /&gt;Global Const LB_ERR = (-1)&lt;br /&gt;&lt;br /&gt;Private Declare Function SendMessage Lib "User" (ByVal hWnd&lt;br /&gt; As Integer, ByVal wMsg As Integer, ByVal wParam&lt;br /&gt; As Integer, lParam As Any) As Long&lt;br /&gt;Function GetRClickedItem%(MyList As Control, X As Single, Y As Single)&lt;br /&gt;&lt;br /&gt;  Dim ClickX%, ClickY%, Ret&amp;amp;, CurRect As RECT&lt;br /&gt;  ClickX% = X \ Screen.TwipsPerPixelX&lt;br /&gt;  ClickY% = Y \ Screen.TwipsPerPixelY&lt;br /&gt;  i% = 0&lt;br /&gt;  Do While True&lt;br /&gt;      Ret&amp; = SendMessage(MyList.hWnd, LB_GETITEMRECT, i%, CurRect)&lt;br /&gt;      If (Ret&amp;amp; = LB_ERR) Then&lt;br /&gt;          GetRClickedItem% = LB_ERR: Exit Function&lt;br /&gt;      End If&lt;br /&gt;      If (ClickX% &gt;= CurRect.Left) And (ClickX% &lt;= CurRect.Right) And           (ClickY% &gt;= CurRect.Top) And (ClickY% &lt;= CurRect.Bottom) Then            GetRClickedItem% = i%: Exit Function        End If        i% = i% + 1    Loop End Function  Additional References Programmer's Reference Volume 3: Messages, Structures.   "LB_GETITEMRECT". (Product Documentation, SDKs, Windows 3.1 SDK) "List Box Controls." (Technical Articles, Windows Articles, User   Interface Articles, Controls) "MouseDown, MouseUp Events". (Product Documentation, Office   Developer's Kit 1.0, Visual Basic 3.0 Professional Edition,   Language Reference)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6383763014874294191?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6383763014874294191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6383763014874294191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6383763014874294191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6383763014874294191'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-76-detecting-right-mouse-button.html' title='Tip 76: Detecting Right Mouse Button Clicks on List Box Controls'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5829085992340595207</id><published>2007-07-22T20:50:00.000-07:00</published><updated>2007-07-22T21:21:26.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 75: Invoking Menu Items in Other Applications with SendMessage</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;Within a Visual Basic® application, you can execute a menu item in&lt;br /&gt;another Windows®-based program. This article explains how to use&lt;br /&gt;several Windows application programming interface (API) functions to&lt;br /&gt;execute menu commands.&lt;br /&gt;&lt;br /&gt;Executing Menu Commands&lt;br /&gt;In some situations, you may need to actuate an application, such as&lt;br /&gt;Notepad, and execute one or more of that application's menu commands.&lt;br /&gt;The Windows® application programming interface (API) provides several&lt;br /&gt;functions that enable you to perform this type of operation in Visual&lt;br /&gt;Basic®.&lt;br /&gt;&lt;br /&gt;- The Windows API FindWindow function can be used to determine the&lt;br /&gt;handle of the application that contains the menu item you want to&lt;br /&gt;execute. FindWindow returns an integer value containing the&lt;br /&gt;application's handle.&lt;br /&gt;- You also need to retrieve the handle associated with the target&lt;br /&gt;window's menu. The GetMenu function will return the handle as an&lt;br /&gt;integer value.&lt;br /&gt;- Once you have the target window's menu handle, you need to determine&lt;br /&gt;the entry's position in the menu and retrieve the handle of the&lt;br /&gt;pop-up menu. In the example program below, we want to retrieve the&lt;br /&gt;handle of the File menu selection. Therefore, we would call the&lt;br /&gt;GetSubMenu function with zero as the entry's position. The first&lt;br /&gt;entry in every pop-up menu always begins with entry number zero.&lt;br /&gt;- Next, we want to retrieve the ID number of the specific menu entry&lt;br /&gt;we want to execute. We retrieve this ID number by calling the&lt;br /&gt;GetMenuItemID function with the entry's position specified as one&lt;br /&gt;(the position of the Open menu selection in the pop-up menu).&lt;br /&gt;- The final step is to make the target application the active&lt;br /&gt;application and to issue the SendMessage function, which in turn&lt;br /&gt;sends a WM_COMMAND message to the target window. The WM_COMMAND&lt;br /&gt;message is set to the target application's window to execute the&lt;br /&gt;File/Open command.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The following example program executes another application's menu&lt;br /&gt;commands. This program assumes that the Windows Notepad application&lt;br /&gt;program is already running in memory. This program uses SendMessage to&lt;br /&gt;execute the File/Open menu selection in Notepad.&lt;br /&gt;When you execute the program, click the Command Button. After a second&lt;br /&gt;or two, you will see that Notepad has been activated and that its Open&lt;br /&gt;File dialog box is displayed on the screen.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Constant and Declare statements to the General&lt;br /&gt;  Declarations section of Form1 (note that each Declare statement&lt;br /&gt; should be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Private Declare Function FindWindow Lib "User" (ByVal lpClassName&lt;br /&gt; As Any, ByVal lpWindowName As Any) As Integer&lt;br /&gt;Private Declare Function GetMenu Lib "User" (ByVal hWnd&lt;br /&gt;As Integer) As Integer&lt;br /&gt;Private Declare Function GetMenuItemID Lib "User" (ByVal hMenu&lt;br /&gt;As Integer, ByVal nPos As Integer) As Integer&lt;br /&gt;Private Declare Function GetSubMenu Lib "User" (ByVal hMenu&lt;br /&gt; As Integer, ByVal nPos As Integer) As Integer&lt;br /&gt;Private Declare Function SendMessage Lib "User" (ByVal hWnd&lt;br /&gt; As Integer, ByVal wMsg As Integer, ByVal wParam&lt;br /&gt; As Integer, lParam As Any) As Long&lt;br /&gt;Const WM_COMMAND = &amp;H111&lt;br /&gt;&lt;br /&gt;3. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;  default.&lt;br /&gt;4. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;  Dim hWnd As Integer&lt;br /&gt;  Dim hMainMenu As Integer&lt;br /&gt;  Dim hMenu As Integer&lt;br /&gt;  Dim MenuID As Integer&lt;br /&gt;&lt;br /&gt;  hWnd = FindWindow("NotePad", "Untitled - NotePad")&lt;br /&gt;  If hWnd = 0 Then Exit Sub&lt;br /&gt;&lt;br /&gt;  hMainMenu = GetMenu(hWnd)&lt;br /&gt;  hMenu = GetSubMenu(hMainMenu, 0)&lt;br /&gt;  MenuID = GetMenuItemID(hMenu, 1)&lt;br /&gt;  AppActivate "Untitled - NotePad"&lt;br /&gt;  X&amp;amp; = SendMessage(hWnd, WM_COMMAND, MenuID, 0&amp;amp;)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q71281. "How to Implement a Bitmap Within a Visual&lt;br /&gt; Basic Menu." (Development Library, Knowledge Base and Bug Lists)&lt;br /&gt;Knowledge Base Q113475. "How to Get a Window Handle Without Specifying&lt;br /&gt; an Exact Title." (Development Library, Knowledge Base and Bug Lists)&lt;br /&gt;Windows Help Authoring Guide for Word for Windows 2.0. "Choosing Help&lt;br /&gt; with the Keyboard." (Development Library, Unsupported Tools and&lt;br /&gt; Utilities)&lt;br /&gt;"Adding Pop-Up Menus to Your Programs." (Development Library, Books&lt;br /&gt; and Periodicals, Inside Visual Basic Articles [Cobb])&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5829085992340595207?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5829085992340595207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5829085992340595207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5829085992340595207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5829085992340595207'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-75-invoking-menu-items-in-other.html' title='Tip 75: Invoking Menu Items in Other Applications with SendMessage'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6482839780334395629</id><published>2007-07-22T20:49:00.000-07:00</published><updated>2007-07-22T21:21:58.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 74: Scrolling Through Two List Box Controls Simultaneously</title><content type='html'>&lt;pre&gt;* VB-CODE (4)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;You can add code to your Visual Basic® application to allow a user to&lt;br /&gt;scroll through the contents of two separate List Box controls at the&lt;br /&gt;same time. This article explains how you can add this functionality to&lt;br /&gt;your program.&lt;br /&gt;&lt;br /&gt;The TopIndex Property of List Box Controls&lt;br /&gt;When using a List Box control, the user can click the mouse on the&lt;br /&gt;scroll bar to move up or down the list of items. If the user clicks&lt;br /&gt;the mouse on an individual item, that item is said to be selected. The&lt;br /&gt;ListIndex property is a unique value that represents the selected&lt;br /&gt;item's position within the List Box.&lt;br /&gt;&lt;br /&gt;You can also scroll through a List Box control by using the TopIndex&lt;br /&gt;property. This property, however, can only be changed at run time, not&lt;br /&gt;during design time. The TopIndex property moves you through the items&lt;br /&gt;in the List Box control. In other words, it works just as if the user&lt;br /&gt;had used the scroll bar.&lt;br /&gt;Let's assume that you have two List Box controls on a form in your&lt;br /&gt;Visual Basic® application. As you scroll through the items in the&lt;br /&gt;first List Box control, you want to also scroll through the same items&lt;br /&gt;in the second List Box control.&lt;br /&gt;&lt;br /&gt;In an application, you can use the TopIndex property to move a&lt;br /&gt;specific item in the List Box control so that that item appears at&lt;br /&gt;the top of the List Box. The following statement, for example, moves&lt;br /&gt;the third item in the List Box to the top of the control:&lt;br /&gt;&lt;br /&gt;List1.TopIndex = (2)&lt;br /&gt;&lt;br /&gt;In the example program below, we want to scroll through both List Box&lt;br /&gt;controls at the same time. To do this, we use a Timer control so that&lt;br /&gt;the second List Box control is updated as soon as the item is selected&lt;br /&gt;in the first List Box control.&lt;br /&gt;&lt;br /&gt;We first use a static variablethat is, a variable whose contents do&lt;br /&gt;not change when we exit a procedureto keep track of the currently&lt;br /&gt;selected item in the first List Box. Each time a new item is selected&lt;br /&gt;in the List Box, this variable is set to that item's TopIndex value.&lt;br /&gt;Next, we set the ListIndex property of the second List Box control&lt;br /&gt;equal to that of the first List Box control. This highlights the two&lt;br /&gt;items in each List Box that have the same ListIndex value. It doesn't&lt;br /&gt;matter what the actual item is the items are both selected based on&lt;br /&gt;their position within the controls.&lt;br /&gt;&lt;br /&gt;Each time you select an item in the first List Box, that same item is&lt;br /&gt;also selected in the second List Box.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;This example program shows how to scroll through the contents of two&lt;br /&gt;List Box controls simultaneously.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the General Declarations section of&lt;br /&gt;  Form1:&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;DefInt A-Z&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;  Dim X As Integer&lt;br /&gt;  'Initialize two list boxes with alphabet&lt;br /&gt;  For X = 1 To 26&lt;br /&gt;      List1.AddItem Chr$(X + 64)&lt;br /&gt;  Next X&lt;br /&gt;  For X = 1 To 26&lt;br /&gt;      List2.AddItem Chr$(X + 64)&lt;br /&gt;  Next X&lt;br /&gt;  timer1.Interval = 1&lt;br /&gt;  timer1.Enabled = True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a List Box control to Form1. List1 is created by default.&lt;br /&gt;5. Add a second List Box control to Form1. List2 is created by&lt;br /&gt;  default.&lt;br /&gt;6. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;  default.&lt;br /&gt;7. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;  End&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;8. Add a Timer control to Form1. Timer1 is created by default.&lt;br /&gt;9. Add the following code to the Timer1 event for Timer1:&lt;br /&gt;&lt;br /&gt;Private Sub timer1_Timer()&lt;br /&gt;  Static PrevList1&lt;br /&gt;  Dim TopIndex_List1 As Integer&lt;br /&gt;&lt;br /&gt;  'Get the index for the first item in the visible list.&lt;br /&gt;  TopIndex_List1 = List1.TopIndex&lt;br /&gt;&lt;br /&gt;  'See if top index has changed.&lt;br /&gt;  If TopIndex_List1 &lt;&gt; PrevList1 Then&lt;br /&gt;      'Set the top index of List2 equal to List1,&lt;br /&gt;      'so that the list boxes scroll together.&lt;br /&gt;      List2.TopIndex = TopIndex_List1&lt;br /&gt;      PrevList1 = TopIndex_List1&lt;br /&gt;  End If&lt;br /&gt;  'Select the item in the same position in both list boxes.&lt;br /&gt;  If List1.ListIndex &lt;&gt; List2.ListIndex Then&lt;br /&gt;      List2.ListIndex = List1.ListIndex&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional Information&lt;br /&gt;This article expands upon and is intended to replace Knowledge Base&lt;br /&gt;article Q103809.&lt;br /&gt;"List Box Control." (Product Documentation, Office Developer's&lt;br /&gt;Kit 1.0, Visual Basic 3.0 Professional Edition, Language Reference)&lt;br /&gt;"TopIndex Property." (Product Documentation, Office Developer's&lt;br /&gt;Kit 1.0, Visual Basic 3.0 Professional Edition, Language Reference)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6482839780334395629?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6482839780334395629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6482839780334395629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6482839780334395629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6482839780334395629'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-74-scrolling-through-two-list-box.html' title='Tip 74: Scrolling Through Two List Box Controls Simultaneously'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5042352096321425881</id><published>2007-07-22T20:43:00.000-07:00</published><updated>2007-07-22T21:23:12.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 73: Creating Nested Directories</title><content type='html'>&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;* VB-CODE (3)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Abstract&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;You can use the Visual Basic® MkDir statement to create a new&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;directory on any floppy or hard disk. This article explains how you&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;can use this statement to create nested subdirectories, even if part&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;of the path already exists.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;The MkDir Statement&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;When developing an application in Visual Basic®, you may need to allow&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;the user to store a data file in a specific directory on disk. The&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;dirctory can be created with Visual Basic's MkDir statement. The&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;syntax for this statement is:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;MkDir "C:\&lt;junk&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/junk&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;where JUNK is the name of the directory you want to create and C:\ is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;the drive you want to create it on. If you want to create a nested&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;subdirectory, for example C:\JUNK\TEST, you must first create the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;JUNK directory and then create the TEST directory. However, if the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;JUNK directory already exists, the MkDir statement will interrupt your&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;application with a "Path/File Access Error" displayed in a message&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;box.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;To prevent this error message from appearing when your application is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;creating directories, you can use the On Error and Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;statements. These two statements allow you to trap this access error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;and force your Visual Basic program to continue executing as if the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;error had not actually occurred.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;The example program below creates a directory that is three levels&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;deep, called "\JUNK\TEST\TEST". The first time the MkDir statement is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;executed, it creates the JUNK directory. The second and third times&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;MkDir is executed, however, it produces Error 76. The Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;statement tells our program to ignore this error each time it is&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;encountered until we have successfully created the entire directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;structure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Example Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;This program shows how to create nested directories even if one of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;the directories in the path already exists.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt; 1. Create a new project in Visual Basic. Form1 is created by default.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt; 2. Add a Command Button control to Form1. Command1 is created by&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;default. Set its Caption property to "Create Directory".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt; 3. Add the following code to the Click event for Command1:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Sub Command1_Click()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;CreateNewDirectory "C:\junk3\test\test"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;MsgBox "Directory was created", 16, "Dir Demo"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt; 4. Create a new function called CreateNewDirectory. Add the following&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;code to this function:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;Sub CreateNewDirectory(DirName As String)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;Dim NewLen As Integer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;Dim DirLen As Integer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;Dim MaxLen As Integer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;NewLen = 4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;MaxLen = Len(DirName)&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;If Right$(DirName, 1) &lt;&gt; "\" Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;DirName = DirName + "\"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;MaxLen = MaxLen + 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;On Error GoTo DirError&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;MakeNext:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;DirLen = InStr(NewLen, DirName, "\")&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;MkDir Left$(DirName, DirLen - 1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;NewLen = DirLen + 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;If NewLen &gt;= MaxLen Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;Exit Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;GoTo MakeNext&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;DirError:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;Resume Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Run the program by pressing the F5 function key. When you click the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;"Create Directory" command button, the program creates a directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;called "JUNK\TEST\TEST" on drive C. Change the path in the Click event&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;for Command1 to "C:\JUNK\TEST\TEST2" and run the program a second&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;time. It will create a second subdirectory called TEST2 under&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;C:\JUNK\TEST. Notice that Error 76 is ignored by the program. This&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;error is generated by MkDir when it attempts to create a directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;(in this case, C:\JUNK\TEST) that already exists.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5042352096321425881?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5042352096321425881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5042352096321425881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5042352096321425881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5042352096321425881'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-73-creating-nested-directories.html' title='Tip 73: Creating Nested Directories'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4168883665324110509</id><published>2007-07-22T08:19:00.000-07:00</published><updated>2007-07-22T08:20:42.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Working with Crystal Reports'/><title type='text'>Simple use of CR in VB</title><content type='html'>Working with Crystal reports (which comes with VB) is sometimes very simple and sometimes very hard to do. But I have to use it (my boss is telling me that) so I just have given it a quick look. First it looks not very difficult; making a quick and simple report can be done just in - let's say - five minutes. The code I use to show the report is included on this page.&lt;br /&gt;The way I use Crystal Reports is in combination with Visual Basic 5 Enterprise Edition and Sybase as database. I make some tempory views in code (this way the user can give some direction to the report). The reports I make as an example using all the fields that are in the view. That's the work I have to do before it can work. Calling Crystal Reports from the VB application is like this:&lt;br /&gt;&lt;strong&gt;make sure you have the component linked to your project and add the control to the form&lt;/strong&gt; use the following code for calling the control and fill the report with the values:&lt;br /&gt;&lt;pre&gt;Public Sub ExecuteSelectedReport(strSelected As String)&lt;br /&gt;   '&lt;br /&gt;   Const PROCEDURENAME As String = "ExecuteSelectedReport"&lt;br /&gt;   On Error GoTo ExecuteSelectedReport_FAIL&lt;br /&gt;   '&lt;br /&gt;   Screen.MousePointer = vbHourglass&lt;br /&gt;   'create view&lt;br /&gt;   If Not SelectGroupReport(strSelected) Then GoTo ExecuteSelectedReport_EXIT&lt;br /&gt;   '&lt;br /&gt;   'open and fill report&lt;br /&gt;   With frmStatistics.CrystalReports&lt;br /&gt;       .ReportFileName = strTMPPath + strSelected + ".rpt"&lt;br /&gt;       .ReportTitle = frmStatistics.txtTitleReport.Text&lt;br /&gt;       .SQLQuery = "SELECT * FROM " + "VIEW" + strSelected&lt;br /&gt;       .PrinterCopies = 1&lt;br /&gt;       .PrinterCollation = crptDefault&lt;br /&gt;       .WindowControls = True&lt;br /&gt;       .WindowBorderStyle = crptSizable&lt;br /&gt;       .WindowControlBox = True&lt;br /&gt;       .WindowState = crptNormal&lt;br /&gt;       .WindowTitle = .ReportFileName&lt;br /&gt;       .Destination = crptToWindow&lt;br /&gt;       .PrintReport&lt;br /&gt;   End With&lt;br /&gt;   '&lt;br /&gt;ExecuteSelectedReport_EXIT:&lt;br /&gt;   Screen.MousePointer = vbDefault&lt;br /&gt;   Exit Sub&lt;br /&gt;   '&lt;br /&gt;ExecuteSelectedReport_FAIL:&lt;br /&gt;   MsgBox Cstr(Err) + Error&lt;br /&gt;   Resume ExecuteSelectedReport_EXIT&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt; The procedure 'SelectGroupReport(strSelected)' creates for me the view with the options the user have given (like period etc). The default report is called 'strSelected.rpt'; the view is also created with the same value. For the settings on the CrustalReports control you simple check teh Help-file. It is all there. You see it is not very difficult. Crystal reports gives you a lot of options to show with the report like saving it a text or even as a word document. Most work will be creating the views and making the default reports.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4168883665324110509?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4168883665324110509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4168883665324110509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4168883665324110509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4168883665324110509'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/simple-use-of-cr-in-vb.html' title='Simple use of CR in VB'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5509857420099553867</id><published>2007-07-22T08:02:00.001-07:00</published><updated>2007-07-22T08:02:55.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 72: Positioning the Cursor over a Control That Receives Focus</title><content type='html'>&lt;pre&gt;* VB-CODE (2)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;The Default property of a Command Button can be used to place the&lt;br /&gt;focus on the control at run time. If this property is set to True, the&lt;br /&gt;Command Button receives the focus; if it is set to False, the Command&lt;br /&gt;Button does not have the focus. In addition, the SetFocus method can&lt;br /&gt;be used to shift the focus to a specific control or form. However, the&lt;br /&gt;mouse pointer's position is not changed. This article explains how you&lt;br /&gt;can position the mouse pointer over the control that has just received&lt;br /&gt;the focus.&lt;br /&gt;&lt;br /&gt;Using SetCursorPos to Change Cursor Position&lt;br /&gt;Whenever you use the SetFocus method to move the focus to a different&lt;br /&gt;control or form, the mouse pointer's position is not changed. In many&lt;br /&gt;situations, it would be nice if the position of the mouse pointer&lt;br /&gt;could follow the control that has the focus. We can implement this&lt;br /&gt;feature in a Visual Basic® application by using the SetCursorPos&lt;br /&gt;function provided in the Windows® application programming interface&lt;br /&gt;(API). The Declare statement for the SetCursorPos function is:&lt;br /&gt;&lt;br /&gt;Declare Sub SetCursorPos Lib "User" (ByVal X As Integer, ByVal Y As Integer)&lt;br /&gt;&lt;br /&gt;As you can see, this function takes two arguments. The X argument&lt;br /&gt;represents the horizontal position of the cursor and the Y argument&lt;br /&gt;represents the vertical position of the cursor. To successfully move&lt;br /&gt;the cursor using SetCursorPos, you must first determine the correct&lt;br /&gt;coordinates to use with the function.&lt;br /&gt;How do we actually determine the position of a control on the screen?&lt;br /&gt;First, we know that the Command Button control has both Width and&lt;br /&gt;Height properties that tell us the exact size of the control; ditto&lt;br /&gt;for the Form control. To calculate the approximate coordinates of the&lt;br /&gt;center point of the Command Button, we can add the left position of&lt;br /&gt;the Command Button to the Form's left position, and divide this value&lt;br /&gt;by the half the width of the Command Button, which gives us the center&lt;br /&gt;position of the Command Button.&lt;br /&gt;&lt;br /&gt;However, we also need to adjust the values we calculate for the width&lt;br /&gt;of the form's border and title bar. The final step is to divide this&lt;br /&gt;value we have just calculated by the TwipsPerPixelX and TwipsPerPixelY&lt;br /&gt;values to obtain the control's true center position on the screen. It&lt;br /&gt;is then a simple matter to call the SetCursorPos function to move the&lt;br /&gt;mouse pointer to this new location.&lt;br /&gt;Each time a control receives the focus, the GotFocus event for that&lt;br /&gt;control is triggered. In addition, the focus can be shifted to a&lt;br /&gt;control by clicking that control. In this case, the Click event is&lt;br /&gt;triggered. By including code that positions the mouse pointer at the&lt;br /&gt;center of the control in these two events, you can successfully&lt;br /&gt;position the cursor over any control as soon as it receives the focus.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program below shows how to move the mouse pointer to the control&lt;br /&gt;that has just received the focus.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Declare statement to the General Declarations&lt;br /&gt;   section of Form1 (note that this Declare statement should be typed&lt;br /&gt;   as one single line of code):&lt;br /&gt;&lt;br /&gt;Declare Sub SetCursorPos Lib "User" (ByVal X As Integer, ByVal Y As Integer)&lt;br /&gt;&lt;br /&gt;3. Add a Label control to Form1. Label1 is created by default. Set&lt;br /&gt;   its Caption property to "Save Changes?"&lt;br /&gt;4. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default. Set its Caption property to "Yes".&lt;br /&gt;5. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt;   Dim X As Integer, Y As Integer&lt;br /&gt;   X = (Form1.Left + Command2.Left + Command2.Width / 2 + 60) /&lt;br /&gt;        Screen.TwipsPerPixelX&lt;br /&gt;   Y = (Form1.Top + Command2.Top + Command2.Height / 2 + 360) /&lt;br /&gt;        Screen.TwipsPerPixelY&lt;br /&gt;   SetCursorPos X, Y&lt;br /&gt;   Command2.SetFocus&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add a second Command Button control to Form1. Command2 is created&lt;br /&gt;   by default. Set its Caption property to "No".&lt;br /&gt;7. Add the following code to the GotFocus event for Command2:&lt;br /&gt;&lt;br /&gt;Sub Command2_GotFocus()&lt;br /&gt;   Dim X As Integer, Y As Integer&lt;br /&gt;   X = (Form1.Left + Command2.Left + Command2.Width / 2 + 60) /&lt;br /&gt;         Screen.TwipsPerPixelX&lt;br /&gt;   Y = (Form1.Top + Command2.Top + Command2.Height / 2 + 360) /&lt;br /&gt;        Screen.TwipsPerPixelY&lt;br /&gt;   SetCursorPos X, Y&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the program by pressing the F5 function key. Notice that the Yes&lt;br /&gt;Command Button has the focus. Press the TAB key once. The focus has&lt;br /&gt;now been placed on the No Command Button. In addition, the mouse&lt;br /&gt;pointer is positioned over the second Command Button.&lt;br /&gt;Run the program a second time. Using the mouse, click the No Command&lt;br /&gt;Button. The Command Button receives the focus and the mouse pointer&lt;br /&gt;is positioned over the button. This demonstrates that no matter which&lt;br /&gt;one is used to move the focusthe TAB key or the mouse the mouse&lt;br /&gt;pointer can be programmed to follow control that has the focus.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5509857420099553867?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5509857420099553867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5509857420099553867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5509857420099553867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5509857420099553867'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-72-positioning-cursor-over-control.html' title='Tip 72: Positioning the Cursor over a Control That Receives Focus'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-3614934502079166074</id><published>2007-07-22T07:59:00.000-07:00</published><updated>2007-07-22T08:01:09.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 71: Dragging Controls at Run Time</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;Tip 71: Dragging Controls at Run Time&lt;br /&gt;&lt;br /&gt;May 5, 1995&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;Many Windows®-based applications allow you to move a control, such as&lt;br /&gt;a window, to a new position on the screen. This is accomplished by&lt;br /&gt;clicking the left mouse button on the control and, while holding the&lt;br /&gt;mouse button down, dragging the object to a new location on the&lt;br /&gt;screen. When you release the mouse button, the object remains at the&lt;br /&gt;new screen position. This article explains how you can add this&lt;br /&gt;functionality to your own Visual Basic® applications.&lt;br /&gt;&lt;br /&gt;Moving Forms and Other Controls&lt;br /&gt;When you click the mouse button, Visual Basic® triggers its MouseDown&lt;br /&gt;or MouseUp events. When you press the mouse button down, a MouseDown&lt;br /&gt;event is invoked; similarly, when you release the mouse button, a&lt;br /&gt;MouseUp event is invoked. At run time, you can allow a user to&lt;br /&gt;position controls at new locations on the screen by trapping the&lt;br /&gt;MouseDown event for each control.&lt;br /&gt;Each time a control receives the focus or detects mouse movement,&lt;br /&gt;Windows® calls the SetCapture or ReleaseCapture function. The Windows&lt;br /&gt;application programming interface (API) SetCapture and ReleaseCapture&lt;br /&gt;functions set or release the mouse capture, which tells the system&lt;br /&gt;which object is currently being manipulated. These functions can be&lt;br /&gt;used in conjunction with the SendMessage function to position a&lt;br /&gt;control at a new location on the screen.&lt;br /&gt;&lt;br /&gt;When an object, such as a form, is moved at run time, Windows&lt;br /&gt;generates a MOVE message. By trapping the MouseDown event for a&lt;br /&gt;control, you can tell Visual Basic to issue a move command to the&lt;br /&gt;operating system. This system command (MOVE) tells Windows to move the&lt;br /&gt;window to the new position.&lt;br /&gt;In the example program below, the user can move both the form and&lt;br /&gt;command button to new locations. When the MouseDown event is triggered&lt;br /&gt;for the control, the ReleaseCapture function is called. Next, the&lt;br /&gt;SendMessage function tells Windows to actually execute the MOVE&lt;br /&gt;command. This anchors the object at its new position on the screen.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below shows how to drag a control, such as a form&lt;br /&gt;or command button, to a new position on the screen.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Constant and Declare statements to the General&lt;br /&gt;   Declarations section of Form1 (note that each Declare statement&lt;br /&gt;   must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Const WM_SYSCOMMAND = &amp;H112&lt;br /&gt;Const SC_MOVE = &amp;amp;HF012&lt;br /&gt;&lt;br /&gt;Declare Sub ReleaseCapture Lib "User" ()&lt;br /&gt;Declare Sub SendMessage Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Long)&lt;br /&gt;&lt;br /&gt;3. Add the following code to the MouseDown event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,&lt;br /&gt;        Y As Single)&lt;br /&gt;   ReleaseCapture&lt;br /&gt;   SendMessage Form1.hWnd, WM_SYSCOMMAND, SC_MOVE, 0&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default.&lt;br /&gt;5. Add the following code to the MouseDown event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single,&lt;br /&gt;       Y As Single)&lt;br /&gt;   ReleaseCapture&lt;br /&gt;   SendMessage Command1.hWnd, WM_SYSCOMMAND, SC_MOVE, 0&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q114593: "How to Move a Form that Has No Titlebar or&lt;br /&gt;                        Caption."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-3614934502079166074?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/3614934502079166074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=3614934502079166074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3614934502079166074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/3614934502079166074'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-71-dragging-controls-at-run-time.html' title='Tip 71: Dragging Controls at Run Time'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8755329684027842152</id><published>2007-07-22T07:53:00.001-07:00</published><updated>2007-07-22T07:53:42.178-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 70: Creating Temporary Files</title><content type='html'>&lt;pre&gt; VB-CODE (4)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;When developing an application in Visual Basic®, you may need to&lt;br /&gt;create a temporary file on disk. This article explains how to use the&lt;br /&gt;Windows® application programming interface (API) GetTempFileName&lt;br /&gt;function to create temporary files.&lt;br /&gt;&lt;br /&gt;Managing Temporary Files&lt;br /&gt;The Windows® application programming interface (API) GetTempFileName&lt;br /&gt;function can be used to create a temporary file on a floppy or hard&lt;br /&gt;disk. Files created by this function are not automatically deleted&lt;br /&gt;when your Visual Basic® application terminatesyou must do this using&lt;br /&gt;Visual Basic's Kill statement.&lt;br /&gt;&lt;br /&gt;To create a temporary file in Visual Basic, you use the&lt;br /&gt;GetTempFileName function. The Declare statement for this function is&lt;br /&gt;as follows (note that it must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function GetTempFileName Lib "Kernel" (ByVal cDriveLetter&lt;br /&gt;  As Integer, ByVal lpPrefixString As String, ByVal wUnique&lt;br /&gt;  As Integer, ByVal lpTempFileName As String) As Integer&lt;br /&gt;&lt;br /&gt;GetTempFileName requires four arguments, as follows:&lt;br /&gt;&lt;br /&gt;cDriveLetter    An integer value containing the disk drive letter.&lt;br /&gt;lpPrefixString  A string containing the filename prefix. This is a&lt;br /&gt;               standard DOS filename, except that it should be less&lt;br /&gt;               than eight characters long, because it will be padded&lt;br /&gt;               with the wUnique value when the file is created.&lt;br /&gt;wUnique         An integer value containing the number to use to&lt;br /&gt;               append to the eight-character filename prefix. If a&lt;br /&gt;               value of zero is specified, the function generates&lt;br /&gt;               its own random number from the system's current time&lt;br /&gt;               stamp.&lt;br /&gt;lpTempFileName  A string that will hold the name of the newly created&lt;br /&gt;               temporary file. This string should be initialized to&lt;br /&gt;               a length of at least 144 characters.&lt;br /&gt;&lt;br /&gt;The GetTempFileName function will create the temporary file on the&lt;br /&gt;first hard disk or on the disk specified by the TEMP environment&lt;br /&gt;variable. You can set the TF_FORCEDRIVE bit of the cDriveLetter&lt;br /&gt;argument to tell the GetTempFileName function to create the file in&lt;br /&gt;the current directory of the specified disk. In all other cases, the&lt;br /&gt;temporary file will be created on the disk specified in the&lt;br /&gt;cDriveLetter argument.&lt;br /&gt;After you call the GetTempFileName function, the file will have been&lt;br /&gt;created on the specified disk. The lpTempFileName buffer will contain&lt;br /&gt;the file's complete path, terminated by the number specified by the&lt;br /&gt;wUnique argument.&lt;br /&gt;&lt;br /&gt;Once you have successfully created the temporary file from within&lt;br /&gt;your application, you can isolate the actual filename by issuing&lt;br /&gt;these two statements:&lt;br /&gt;&lt;br /&gt;TempFileName = Left(TempFileName, InStr(TempFileName, Chr(0)) - 1)&lt;br /&gt;TempFileName = Trim(Right(TempFileName, Len(TempFileName) - 3))&lt;br /&gt;&lt;br /&gt;The first statement uses the InStr function to strip off the last&lt;br /&gt;character returned in the buffer used to hold the filename. This byte&lt;br /&gt;is the value used in the wUnique argument. The second statement&lt;br /&gt;removes the preceding "C:\" drive specifier characters from the&lt;br /&gt;filename.&lt;br /&gt;&lt;br /&gt;You should be aware that temporary files created by the&lt;br /&gt;GetTempFileName function remain on the disk until you actually delete&lt;br /&gt;them.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The following program shows how you can create temporary files from&lt;br /&gt;within your Visual Basic application. Each time you execute this&lt;br /&gt;program, a new temporary file is created. Be sure to delete these&lt;br /&gt;temporary files from your disk when finished with this program.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Constant and Declare statements to the General&lt;br /&gt;   Declarations section of Form1 (note that the Declare statement&lt;br /&gt;   must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function GetTempFileName Lib "Kernel" (ByVal cDriveLetter&lt;br /&gt;  As Integer, ByVal lpPrefixString As String, ByVal wUnique&lt;br /&gt;  As Integer, ByVal lpTempFileName As String) As Integer&lt;br /&gt;Const TF_FORCEDRIVE = &amp;amp;H80&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt;   Dim X As Integer&lt;br /&gt;   Dim Drive As Integer&lt;br /&gt;   Dim Prefix As String&lt;br /&gt;   Dim Unique As Integer&lt;br /&gt;   Dim TempFileName As String&lt;br /&gt;   Dim PathName As String&lt;br /&gt;&lt;br /&gt;   TempFileName = Space$(144)&lt;br /&gt;   NewFileName = Space$(144)&lt;br /&gt;   PathName = "C:\WINDOWS"&lt;br /&gt;   Drive = Asc(UCase(Left(PathName, 1))) + TF_FORCEDRIVE&lt;br /&gt;   Prefix = "DATA"&lt;br /&gt;   Unique = 0&lt;br /&gt;&lt;br /&gt;   ChDir PathName&lt;br /&gt;   X = GetTempFileName(Drive, Prefix, Unique, TempFileName)&lt;br /&gt;   TempFileName = Left(TempFileName, InStr(TempFileName, Chr(0)) - 1)&lt;br /&gt;   TempFileName = Trim(Right(TempFileName, Len(TempFileName) - 3))&lt;br /&gt;   Text1.Text = TempFileName&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8755329684027842152?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8755329684027842152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8755329684027842152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8755329684027842152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8755329684027842152'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-70-creating-temporary-files.html' title='Tip 70: Creating Temporary Files'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7948131839285202971</id><published>2007-07-22T07:51:00.000-07:00</published><updated>2007-07-22T07:52:17.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 69: Forcing a Picture Control to Use Only a Specific Font</title><content type='html'>&lt;pre&gt;* VB-CODE (3)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;When developing an application in Visual Basic® that may be run on&lt;br /&gt;many different computer systems, you may want to ensure that a&lt;br /&gt;control such as a Picture Box is formatted correctly with regard to&lt;br /&gt;the size and type of font used. This article explains how you can use&lt;br /&gt;the Windows® application programming interface (API) SendMessage and&lt;br /&gt;GetStockObject functions to force a control to use a specific font&lt;br /&gt;when displaying text.&lt;br /&gt;&lt;br /&gt;Using the GetStockObject Function to Select a Font&lt;br /&gt;Many controls such as Picture Box and Text Box controls have a Font&lt;br /&gt;property. The Font property is usually set by the programmer at&lt;br /&gt;design time to a specific font. However, in some situations, you may&lt;br /&gt;want to force Windows® to use a different font at a specific time in&lt;br /&gt;your program for that control. In such cases, you can use the Windows&lt;br /&gt;application programming interface (API) SendMessage and GetStockObject&lt;br /&gt;functions to tell Windows that a control's Font property is to be set&lt;br /&gt;to a different font.&lt;br /&gt;&lt;br /&gt;To change a control's Font property to another font, you use the&lt;br /&gt;GetStockObject function. The Declare statement for this function is&lt;br /&gt;as follows:&lt;br /&gt;&lt;br /&gt;Declare Function GetStockObject Lib "GDI" (ByVal nIndex As Integer)&lt;br /&gt;  As Integer&lt;br /&gt;&lt;br /&gt;GetStockObject requires only one argumentan integer value containing&lt;br /&gt;the type of stock object you want to use. In our case, we want to use&lt;br /&gt;the ANSI_FIXED_FONT stock object, which has a value of 11. After you&lt;br /&gt;call the GetStockObject function, it returns an integer value. This&lt;br /&gt;value is set to NULL if the function was not successful, or to a&lt;br /&gt;handle that identifies the logical object itself.&lt;br /&gt;&lt;br /&gt;In the example program below, we want to force the Picture Box&lt;br /&gt;control to use a fixed font instead of Bookman Old Style, which is&lt;br /&gt;set to a point size of 24, at design time. To set the font to a fixed&lt;br /&gt;font while the program is being executed, we issue the following&lt;br /&gt;statement:&lt;br /&gt;&lt;br /&gt;X = SendMessage(Picture1.hWnd, WM_SETFONT, GetStockObject(ANSI_FIXED_FONT), 1)&lt;br /&gt;&lt;br /&gt;After issuing this command, anytime we use the Print method to print&lt;br /&gt;text on the Picture Box control, the fixed font is used.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The example program below displays a Picture Box control on Form1. The&lt;br /&gt;Print method is used to display the text "This is a test" in the&lt;br /&gt;Picture Box control. Note that the default Font property value is&lt;br /&gt;ignored and the ANSI fixed font is used when the text is displayed in&lt;br /&gt;the control.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Constant and Declare statements to the General&lt;br /&gt;   Declarations section of Form1 (note that each Declare statement&lt;br /&gt;   should be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function SendMessage Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any)&lt;br /&gt;  As Long&lt;br /&gt;Declare Function GetStockObject Lib "GDI" (ByVal nIndex As Integer)&lt;br /&gt;  As Integer&lt;br /&gt;Const ANSI_FIXED_FONT = 11&lt;br /&gt;Const WM_SETFONT = &amp;amp;H30&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt;   Dim X As Long&lt;br /&gt;&lt;br /&gt;   X = SendMessage(Picture1.hWnd, WM_SETFONT, GetStockObject(ANSI_FIXED_FONT), 1)&lt;br /&gt;   Picture1.Print "This is a test"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a Picture Box control to Form1. Set its Font property to&lt;br /&gt;   Bookman Old Style, point size: 24.&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q75857. "How to Print the ASCII Character Set in&lt;br /&gt;Visual Basic."&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7948131839285202971?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7948131839285202971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7948131839285202971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7948131839285202971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7948131839285202971'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-69-forcing-picture-control-to-use.html' title='Tip 69: Forcing a Picture Control to Use Only a Specific Font'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-5818636244958132109</id><published>2007-07-22T07:50:00.000-07:00</published><updated>2007-07-22T07:51:15.984-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 68: Removing Duplicate Items from List Box Controls</title><content type='html'>&lt;pre&gt;* VB-CODE (2)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;The Visual Basic® StrComp function can be used in conjunction with&lt;br /&gt;the RemoveItem method to delete entries that are duplicated in List&lt;br /&gt;Box controls. This article explains how you can compare the items in&lt;br /&gt;two separate List Box controls and delete the duplicate entries from&lt;br /&gt;one of the controls.&lt;br /&gt;&lt;br /&gt;Comparing the Contents of Two List Box Controls&lt;br /&gt;The AddItem and RemoveItem methods allow you to add or delete items&lt;br /&gt;from a List Box control in Visual Basic®. If the Sorted property of a&lt;br /&gt;List Box is set to True, the items are automatically sorted in&lt;br /&gt;alphabetical order as each new item is added or an old item is&lt;br /&gt;removed.&lt;br /&gt;&lt;br /&gt;If you have two List Box controls in your Visual Basic application&lt;br /&gt;and you want to remove the items from the second control that are&lt;br /&gt;already in the first List Box, you can use the StrComp function,&lt;br /&gt;which allows you to compare two strings to see if they are identical.&lt;br /&gt;When using StrComp to determine if two strings are identical, you can&lt;br /&gt;tell the function to ignore uppercase and lowercase differences.&lt;br /&gt;In other words, the function can be told to treat the string "this is&lt;br /&gt;a test" to be the same as or different from the string "THIS IS A&lt;br /&gt;TEST".&lt;br /&gt;&lt;br /&gt;If you want StrComp to ignore the case of the strings you are&lt;br /&gt;comparing, use the 1 argument. To make StrComp include the case of&lt;br /&gt;the strings in the comparison, use the 0 argument (that is,&lt;br /&gt;X = StrComp(String1, String2, 0) or X=StrComp(String1, String2, 1).)&lt;br /&gt;In addition, the Option Compare Text command, which you would place&lt;br /&gt;in the General Declarations section of a form or module, tells&lt;br /&gt;StrComp (and other string functions) that all string comparisons are&lt;br /&gt;to ignore the upper- and lowercase differences.&lt;br /&gt;&lt;br /&gt;After you call the StrComp function, it returns the status of the&lt;br /&gt;string comparison. StrComp returns one of the following four possible&lt;br /&gt;values:&lt;br /&gt;&lt;br /&gt;-1    The first string is less than the second string.&lt;br /&gt;0     The first string is identical to the second string.&lt;br /&gt;1     The first string is greater than the second string.&lt;br /&gt;NULL  Either String1 or String2 is a NULL (empty) string.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program below shows how to remove duplicate items from List Box&lt;br /&gt;controls. When the program is first executed, both List Box controls&lt;br /&gt;contain two entries that are identical. Clicking the "Remove&lt;br /&gt;Duplicates" command button removes the identical items from the&lt;br /&gt;second List Box control.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt; List1.AddItem "test1"&lt;br /&gt; List1.AddItem "test2"&lt;br /&gt; List1.AddItem "test3"&lt;br /&gt; List1.AddItem "test4"&lt;br /&gt;&lt;br /&gt; List2.AddItem "test1"&lt;br /&gt; List2.AddItem "test2"&lt;br /&gt; List2.AddItem "test5"&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;3. Add a List Box control to Form1. List1 is created by default. Set&lt;br /&gt;   its Sorted property to True.&lt;br /&gt;4. Add a second List Box control to Form1. List2 is created by&lt;br /&gt;   default. Set its Sorted property to True.&lt;br /&gt;5. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default.&lt;br /&gt;6. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt;   Call EliminateDupEntries(List1, List2)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;7. Create a new function called EliminateDupEntries. Add the&lt;br /&gt;   following code to this function:&lt;br /&gt;&lt;br /&gt;Sub EliminateDupEntries(First As Control, Sec As Control)&lt;br /&gt; Dim Findx As Integer&lt;br /&gt; Dim Sindx As Integer&lt;br /&gt; Dim Ret As Integer&lt;br /&gt;&lt;br /&gt; Findx = 0&lt;br /&gt; For Sindx = 0 To Sec.ListCount - 1&lt;br /&gt;   For Findx = Sindx To First.ListCount - 1&lt;br /&gt;       Ret = StrComp(First.List(Findx), Sec.List(Sindx))&lt;br /&gt;      Select Case Ret&lt;br /&gt;          Case 0:&lt;br /&gt;           Sec.RemoveItem Sindx&lt;br /&gt;           Sindx = Sindx - 1&lt;br /&gt;           Exit For&lt;br /&gt;          Case 1:&lt;br /&gt;           Exit For&lt;br /&gt;       End Select&lt;br /&gt;   Next Findx&lt;br /&gt; Next Sindx&lt;br /&gt;End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-5818636244958132109?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/5818636244958132109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=5818636244958132109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5818636244958132109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/5818636244958132109'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-68-removing-duplicate-items-from.html' title='Tip 68: Removing Duplicate Items from List Box Controls'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-235966083846350404</id><published>2007-07-22T07:47:00.002-07:00</published><updated>2007-07-22T07:48:47.413-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 67: Returning Focus to a Specific Control After Executing WinHelp</title><content type='html'>&lt;pre&gt;* VB-CODE (1)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;You can add online Help to your Visual Basic® application by using the&lt;br /&gt;Windows® application programming interface (API) WinHelp function.&lt;br /&gt;However, you need to keep the focus on the control that had the focus&lt;br /&gt;just before you executed the WinHelp function. This article explains&lt;br /&gt;how a control can retain the focus after calling WinHelp.&lt;br /&gt;&lt;br /&gt;Using Form-Level Variables to Retain Focus&lt;br /&gt;Almost every application developed for Windows® includes a Help&lt;br /&gt;command. In a Visual Basic® application, you can attach a Help command&lt;br /&gt;to a Command Button control. When the user clicks on the Command&lt;br /&gt;Button, your program calls the Windows application programming&lt;br /&gt;interface (API) WinHelp function to display the actual Help file.&lt;br /&gt;After the user exits the Help program, however, the Command Button&lt;br /&gt;control now has the focus. It would be preferable to have the focus&lt;br /&gt;set to the control (such as a Text Box control) that had the focus&lt;br /&gt;before WinHelp was executed.&lt;br /&gt;&lt;br /&gt;You can force your application to automatically retain a control's&lt;br /&gt;focus by defining a Form-level variable as a control. When the focus&lt;br /&gt;is moved to a different control, such as a Text Box, the Form-level&lt;br /&gt;variable should be set to the control that is getting the focus. Then,&lt;br /&gt;after displaying the Help file, the focus can be set back to the&lt;br /&gt;control by using the Form-level variable.&lt;br /&gt;In the example program below, the focus returns to the Text Box&lt;br /&gt;control each time the Help Command Button is clicked. In other words,&lt;br /&gt;the Command Button never retains the focus.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following statements to the General Declarations section&lt;br /&gt;   of Form1 (note that the Declare statement should be typed as a&lt;br /&gt;   single line of code):&lt;br /&gt;&lt;br /&gt;Const HELP_CONTENTS = &amp;amp;H3&lt;br /&gt;Declare Function WinHelp Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal lpHelpFile As String, ByVal wCommand As Integer,&lt;br /&gt;  dwData As Any) As Integer&lt;br /&gt;Dim ControlWithFocus As Control&lt;br /&gt;&lt;br /&gt;3. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;4. Add the following code to the GotFocus event for Text1:&lt;br /&gt;&lt;br /&gt;Sub Text1_GotFocus()&lt;br /&gt; Set ControlWithFocus = Text1&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;5. Add a second Text Box control to Form1. Text2 is created by&lt;br /&gt;   default.&lt;br /&gt;6. Add the following code to the GotFocus event for Text2:&lt;br /&gt;&lt;br /&gt;Sub Text2_GotFocus()&lt;br /&gt; Set ControlWithFocus = Text2&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;7. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default. Set its Caption property to "Help".&lt;br /&gt;8. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt; Dim RVal As Integer&lt;br /&gt; RVal = WinHelp(Form1.hWnd, "c:\vb\vb.hlp", HELP_CONTENTS, 0)&lt;br /&gt; ControlWithFocus.SetFocus&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Run the program. There are two Text Box controls and one Command&lt;br /&gt;Button control shown on the form. Notice that Text1 currently has the&lt;br /&gt;focus. Click the Command Button to display the Contents window in&lt;br /&gt;Help. Exit Help. The Text1 control should still have the focus. Move&lt;br /&gt;the focus to the second Text Box control, Text2. Click the Help&lt;br /&gt;command button a second time and exit Help. The second Text Box&lt;br /&gt;control should have the focus. The Command Button control never&lt;br /&gt;retains the focus.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-235966083846350404?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/235966083846350404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=235966083846350404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/235966083846350404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/235966083846350404'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-67-returning-focus-to-specific.html' title='Tip 67: Returning Focus to a Specific Control After Executing WinHelp'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4338254481783129523</id><published>2007-07-22T07:47:00.001-07:00</published><updated>2007-07-22T07:47:38.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 66: Disabling Task-Switching with the SetSysModalWindow Function</title><content type='html'>&lt;pre&gt; VB-CODE (4)&lt;br /&gt;&lt;br /&gt;Created: April 24, 1995&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;When developing an application in Visual Basic®, you may need to&lt;br /&gt;perform a task that should not be interrupted. This article explains&lt;br /&gt;how to use the Windows® application programming interface (API)&lt;br /&gt;SetSysModalWindow and LockInput functions to disable task-switching.&lt;br /&gt;&lt;br /&gt;Preventing a User from Switching to Another Application&lt;br /&gt;The Windows® application programming interface (API) SetSysModalWindow&lt;br /&gt;function can be used to prevent a user from switching to a different&lt;br /&gt;Windows-based application while your program is executing. The&lt;br /&gt;ALT+TAB, CTRL+ESC, ALT+F4, and ALT+ESC keystroke combinations will&lt;br /&gt;not bring up the Task Manager or any other application these&lt;br /&gt;keystrokes will simply be ignored. For a discussion of the&lt;br /&gt;SetSysModalWindow function, see "Additional References" below.&lt;br /&gt;&lt;br /&gt;In addition, the LockInput function can be used to force all input to&lt;br /&gt;your Visual Basic® application only. No other application will receive&lt;br /&gt;any mouse or keyboard data. The Declare statement for the LockInput&lt;br /&gt;function is as follows (note that it must be typed as a single line&lt;br /&gt;of code):&lt;br /&gt;&lt;br /&gt;Declare Function LockInput Lib "User" (ByVal hReserved As Integer,&lt;br /&gt;  ByVal hwndInput As Integer, ByVal fLock As Integer) As Integer&lt;br /&gt;&lt;br /&gt;The LockInput function requires three arguments:&lt;br /&gt;&lt;br /&gt;hReserved  An integer value that must be set to a value of zero.&lt;br /&gt;hwndInput  An integer value containing the window's handle. This is&lt;br /&gt;          the window that will receive all input.&lt;br /&gt;fLock      An integer value set to TRUE (nonzero) to lock input or&lt;br /&gt;          FALSE (zero) to unlock input.&lt;br /&gt;&lt;br /&gt;When your program is terminated, you must use the LockInput function&lt;br /&gt;to restore input to other Windows-based programs. In addition, you&lt;br /&gt;must destroy the system modal window; otherwise the user will not be&lt;br /&gt;able to switch to any other Windows-based applications and will have&lt;br /&gt;to reboot the computer system.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program below shows how you can prevent a user from switching to&lt;br /&gt;another Windows-based application while your program is executing.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Set the following properties for Form1:&lt;br /&gt;&lt;br /&gt;ClipControls = False&lt;br /&gt;ControlBox = false&lt;br /&gt;MaxButton = False&lt;br /&gt;MinButton = False&lt;br /&gt;&lt;br /&gt;3. Add the following Dim and Declare statements to the General&lt;br /&gt;   Declarations section of Form1 (note that each Declare statement&lt;br /&gt;   must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function GetActiveWindow Lib "User" () As Integer&lt;br /&gt;Declare Function SetFocusAPI Lib "User" Alias "SetFocus"&lt;br /&gt;  (ByVal Hwnd As Integer) As Integer&lt;br /&gt;Declare Function SetSysModalWindow Lib "User"&lt;br /&gt;  (ByVal Hwnd As Integer) As Integer&lt;br /&gt;Declare Function LockInput Lib "User"&lt;br /&gt;  (ByVal hReserved As Integer, ByVal hwndInput As Integer,&lt;br /&gt;  ByVal fLock As Integer) As Integer&lt;br /&gt;Dim TopHwnd As Integer&lt;br /&gt;&lt;br /&gt;4. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt; Dim X As Integer&lt;br /&gt; Show&lt;br /&gt; DoEvents&lt;br /&gt; TopHwnd = GetActiveWindow()&lt;br /&gt; X = SetFocusAPI(TopHwnd)&lt;br /&gt; X = SetSysModalWindow(TopHwnd)&lt;br /&gt; X = LockInput(0, TopHwnd, 1)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;5. Add the following code to the Form_Unload event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Unload(Cancel As Integer)&lt;br /&gt; X = LockInput(0, TopHwnd, 0)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default. Set its Caption property to "Quit".&lt;br /&gt;7. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt;   X = LockInput(0, TopHwnd, 0)&lt;br /&gt;   End&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Additional References&lt;br /&gt;Knowledge Base Q72674. "How to Create a System-Modal Program/Window&lt;br /&gt;in Visual Basic." (Development Library, Knowledge Base and Bug Lists)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4338254481783129523?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4338254481783129523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4338254481783129523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4338254481783129523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4338254481783129523'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-66-disabling-task-switching-with.html' title='Tip 66: Disabling Task-Switching with the SetSysModalWindow Function'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-196533901183623520</id><published>2007-07-22T07:43:00.001-07:00</published><updated>2007-07-22T07:43:58.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 65: Separating a Path into Individual Fields</title><content type='html'>&lt;pre&gt;* VB-CODE (3)&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;When developing an application in Visual Basic®, you may need to ask&lt;br /&gt;the user to enter a fully qualified path, such as when saving a data&lt;br /&gt;file to disk. However, your program may need to determine if the&lt;br /&gt;specified directory and filename are valid DOS names, or you may need&lt;br /&gt;to use the individual elements of the path in some other way. This&lt;br /&gt;article demonstrates how you can write a procedure to extract the&lt;br /&gt;individual path, filename, and filename extension from a fully&lt;br /&gt;qualified path.&lt;br /&gt;&lt;br /&gt;Parsing the Elements of a Path&lt;br /&gt;The Visual Basic® InStr and Left$ functions provide the tools you&lt;br /&gt;need to parse, or extract, certain text from a larger text string.&lt;br /&gt;The InStr function lets you search for a specific character within&lt;br /&gt;a text string. If it finds the target character, InStr returns the&lt;br /&gt;character's position in the text string. Once you know where the&lt;br /&gt;target text is, you can use the Left$ function to retrieve only a&lt;br /&gt;specific portion of the original text string. In the example program&lt;br /&gt;below, we want to retrieve the directory name from the path.&lt;br /&gt;Therefore, we first call InStr to search the target string (Full) for&lt;br /&gt;the "\" backslash character. The backslash character tells us that&lt;br /&gt;the name of a directory was specified in the path. If the backslash&lt;br /&gt;character is found, we use the Left$ function to extract this&lt;br /&gt;directory name and store it in the variable Pname. We know that the&lt;br /&gt;name of the directory starts at the string's first position and ends&lt;br /&gt;at the position returned by InStr. This same technique is used to&lt;br /&gt;extract the filename extension from the specified filename, only the&lt;br /&gt;&lt;br /&gt;nStr function is told to search for the '.' (period character) and&lt;br /&gt;the Mid$ function is used to extract the actual filename's extension.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The following program shows how you can separate a fully qualified&lt;br /&gt;path into separate directory, filename, and filename extension fields.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add a Text Box control to Form1. Text1 is created by default. Set&lt;br /&gt;   its MultiLine property to True.&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt; Dim FullName As String&lt;br /&gt; Dim X As Integer&lt;br /&gt; Dim PathName As String&lt;br /&gt; Dim FileName As String&lt;br /&gt; Dim ExtName As String&lt;br /&gt;&lt;br /&gt; FullName = "c:\winword\legal\filename.exe"&lt;br /&gt; X = BreakDown(FullName, FileName, PathName, ExtName)&lt;br /&gt;&lt;br /&gt; Text1.Text = ""&lt;br /&gt; Text1.Text = "Pathname  &gt; " &amp; PathName &amp;amp; Chr(13) &amp; Chr(10)&lt;br /&gt; Text1.Text = Text1.Text &amp;amp; "FileName  &gt; " &amp; FileName &amp;amp; Chr(13) &amp; Chr(10)&lt;br /&gt; Text1.Text = Text1.Text &amp;amp; "Extension &gt; " &amp; ExtName &amp;amp; Chr(13) &amp;amp; Chr(10)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Create a new function called BreakDown. Add the following code to&lt;br /&gt;   this function (note that the BreakDown line must be typed as a&lt;br /&gt;   single line of code):&lt;br /&gt;&lt;br /&gt;BreakDown(Full As String, FName As String, PName As String, Ext As String) As Integer&lt;br /&gt; If Full = "" Then&lt;br /&gt;     BreakDown = False&lt;br /&gt;     Exit Function&lt;br /&gt; End If&lt;br /&gt; If InStr(Full, "\") Then&lt;br /&gt;     FName = Full&lt;br /&gt;     PName = ""&lt;br /&gt;     Sloc% = InStr(FName, "\")&lt;br /&gt;     Do While Sloc% &lt;&gt; 0&lt;br /&gt;       PName = PName + Left$(FName, Sloc%)&lt;br /&gt;       FName = Mid$(FName, Sloc% + 1)&lt;br /&gt;       Sloc% = InStr(FName, "\")&lt;br /&gt;     Loop&lt;br /&gt; Else&lt;br /&gt;     PName = ""&lt;br /&gt;     FName = Full&lt;br /&gt; End If&lt;br /&gt; Dot% = InStr(Full, ".")&lt;br /&gt; If Dot% &lt;&gt; 0 Then&lt;br /&gt;     Ext = Mid$(Full, Dot%)&lt;br /&gt; Else&lt;br /&gt;     Ext = ""&lt;br /&gt; End If&lt;br /&gt; BreakDown = True&lt;br /&gt;End Function&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-196533901183623520?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/196533901183623520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=196533901183623520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/196533901183623520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/196533901183623520'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-65-separating-path-into-individual.html' title='Tip 65: Separating a Path into Individual Fields'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6157969338488604274</id><published>2007-07-22T07:41:00.000-07:00</published><updated>2007-07-22T07:42:52.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 64: Changing the Case of Text Entered in a Text Box Control</title><content type='html'>&lt;pre&gt;&lt;br /&gt;Abstract&lt;br /&gt;This article explains how you can force a Visual Basic® Text Box&lt;br /&gt;control to convert all typed text to either uppercase or lowercase&lt;br /&gt;characters.&lt;br /&gt;&lt;br /&gt;Forcing Text to Be Uppercase or Lowercase&lt;br /&gt;The Visual Basic® Text Box control allows your program to accept any&lt;br /&gt;ASCII character typed on the keyboard by the user. You can force&lt;br /&gt;Windows® to convert the typed text to either all uppercase or all&lt;br /&gt;lowercase characters.&lt;br /&gt;&lt;br /&gt;The Windows application programming interface (API) GetWindowLong and&lt;br /&gt;SetWindowLong functions return or set various types of information&lt;br /&gt;about the style associated with the specified window. Every window in&lt;br /&gt;a Windows-based application has certain attributes that determine how&lt;br /&gt;that window is used within an application. Some of these style&lt;br /&gt;attributes can be changed at run time to modify the behavior of&lt;br /&gt;controls such as the Text Box control.&lt;br /&gt;&lt;br /&gt;To determine a window's current style settings, you can use the&lt;br /&gt;GetWindowLong function. The Declare statement for GetWindowLong is as&lt;br /&gt;follows (note that it must be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function GetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal nIndex As Integer) As Long&lt;br /&gt;&lt;br /&gt;The GetWindowLong function requires two arguments, as follows:&lt;br /&gt;&lt;br /&gt;hWnd    An integer value containing the window's handle&lt;br /&gt;nIndex  An integer value containing the type of window information&lt;br /&gt;       you want to retrieve. This value may be one of the following&lt;br /&gt;       constants:&lt;br /&gt;GWL_EXSTYLE   Retrieves the extended window style.&lt;br /&gt;GWL_STYLE     Retrieves the window style.&lt;br /&gt;GWL_WINDPROC  Retrieves the window function's address.&lt;br /&gt;&lt;br /&gt;After the GetWindowLong function is executed, a long value is&lt;br /&gt;returned. This value depends on the specific nIndex argument used to&lt;br /&gt;call the function.&lt;br /&gt;To change a window's style, you call the SetWindowLong function. Its&lt;br /&gt;Declare statement is as follows (note that it must be typed as a&lt;br /&gt;single line of code):&lt;br /&gt;&lt;br /&gt;Declare Function SetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long&lt;br /&gt;&lt;br /&gt;The SetWindowLong function requires one more argument than the&lt;br /&gt;GetWindowLong function, namely, dwNewLong. This long value should&lt;br /&gt;contain the new style value you want to apply to the specified window.&lt;br /&gt;When you want to force a Text Box control to convert typed text to&lt;br /&gt;uppercase characters, you can call SetWindowLong with dwNewLong set&lt;br /&gt;to the constant ES_UPPERCASE. Conversely, to convert all typed text&lt;br /&gt;to lowercase characters, you call SetWindowLong with dwNewLong set&lt;br /&gt;to the constant ES_LOWERCASE. In an actual Visual Basic application,&lt;br /&gt;you would first preserve the control's original window style and then&lt;br /&gt;restore the window's style when your special task has been completed.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program shown below displays two Command Buttons and a Text Box&lt;br /&gt;on a form. Click the "Uppercase Only" Command Button to force all&lt;br /&gt;text typed in the Text Box to uppercase characters. Conversely, click&lt;br /&gt;the "Lowercase Only" Command Button to force typed text to be&lt;br /&gt;converted to lowercase characters.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Declare statements to the General Declarations&lt;br /&gt;   section of Form1 (note that each Declare statement must be typed&lt;br /&gt;   as a single line of text):&lt;br /&gt;&lt;br /&gt;Declare Function GetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal nIndex As Integer) As Long&lt;br /&gt;Declare Function SetWindowLong Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long&lt;br /&gt;&lt;br /&gt;3. Add a Text Box control to Form1. Text1 is created by default.&lt;br /&gt;4. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default. Set its Caption property to "Uppercase Only".&lt;br /&gt;5. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt; Text1.Text = ""&lt;br /&gt; X = ChangeCase(Text1, True)&lt;br /&gt; Text1.SetFocus&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add a second Command Button control to Form1. Command2 is created&lt;br /&gt;   by default. Set its Caption property to "Lowercase Only".&lt;br /&gt;7. Add the following code to the Click event for Command2:&lt;br /&gt;&lt;br /&gt;Sub Command2_Click()&lt;br /&gt; Text1.Text = ""&lt;br /&gt;  X = ChangeCase(Text1, False)&lt;br /&gt; Text1.SetFocus&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;8. Create a new function called ChangeCase. Add the following code&lt;br /&gt;   to this function:&lt;br /&gt;&lt;br /&gt;Function ChangeCase(TheControl As Control, UpLow As Integer) As Integer&lt;br /&gt; Const GWL_STYLE = (-16)&lt;br /&gt; Const ES_UPPERCASE = &amp;H8&amp;amp;&lt;br /&gt; Const ES_LOWERCASE = &amp;H10&amp;amp;&lt;br /&gt; Dim Rtn As Long&lt;br /&gt; Dim EditStyle As Long&lt;br /&gt; EditStyle = GetWindowLong(TheControl.hWnd, GWL_STYLE)&lt;br /&gt; If UpLow = True Then&lt;br /&gt;     EditStyle = EditStyle Or ES_UPPERCASE&lt;br /&gt; End If&lt;br /&gt; If UpLow = False Then&lt;br /&gt;     EditStyle = EditStyle Or ES_LOWERCASE&lt;br /&gt; End If&lt;br /&gt; Rtn = SetWindowLong(TheControl.hWnd, GWL_STYLE, EditStyle)&lt;br /&gt;End Function&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6157969338488604274?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6157969338488604274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6157969338488604274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6157969338488604274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6157969338488604274'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-64-changing-case-of-text-entered-in.html' title='Tip 64: Changing the Case of Text Entered in a Text Box Control'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7893864190408617063</id><published>2007-07-22T07:40:00.000-07:00</published><updated>2007-07-22T07:41:32.837-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Triks Visual Basics (VB)'/><title type='text'>Tip 63: Preventing List Box from Redrawing (Refreshing)</title><content type='html'>&lt;pre&gt;Created: April 24, 1995&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;In a Visual Basic® application you can update the contents of a List&lt;br /&gt;Box control by using the AddItem or RemoveItem methods. However, if&lt;br /&gt;you do not want the contents of the modified List Box to be updated&lt;br /&gt;until all items have been added or deleted, you can use the Windows®&lt;br /&gt;application programming interface (API) SendMessage function to set a&lt;br /&gt;flag (WM_SETREDRAW) telling Windows not to update the control until&lt;br /&gt;you specifically ask it to do so. This article explains how you can&lt;br /&gt;prevent a List Box control from being updated immediately.&lt;br /&gt;&lt;br /&gt;Using the WM_SETREDRAW Message&lt;br /&gt;In a Visual Basic® application, you can use a List Box control to hold&lt;br /&gt;items such as names of people. When a user clicks on an item in a List&lt;br /&gt;Box control, that item is highlighted and is said to be selected. If a&lt;br /&gt;List Box's MultiSelect property is set to True, multiple items can be&lt;br /&gt;selected at one time. New items can be added to a List Box control by&lt;br /&gt;using the AddItem method, and items can be deleted using the&lt;br /&gt;RemoveItem method. However, as soon as you use AddItem or RemoveItem,&lt;br /&gt;the List Box's Refresh event is triggered, which in turn updates the&lt;br /&gt;contents of the control. This behavior may not be appropriate in cases&lt;br /&gt;where you want to suppress the updating process while adding,&lt;br /&gt;deleting, or changing a large number of entries.&lt;br /&gt;&lt;br /&gt;You can force your Visual Basic application to update the List Box&lt;br /&gt;control at a specific time by using the Windows® application&lt;br /&gt;programming interface (API) SendMessage and SendMessageByString&lt;br /&gt;functions. You must send the WM_SETREDRAW message to the control to&lt;br /&gt;prevent the List Box from being updated. In addition, you must also&lt;br /&gt;send the actual data to the List Box by using the SendMessage&lt;br /&gt;function you cannot use the AddItem or RemoveItem methods, because&lt;br /&gt;these methods will override the WM_SETREDRAW message.&lt;br /&gt;&lt;br /&gt;Setting the redraw flag to TRUE turns the redraw function on, and&lt;br /&gt;setting the redraw flag to FALSE turns the redraw function off.&lt;br /&gt;Therefore, in a Visual Basic application that is updating a List Box,&lt;br /&gt;you must send the WM_SETREDRAW message before you actually begin&lt;br /&gt;manipulating the contents of the control. After you have finished&lt;br /&gt;adding or removing items from the List Box control, you can send&lt;br /&gt;another WM_SETREDRAW message to turn the redraw function on again.&lt;br /&gt;This will cause Windows to display the modified List Box control&lt;br /&gt;immediately.&lt;br /&gt;&lt;br /&gt;Example Program&lt;br /&gt;The program shown below displays two List Box controls on the form.&lt;br /&gt;You can select items from the first List Box by clicking them. Each&lt;br /&gt;selected item will be added to the second List Box control when you&lt;br /&gt;click the "Show Results" command button.&lt;br /&gt;&lt;br /&gt;1. Create a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;2. Add the following Constant and Declare statements to the General&lt;br /&gt;   Declarations section of Form1 (note that each Declare statement&lt;br /&gt;   should be typed as a single line of code):&lt;br /&gt;&lt;br /&gt;Const WM_SetRedraw = &amp;HB&lt;br /&gt;Const LB_ADDSTRING = &amp;amp;H401&lt;br /&gt;&lt;br /&gt;Declare Function SendMessage Lib "User" (ByVal hWnd As Integer,&lt;br /&gt;  ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any)&lt;br /&gt;  As Integer&lt;br /&gt;Declare Function SendMessageByString Lib "User" Alias "PostMessage"&lt;br /&gt;  (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam&lt;br /&gt;  As Integer, ByVal lParam As String) As Integer&lt;br /&gt;&lt;br /&gt;3. Add the following code to the Form_Load event for Form1:&lt;br /&gt;&lt;br /&gt;Sub Form_Load()&lt;br /&gt; Dim X As Integer&lt;br /&gt; Dim D As Integer&lt;br /&gt; Dim S As String&lt;br /&gt; 'Add some dummy data to List1&lt;br /&gt; For X = 0 To 15&lt;br /&gt;     List1.AddItem "Item #" + Str$(X)&lt;br /&gt; Next X&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;4. Add a Command Button control to Form1. Command1 is created by&lt;br /&gt;   default. Set its Caption property to "Show Results".&lt;br /&gt;5. Add the following code to the Click event for Command1:&lt;br /&gt;&lt;br /&gt;Sub Command1_Click()&lt;br /&gt; 'Show updated list box now&lt;br /&gt; X = SendMessage(List2.hWnd, WM_SetRedraw, 1, 0)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;6. Add a List Box control to Form1. List1 is created by default. Set&lt;br /&gt;   its MultiSelect property to True.&lt;br /&gt;7. Add the following code to the DblClick event for List1:&lt;br /&gt;&lt;br /&gt;Sub List1_DblClick()&lt;br /&gt;   'Disable the Repaint event&lt;br /&gt;   X = SendMessage(List2.hWnd, WM_SetRedraw, 0, 0)&lt;br /&gt;   S = List1.List(List1.ListIndex)&lt;br /&gt; ' Must use SendMessageByString instead of&lt;br /&gt; ' List2.AddItem S to prevent redrawing&lt;br /&gt;   D = SendMessageByString(List2.hWnd, LB_ADDSTRING, 0, S)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;8. Add a second List Box control to Form1. List2 is created by&lt;br /&gt;   default.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-7893864190408617063?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/7893864190408617063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=7893864190408617063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7893864190408617063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/7893864190408617063'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/tip-63-preventing-list-box-from.html' title='Tip 63: Preventing List Box from Redrawing (Refreshing)'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1721721612916876248</id><published>2007-07-22T07:37:00.000-07:00</published><updated>2007-07-22T07:38:46.628-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Could Not Execute Link.exe'/><title type='text'>FIX: "Could Not Execute Link.exe" Error Message When You Build Large Visual Basic Projects</title><content type='html'>&lt;div class="section"&gt;&lt;h2 class="subTitle" id="tocHeadRef"&gt;SYMPTOMS&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'symptoms');&lt;/script&gt;&lt;div class="sbody"&gt; You can build small Visual Basic projects successfully. However, if you build a large Visual Basic project, you may receive the following error message: &lt;div class="errormsg"&gt; Could not execute 'C:\Program Files\Microsoft Visual Studio\VB98\Link.exe' &lt;/div&gt;  This problem occurs more often when you build your project under nested folders. &lt;/div&gt;&lt;h2 class="subTitle" id="tocHeadRef"&gt;CAUSE&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'cause');&lt;/script&gt;&lt;div class="sbody"&gt;The length of the Link.exe command line exceeds the limitation of the operating system because of the large number of modules that must be linked in your project. &lt;/div&gt;&lt;h2 class="subTitle" id="tocHeadRef"&gt;RESOLUTION&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'resolution');&lt;/script&gt;&lt;div class="sbody"&gt;A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Visual Studio 6.0 service pack that contains this hotfix.&lt;br /&gt;&lt;br /&gt;To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:&lt;div class="indent"&gt;&lt;span class="pLink"&gt; (http://support.microsoft.com/contactus/?ws=support)&lt;/span&gt;&lt;/div&gt;&lt;b&gt;NOTE&lt;/b&gt;: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.&lt;br /&gt;&lt;br /&gt; The English version of this fix should have the following file attributes or later:  &lt;pre class="in_text"&gt;   Date        Time    Version     Size     File name     Platform&lt;br /&gt;  --------------------------------------------------------------&lt;br /&gt;  8-Jan-2002  11:52   6.0.0.9445  1.601 KB VBA6.dll      x86&lt;br /&gt;    &lt;/pre&gt; To install this hotfix, rename the old VBA6.dll file, and then replace it with the new VBA6.dll file that is included in the fix.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 class="subTitle" id="tocHeadRef"&gt;WORKAROUND&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'workaround');&lt;/script&gt;&lt;div class="sbody"&gt;If the number of modules in your project is not too large, you can build your project executable files into a folder with a short path such as C:\. &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="appliesTo"&gt;&lt;hr /&gt;&lt;h5&gt;APPLIES TO&lt;/h5&gt;&lt;table class="list"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="bullet"&gt;•&lt;/td&gt;&lt;td class="text"&gt;Microsoft Visual Basic 6.0 Enterprise Edition&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="bullet"&gt;•&lt;/td&gt;&lt;td class="text"&gt;Microsoft Visual Basic 6.0 Professional Edition&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="header"&gt;&lt;h5&gt;Keywords: &lt;/h5&gt;&lt;/td&gt;&lt;td class="text"&gt;kbbug kbfix kbqfe kbcompiler kbhotfixserver KB316010&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1721721612916876248?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1721721612916876248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1721721612916876248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1721721612916876248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1721721612916876248'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/fix-could-not-execute-linkexe-error.html' title='FIX: &quot;Could Not Execute Link.exe&quot; Error Message When You Build Large Visual Basic Projects'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8958916830344162955</id><published>2007-07-22T07:32:00.000-07:00</published><updated>2007-07-22T07:36:38.327-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compile VB Programs'/><title type='text'>How To Compile VB Programs with Debug Symbols Embedded</title><content type='html'>&lt;h2 class="subTitle" id="tocHeadRef"&gt;SUMMARY&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'summary');&lt;/script&gt;&lt;div class="sbody"&gt; The "Compile to Native Code" option introduced in Visual Basic versions 5.0 and 6.0 not only improves performance of Visual Basic programs and components, but also makes it possible to debug them with the Visual C++ debugger.&lt;br /&gt;&lt;br /&gt;This article shows you how to compile a Visual Basic program or component with embedded debug symbols. By doing so, you simplify the debugging process and avoid the problems associated with mismatched and improperly placed symbols. &lt;/div&gt;&lt;h2 class="subTitle" id="tocHeadRef"&gt;MORE INFORMATION&lt;/h2&gt;&lt;script type="text/javascript"&gt;loadTOCNode(1, 'moreinformation');&lt;/script&gt; All it takes to compile a Visual Basic program or component with embedded debug symbols is a properly set environment variable, LINK. The key is to set it in such a way that Visual Basic inherits the setting when it is launched. To do this, follow the steps below:&lt;br /&gt;&lt;br /&gt;There are several ways to set the LINK environment variable, each of these methods is outlined below:&lt;br /&gt;&lt;br /&gt;&lt;h3 id="tocHeadRef"&gt;Windows NT or Windows 95/98/Me&lt;/h3&gt;&lt;script type="text/javascript"&gt;loadTOCNode(2, 'moreinformation');&lt;/script&gt;&lt;table class="list ol"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;1.&lt;/td&gt;&lt;td class="text"&gt;Open an MS-DOS Prompt. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;2.&lt;/td&gt;&lt;td class="text"&gt;Navigate to the folder containing Visual Basic. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;3.&lt;/td&gt;&lt;td class="text"&gt;Execute the following command, "set link=/pdb:none" without quotes. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;4.&lt;/td&gt;&lt;td class="text"&gt;Start Visual Basic from the MS-DOS command prompt. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id="tocHeadRef"&gt;Windows NT Only&lt;/h3&gt;&lt;script type="text/javascript"&gt;loadTOCNode(2, 'moreinformation');&lt;/script&gt;&lt;table class="list ol"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;1.&lt;/td&gt;&lt;td class="text"&gt;From the Control Panel, select the System icon. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;2.&lt;/td&gt;&lt;td class="text"&gt;Select the Environment tab. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;3.&lt;/td&gt;&lt;td class="text"&gt;In the Variable entry, enter "link" without quotes. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;4.&lt;/td&gt;&lt;td class="text"&gt;In the Value entry, enter the following: &lt;br /&gt;&lt;br /&gt;     /pdb:none &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;5.&lt;/td&gt;&lt;td class="text"&gt;Press Set, then Apply. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;6.&lt;/td&gt;&lt;td class="text"&gt;Start Visual Basic from the MS-DOS command prompt. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id="tocHeadRef"&gt;Windows 95/98/Me Only&lt;/h3&gt;&lt;script type="text/javascript"&gt;loadTOCNode(2, 'moreinformation');&lt;/script&gt;&lt;table class="list ol"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;1.&lt;/td&gt;&lt;td class="text"&gt;Make a backup copy of the AutoExec.Bat file. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;2.&lt;/td&gt;&lt;td class="text"&gt;Open the Autoexec.bat file with Notepad.Exe or any text editor. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;3.&lt;/td&gt;&lt;td class="text"&gt;Add the following entry to the AutoExec.Bat file: &lt;br /&gt;&lt;br /&gt;     set link=/pdb:none &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;4.&lt;/td&gt;&lt;td class="text"&gt;Save the AutoExec.Bat file. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;5.&lt;/td&gt;&lt;td class="text"&gt;Execute the AutoExec.Bat file or reboot the machine. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;6.&lt;/td&gt;&lt;td class="text"&gt;Start Visual Basic. &lt;br /&gt;&lt;br /&gt;  Once the LINK environment variable is set, a Visual Basic project can be    compiled with embedded debug symbols. The following steps describe how    to create a test program and compile it with embedded debug symbols: &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id="tocHeadRef"&gt;Step-by-Step Example&lt;/h3&gt;&lt;script type="text/javascript"&gt;loadTOCNode(2, 'moreinformation');&lt;/script&gt;&lt;table class="list ol"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;1.&lt;/td&gt;&lt;td class="text"&gt;Create a new Standard EXE project in Visual Basic. Form1 is created by    default. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;2.&lt;/td&gt;&lt;td class="text"&gt;Add a CommandButton (Command1) to Form1. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;3.&lt;/td&gt;&lt;td class="text"&gt;Add the following code to Form1: &lt;code&gt;&lt;/code&gt;&lt;pre class="code"&gt;      Private Sub Command1_Click()&lt;br /&gt;       Dim s As String&lt;br /&gt;       s = App.EXEName&lt;br /&gt;       Print s&lt;br /&gt;    End Sub&lt;br /&gt;     &lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;4.&lt;/td&gt;&lt;td class="text"&gt;Select Project1 Properties from the Project menu. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;5.&lt;/td&gt;&lt;td class="text"&gt;Select the Compile tab. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;6.&lt;/td&gt;&lt;td class="text"&gt;Select Compile to Native Code, check Create Symbolic Debug Info, and    select No Optimization. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;7.&lt;/td&gt;&lt;td class="text"&gt;Save the project and create Project1.EXE. Note that the EXE is created    with embedded debug symbols.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8958916830344162955?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8958916830344162955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8958916830344162955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8958916830344162955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8958916830344162955'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/how-to-compile-vb-programs-with-debug.html' title='How To Compile VB Programs with Debug Symbols Embedded'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6612344074988446955</id><published>2007-07-21T01:09:00.000-07:00</published><updated>2007-07-22T07:13:22.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.1.  Aplikasi ADO  Code'/><title type='text'>Pemrograman Database dengan ADO Code</title><content type='html'>&lt;pre&gt;'Deskripsi: Contoh source code untuk menangani database, lengkap dengan&lt;br /&gt;'           fungsi/prosedur menambah, menyimpan, mengedit, menghapus,&lt;br /&gt;'           navigasi, mencari pertama, mencari berikutnya, memfilter, dan&lt;br /&gt;'           menyortir data. Sangat cocok untuk digunakan sebagai template&lt;br /&gt;'           pemrograman database menggunakan coding yang memerlukan&lt;br /&gt;'           validasi data dan penanganan khusus lainnya.&lt;br /&gt;'           Menggunakan reference Microsoft ActiveX Data Objects 2.0 Library&lt;br /&gt;'           dan component DataGrid untuk penanganan data.&lt;br /&gt;'Pembuat  : Masino Sinaga (masino_sinaga@posindonesia.co.id)&lt;br /&gt;'Hari/Tgl : Sabtu, 11 Mei 2002&lt;br /&gt;'Modifik. : Jumat, 31 Mei 2002&lt;br /&gt;'Persiapan: 1. Buat 1 Project baru dengan 2 Form, beri nama frmADOCode&lt;br /&gt;'              dan frmInfo.&lt;br /&gt;'           2. Pada frmData (utilitas database), tambahkan sebagai berikut:&lt;br /&gt;'              * TextBox:&lt;br /&gt;'                - txtFields(0), set properti DataField = NIM&lt;br /&gt;'                - txtFields(1), set properti DataField = Nama&lt;br /&gt;'                - txtFields(2), set properti DataField = Nippos&lt;br /&gt;'                - txtFields(3), set properti DataField = Alamat&lt;br /&gt;'                - txtFields(4), set properti DataField = Tgl_lahir&lt;br /&gt;'              * DataGrid, Name = grdDataGrid&lt;br /&gt;'              * Picturebox, Name = picStatBox, di dalamnya tambahkan:&lt;br /&gt;'                - cmdFirst       (Commandbutton)&lt;br /&gt;'                - cmdPrevious    (Commandbutton)&lt;br /&gt;'                - cmdNext        (Commandbutton)&lt;br /&gt;'                - cmdLast        (Commandbutton)&lt;br /&gt;'                - lblStatus      (Label)&lt;br /&gt;'              * Picturebox, Name = picButtons, di dalamnya tambahkan:&lt;br /&gt;'                - cmdAdd         (Commandbutton)&lt;br /&gt;'                - cmdUpdate      (Commandbutton)&lt;br /&gt;'                - cmdCancel      (Commandbutton)&lt;br /&gt;'                - cmdDelete      (Commandbutton)&lt;br /&gt;'                - cmdEdit        (Commandbutton)&lt;br /&gt;'                - cmdRefresh     (Commandbutton)&lt;br /&gt;'                - cmdAbout       (Commandbutton)&lt;br /&gt;'                - cmdClose       (Commandbutton)&lt;br /&gt;'              * Picturebox, Name = picUtility, di dalamnya tambahkan:&lt;br /&gt;'                - cmdFindFirst   (Commandbutton)&lt;br /&gt;'                - cmdFindNext    (Commandbutton)&lt;br /&gt;'                - cmdView        (Commandbutton)&lt;br /&gt;'                - cmdClearSearch (Commandbutton)&lt;br /&gt;'                - cmdFilter      (Commandbutton)&lt;br /&gt;'                - cmdUnFilter    (Commandbutton)&lt;br /&gt;'                - cmdSortASC     (Commandbutton)&lt;br /&gt;'                - cmdSortDESC    (Commandbutton)&lt;br /&gt;'           3. Pada frmInfo (utk pencarian data), tambahkan sebagai berikut:&lt;br /&gt;'              * Textbox, beri nama Text1, set property Multiline = True&lt;br /&gt;'              * Commandbutton, sbb:&lt;br /&gt;'                - cmdFindFirst   (Commandbutton)&lt;br /&gt;'                - cmdFindNext    (Commandbutton)&lt;br /&gt;'                - cmdClearSearch (Commandbutton)&lt;br /&gt;'                - cmdSimpan      (Commandbutton)&lt;br /&gt;'                - cmdOK          (Commandbutton)&lt;br /&gt;'           4. Tambahkan reference "Microsoft ActiveX Data Objects 2.0 Library"&lt;br /&gt;'              dari menu Project-&gt;References...&lt;br /&gt;'           5. Tambahkan component "Microsoft Common Dialog Control 6.0 (SP3)"&lt;br /&gt;'              dari menu Project-&gt;Components... pada frmInfo&lt;br /&gt;'           6. Copy-kan coding untuk setiap form yang bertalian&lt;br /&gt;'              (lihat di frmADOCode dan frmInfo di bawah)&lt;br /&gt;'---------------------------------------------------------------------------------&lt;br /&gt;&lt;/pre&gt; &lt;a href="http://www.geocities.com/masino_sinaga/files%5CADOCode.zip"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6612344074988446955?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6612344074988446955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6612344074988446955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6612344074988446955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6612344074988446955'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/pemrograman-database-dengan-ado-code_21.html' title='Pemrograman Database dengan ADO Code'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-1338778882068528141</id><published>2007-07-21T00:20:00.000-07:00</published><updated>2007-07-22T07:16:32.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9. Null In Access Fields'/><title type='text'>Dealing with Null Strings in Access Database Fields</title><content type='html'>&lt;p&gt; By default Access string fields contain NULL  values unless a string value (including a blank  string like "") has been assigned. When you read  these fields using recordsets into VB string  variables, you get a runtime type-mismatch error.  The best way to deal with this problem is to use  the built-in &amp; operator to concatenate a blank  string to each field as you read it.   &lt;/p&gt;&lt;p&gt; For example:  &lt;/p&gt;&lt;pre&gt;Dim DB As Database&lt;br /&gt;Dim RS As Recordset&lt;br /&gt;Dim sYear As String&lt;br /&gt;Set DB = OpenDatabase("Biblio.mdb")&lt;br /&gt;Set RS = DB.OpenRecordset("Authors")&lt;br /&gt;sYear = "" &amp;amp; RS![Year Born]&lt;br /&gt;&lt;/pre&gt; &lt;p&gt; Tip by Matthias Steinbart  &lt;/p&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-1338778882068528141?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/1338778882068528141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=1338778882068528141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1338778882068528141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/1338778882068528141'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/dealing-with-null-strings-in-access.html' title='Dealing with Null Strings in Access Database Fields'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4346537522700128984</id><published>2007-07-21T00:18:00.000-07:00</published><updated>2007-07-22T07:16:57.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='8. Export To Any Type DB'/><title type='text'>Export to Any Type of Database</title><content type='html'>&lt;p&gt; Everyone tells you how to import, but even most  MS-VB techs start coughing when you ask how to  export with DAO! Use this code to get data out to different formats  without requiring a complete copy of any DBMS on  the user machine. &lt;/p&gt;&lt;p&gt; Create a new project with a command button and a  DAO3.5 reference, then copy this code to the  button's Click event (snippet assumes the MS  sample file biblio.mdb is in the application path):  &lt;/p&gt;&lt;pre&gt;Dim db as database&lt;br /&gt;Set db = Workspaces(0).OpenDatabase(app.path &amp; "biblio.mdb")&lt;br /&gt;'commented out syntax followed by working example&lt;br /&gt;'db.execute "SELECT tbl.fields INTO [dbms type;DATABASE=path].[unqualified 'filename] FROM [table or tables]&lt;br /&gt;db.execute "SELECT * INTO [dBase III;DATABASE="C:My Documents].[testa] FROM [authors]"&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt; By using the brackets and dot operator, you get a  completely proper output in the ISAM database type  of your choice. Also, if you choose Text as the  database type, the statement creates a Schema.ini  for you automatically, or adds a new section for  your new data file to a Schema.ini already in the  path folder. &lt;/p&gt;&lt;p&gt; Now you can do any kind of export the client wants  without using a DBMS on the machine. This makes  your life easier when you notice that some of your  users running Word97 have problems mail-merging  with text files you originally created with  traditional (and slower) Write# and Print#  methods.  &lt;/p&gt;&lt;p&gt; Tip by Robert Smith  &lt;/p&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4346537522700128984?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4346537522700128984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4346537522700128984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4346537522700128984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4346537522700128984'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/export-to-any-type-of-database.html' title='Export to Any Type of Database'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-46289635813776292</id><published>2007-07-21T00:17:00.000-07:00</published><updated>2007-07-22T07:24:22.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='7. Speed Up DB Access'/><title type='text'>How to Speed Up Database Access</title><content type='html'>&lt;p&gt; Here is a trick to loop through a recordset  faster. Often when looping through a recordset  people will use the following code:  &lt;/p&gt;&lt;pre&gt;Do While Not Records.EOF&lt;br /&gt;Combo1.AddItem Records![Full Name]&lt;br /&gt;Records.Movenext&lt;br /&gt;Loop&lt;br /&gt;&lt;/pre&gt; &lt;p&gt; The problem is that everytime the database moves  to the next record it must make a check to see if  it has reached the end of the file. This slows the  looping down a great deal. When moving or  searching throuch a large record set this can make  a major difference. Here is a better way to do it.  &lt;/p&gt;&lt;pre&gt;Records.MoveLast&lt;br /&gt;intRecCount=Records.RecordCount&lt;br /&gt;Records.MoveFirst&lt;br /&gt;&lt;br /&gt;For intCounter=1 To intRecCount&lt;br /&gt;Combo1.AddItem Records![Full Name]&lt;br /&gt;Records.MoveNext&lt;br /&gt;Next intCounter&lt;br /&gt;&lt;/pre&gt; &lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-46289635813776292?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/46289635813776292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=46289635813776292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/46289635813776292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/46289635813776292'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/how-to-speed-up-database-access.html' title='How to Speed Up Database Access'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-4037567506727298910</id><published>2007-07-20T22:54:00.000-07:00</published><updated>2007-07-20T22:55:14.923-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='6. Scroll Form'/><title type='text'>How To Scroll a Form When VB Forms Are Limited to Screen Size (Q109741)</title><content type='html'>&lt;p&gt;    The information in this article applies to:     &lt;/p&gt;&lt;li&gt;  Microsoft Visual Basic Enterprise Edition, 16-bit, for Windows, version 4.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows, version 4.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0, 6.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Learning Edition for Windows, versions 5.0,  6.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Professional Edition for Windows, versions 3.0 , 5.0 , 6.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Professional Edition, 16-bit, for Windows, version 4.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Professional Edition, 32-bit, for Windows, version 4.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Standard Edition for Windows, version 3.0     &lt;/li&gt;&lt;li&gt;  Microsoft Visual Basic Standard Edition, 32-bit, for Windows, version 4.0    &lt;p&gt;        SUMMARY &lt;/p&gt;&lt;p&gt;        A Visual Basic form cannot be sized larger than the screen. This article explains        how to scroll the contents of a form to enlarge the usable area of a form.          The sample program below works by scrolling a picture box control which is larger        than the form and contains attached controls. When the picture box scrolls,        all the attached controls scroll together.   &lt;/p&gt;&lt;p&gt;        MORE INFORMATION   &lt;/p&gt;&lt;p&gt;        Step-by-Step Example          NOTE:               This technique will not work on any version of Windows NT if               any of the Visual Basic lightweight controls (for example, Label               Control) are children of the scrolling control and positioned               outside of the screen's viewing area. This is due to the way that               Windows NT handles drawing to nonlogical areas of the screen. To               work around the problem, do not use lightweight controls as children               of the scrolling control.              &lt;/p&gt;&lt;ol&gt;Start a new project in Visual Basic. Form1 is created by default.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add a horizontal scroll bar control and a vertical scroll bar                control to Form1. (The size doesn't matter because the program                automatically sizes the scroll bars in the Form Resize event                code.                 &lt;/li&gt;&lt;li&gt;Add a picture box control to Form1. Draw a text box control inside                the upper-left corner of the picture box such that when the                picture box moves, the text box moves with it.                 &lt;/li&gt;&lt;li&gt;Select the Text1 box and press the F4 key to display the                Properties window. Set the Text1 Index property to 0, which is                required at design time to make an array of text controls.                 You can also enhance this sample program by placing more controls                into the picture box. When the picture box scrolls, all the                controls scroll.                  &lt;/li&gt;&lt;li&gt;Add the following code to the Form Load event:  &lt;pre&gt;      Sub Form_Load()          ' Make the picture box bigger than the form:          Picture1.Move 0, 0, 1.4 * ScaleWidth, 1.2 * ScaleHeight          ' Position and size the first TextBox:          Text1(0).Move 0, 0, Picture1.Width / 2, Picture1.Height / 20          ' Place some sample controls in the picture box:          Dim i As Integer          For i = 1 To 20             Load Text1(i)             Text1(i).Visible = True             Text1(i).Left = i * Picture1.Height / 20             Text1(i).Top = Text1(i).Left          Next       End Sub &lt;/pre&gt;                                &lt;/li&gt;&lt;li&gt;Add the following code to the Form Resize event:  &lt;pre&gt;      Sub Form_Resize ()          ' Position the scroll bars:          hscroll1.Left = 0          vscroll1.Top = 0          If Picture1.Width &gt; scalewidth Then             hscroll1.Top = ScaleHeight - hscroll1.Height          Else             hscroll1.Top = ScaleHeight          End If          If Picture1.Height &gt; hscroll1.Top Then             vscroll1.Left = scalewidth - vscroll1.Width             If Picture1.Width &gt; vscroll1.Left Then                hscroll1.Top = ScaleHeight - hscroll1.Height             End If          Else             vscroll1.Left = scalewidth          End If          hscroll1.Width = scalewidth          If hscroll1.Top &gt; 0 then vscroll1.Height=hscroll1.Top          ' Set the scroll bar ranges          hscroll1.Max = Picture1.Width - vscroll1.Left          vscroll1.Max = Picture1.Height - hscroll1.Top          hscroll1.SmallChange = Abs(hscroll1.Max \ 16) + 1          hscroll1.LargeChange = Abs(hscroll1.Max \ 4) + 1          vscroll1.SmallChange = Abs(vscroll1.Max \ 16) + 1          vscroll1.LargeChange = Abs(vscroll1.Max \ 4) + 1          hscroll1.ZOrder 0          vscroll1.ZOrder 0       End Sub &lt;/pre&gt;               &lt;/li&gt;&lt;li&gt;Add the following code to the HScroll1 Change event:   &lt;pre&gt;      Sub HScroll1_Change ()          Picture1.Left = -HScroll1.Value       End Sub &lt;/pre&gt;               &lt;/li&gt;&lt;li&gt;Add the following code to the VScroll1 Change event:   &lt;pre&gt;      Sub VScroll1_Change ()          Picture1.Top = -VScroll1.Value       End Sub &lt;/pre&gt;               &lt;/li&gt;&lt;li&gt;Start the program (or press the F5 key). Click the scroll bars to                scroll the form. Close the form to end the program. &lt;/li&gt;&lt;/ol&gt; &lt;hr /&gt; Sumber: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q109741"&gt; http://support.microsoft.com/default.aspx?scid=kb;en-us;Q109741&lt;/a&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-4037567506727298910?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/4037567506727298910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=4037567506727298910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4037567506727298910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/4037567506727298910'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/how-to-scroll-form-when-vb-forms-are.html' title='How To Scroll a Form When VB Forms Are Limited to Screen Size (Q109741)'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-6300703067850849882</id><published>2007-07-20T22:51:00.000-07:00</published><updated>2007-07-20T22:52:56.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='5. Open Secure DB'/><title type='text'>How To Open a Secured Access Database in ADO Through OLE DB (Q191754)</title><content type='html'>The information in this article applies to:  'Microsoft Visual Basic Professional Edition for Windows, versions 5.0 , 6.0  'Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0 , 6.0  'ActiveX Data Objects (ADO), versions 2.0 , 2.1 SP2 , 2.5  'Microsoft OLE DB Provider for Jet, version 1.0   'SUMMARY  'The native OLE DB provider for Microsoft Access databases that ships  'with Microsoft Data Access Components (MDAC) version 2.0 or later  'enables you to open a secured Microsoft Access database.   'MORE INFORMATION 'If you are opening a password-protected database, you can use any  'one of the following three syntaxes:   &lt;pre&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;&lt;br /&gt;  MyConn.Provider = "Microsoft.Jet.OLEDB.4.0"&lt;br /&gt;  MyConn.Properties("Data Source") = "C:\...\JetPassword.MDB"&lt;br /&gt;  MyConn.Properties("Jet OLEDB:Database Password") = "MyPwd"&lt;br /&gt;  MyConn.Open&lt;br /&gt;&lt;br /&gt;             '--- or ---&lt;br /&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;  Dim strConn As String&lt;br /&gt;&lt;br /&gt;  strConn = "Data Source=C:\...\JetPassword.MDB;" &amp; _&lt;br /&gt;            "Jet OLEDB:Database Password=MyPwd"&lt;br /&gt;  MyConn.Provider = "Microsoft.Jet.OLEDB.4.0"&lt;br /&gt;  MyConn.Open strConn&lt;br /&gt;&lt;br /&gt;             '--- or ---&lt;br /&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;  Dim strConn As String&lt;br /&gt;&lt;br /&gt;  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _&lt;br /&gt;            "Data Source=C:\...\JetPassword.MDB;" &amp; _&lt;br /&gt;            "Jet OLEDB:Database Password=MyPwd"&lt;br /&gt;  MyConn.Open strConn&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'If you are opening a database that uses Jet security, you can use&lt;br /&gt;'any one of the following three syntaxes:&lt;br /&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;&lt;br /&gt;  MyConn.Provider = "Microsoft.Jet.OLEDB.4.0"&lt;br /&gt;  MyConn.Properties("Data Source") = "C:\...\JetSecurity.MDB"&lt;br /&gt;  MyConn.Properties("Jet OLEDB:System database") = "C:\...\System.MDW"&lt;br /&gt;  MyConn.Open UserID:="Admin", Password:="MyPwd"&lt;br /&gt;&lt;br /&gt;             '--- or ---&lt;br /&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;  Dim strConn As String&lt;br /&gt;&lt;br /&gt;  strConn = "Data Source=C:\...\JetSecurity.MDB;" &amp; _&lt;br /&gt;            "Jet OLEDB:System database=C:\...\System.MDW"&lt;br /&gt;  MyConn.Provider = "Microsoft.Jet.OLEDB.4.0"&lt;br /&gt;  MyConn.Open ConnectionString:=strConn, _&lt;br /&gt;              UserID:="Admin", Password:="MyPwd"&lt;br /&gt;&lt;br /&gt;             '--- or ---&lt;br /&gt;&lt;br /&gt;  Dim MyConn As New ADODB.Connection&lt;br /&gt;  Dim strConn As String&lt;br /&gt;&lt;br /&gt;  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"&lt;br /&gt;            "Data Source=C:\...\JetSecurity.MDB;" &amp; _&lt;br /&gt;            "Jet OLEDB:System database=C:\...\System.MDW"&lt;br /&gt;  MyConn.Open ConnectionString:=strConn, _&lt;br /&gt;              UserID:="Admin", Password:="MyPwd"&lt;br /&gt;&lt;br /&gt;'NOTE : Jet 3.51 OLEDB provider is designed to open Access 97&lt;br /&gt;'databases only. Jet 4.0 OLEDB provider is designed to open Access&lt;br /&gt;'2000 or Access 97 databases.&lt;br /&gt;&lt;br /&gt;'If you must use the Jet 3.51 Provider in the above examples, change&lt;br /&gt;'the provider name to "Microsoft.Jet.OLEDB.3.51."&lt;br /&gt;&lt;br /&gt;'Starting with Microsoft Data Access Components (MDAC) version 2.6,&lt;br /&gt;'MDAC no longer contains the following Jet components:&lt;br /&gt;&lt;br /&gt;           '-  Microsoft Jet&lt;br /&gt;           '-  Microsoft Jet OLE DB Provider&lt;br /&gt;           '-  ODBC Desktop Database Drivers&lt;br /&gt;          &lt;br /&gt;'For additional information, click the article number below to view&lt;br /&gt;'the article in the Microsoft Knowledge Base:&lt;br /&gt;'Q239114 ACC2000: Updated Version of Microsoft Jet 4.0 Available in&lt;br /&gt;'Download Center&lt;br /&gt;'The "MDAC 2.5 Stack and Windows File Protection" white paper&lt;br /&gt;'contains a full list of the components that are shipped with MDAC&lt;br /&gt;'2.5, along with a discussion of Windows File Protection. Refer to&lt;br /&gt;'this white paper for more information about the Jet dynamic-link&lt;br /&gt;'libraries (DLLs) that are included in MDAC 2.5, which are no longer&lt;br /&gt;'a part of MDAC 2.6.&lt;br /&gt;&lt;br /&gt;'For more information about MDAC 2.5 and Windows File Protection, see&lt;br /&gt;'the following Microsoft Web site:&lt;br /&gt;'http://www.microsoft.com/data/mdacwfp.htm&lt;br /&gt;&lt;/pre&gt; &lt;hr /&gt; Sumber: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;q191754"&gt; http://support.microsoft.com/default.aspx?scid=kb;EN-US;q191754&lt;/a&gt; &lt;!-- following code added by server. PLEASE REMOVE --&gt;&lt;script language="JavaScript" src="http://us.geocities.com/js_source/div03.js"&gt;&lt;/script&gt;  &lt;!-- preceding code added by server. PLEASE REMOVE --&gt;&lt;!-- text below generated by server. PLEASE REMOVE --&gt;&lt;script language="JavaScript" src="http://us.i1.yimg.com/us.yimg.com/i/mc/mc.js"&gt;&lt;/script&gt;&lt;script language="JavaScript" src="http://geocities.com/js_source/geov2.js"&gt;&lt;/script&gt;&lt;script language="javascript"&gt;geovisit();&lt;/script&gt;&lt;img src="http://visit.geocities.com/visit.gif?&amp;r=http%3A//www.geocities.com/masino_sinaga/daftarisi.html&amp;amp;b=Netscape%205.0%20%28Windows%3B%20en-US%29&amp;s=1024x768&amp;amp;o=Win32&amp;c=32&amp;amp;j=true&amp;v=1.2" border="0" /&gt; &lt;noscript&gt;&lt;img src="http://visit.geocities.yahoo.com/visit.gif?us1184996778" alt="setstats" border="0" width="1" height="1" /&gt;&lt;/noscript&gt; &lt;img src="http://geo.yahoo.com/serv?s=76001067&amp;amp;t=1184996778&amp;amp;f=us-w78" alt="1" height="1" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-6300703067850849882?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/6300703067850849882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=6300703067850849882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6300703067850849882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/6300703067850849882'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/how-to-open-secured-access-database-in_20.html' title='How To Open a Secured Access Database in ADO Through OLE DB (Q191754)'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-8557660596718981513</id><published>2007-07-20T22:29:00.001-07:00</published><updated>2007-07-22T07:17:26.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='4.  Working with Crystal Reports: Use CR with MsAccess and Oracle'/><title type='text'>Working with Crystal Reports: Use CR with MsAccess and Oracle</title><content type='html'>&lt;p&gt; Working with Crystal Reports: Use CR with MsAccess and Oracle  Campbell, Stanley (Stan); Stanley_Campbell@dscc.dla.mil WEB: http://www.dscc.dla.mil  In This Code I have data Stored in a Access.MDB and an Oracle Database.  I put these in a Module:  &lt;/p&gt;&lt;pre&gt;Public MyDataSource As String&lt;br /&gt;Public MyUserID As String&lt;br /&gt;Public MyPassword As String&lt;br /&gt;Public strConnectInformation As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Getting Ready to Use the Report.&lt;br /&gt;&lt;br /&gt; Dim DateParam As String&lt;br /&gt;&lt;br /&gt;  'Reset Crystal Report Selection Criteria.&lt;br /&gt; CrystalReport1.SelectionFormula = ""&lt;br /&gt; CrystalReport1.ParameterFields(0) = ""&lt;br /&gt;&lt;br /&gt; 'Put Date in Proper Format for Crystal Reports.&lt;br /&gt; DateParam = Format(DateSelected, "yyyy,mm,dd")&lt;br /&gt;&lt;br /&gt; 'Start Crystal Reports Code.&lt;br /&gt; Call ConnectToCR&lt;br /&gt; CrystalReport1.ParameterFields(0) = "DateToReport; DATE(" &amp; DateParam &amp;amp;amp; ") ;TRUE"&lt;br /&gt; CrystalReport1.ReportFileName = "Q:\Daily.rpt"&lt;br /&gt; CrystalReport1.Destination = 1   'Send to Printer&lt;br /&gt; CrystalReport1.WindowTitle = "Daily Report"&lt;br /&gt; CrystalReport1.Action = 1  ' Run Report&lt;br /&gt;&lt;br /&gt;I connect to an Oracle Database.&lt;br /&gt;&lt;br /&gt;Private Sub ConnectToCR()&lt;br /&gt; MyDataSource = "Name of Oracle Table"&lt;br /&gt; MyUserID = "USER"&lt;br /&gt; MyPassword = "ORACLE"&lt;br /&gt; 'DataSetQualifier = "Name of Oracle Table" &amp; Chr$(0)&lt;br /&gt;&lt;br /&gt; strConnectInformation = "DSN = " &amp;amp; MyDataSource &amp; ";"&lt;br /&gt; strConnectInformation = strConnectInformation &amp; "UID = " &amp;amp; MyUserID &amp;    ";"&lt;br /&gt; strConnectInformation = strConnectInformation &amp; "PWD = " &amp;amp;    MyPassword &amp; ";"&lt;br /&gt; strConnectInformation = strConnectInformation &amp; "DSQ = " '&amp;amp; DataSetQualifier&lt;br /&gt; CrystalReport1.Connect = strConnectInformation&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt; &lt;hr /&gt; &lt;!-- text below generated by server. PLEASE REMOVE --&gt;&lt;script language="JavaScript" src="http://us.i1.yimg.com/us.yimg.com/i/mc/mc.js"&gt;&lt;/script&gt;&lt;script language="JavaScript" src="http://geocities.com/js_source/geov2.js"&gt;&lt;/script&gt;&lt;script language="javascript"&gt;geovisit();&lt;/script&gt;&lt;img src="http://visit.geocities.com/visit.gif?&amp;r=http%3A//www.geocities.com/masino_sinaga/daftarisi.html&amp;amp;b=Netscape%205.0%20%28Windows%3B%20en-US%29&amp;s=1024x768&amp;amp;amp;o=Win32&amp;c=32&amp;amp;j=true&amp;v=1.2" border="0" /&gt; &lt;noscript&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6007986338235484906-8557660596718981513?l=cakrido.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cakrido.blogspot.com/feeds/8557660596718981513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6007986338235484906&amp;postID=8557660596718981513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8557660596718981513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6007986338235484906/posts/default/8557660596718981513'/><link rel='alternate' type='text/html' href='http://cakrido.blogspot.com/2007/07/working-with-crystal-reports-use-cr.html' title='Working with Crystal Reports: Use CR with MsAccess and Oracle'/><author><name>Cak Rido</name><uri>http://www.blogger.com/profile/02819852666318200559</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6007986338235484906.post-7562321167686979710</id><published>2007-07-20T22:25:00.000-07:00</published><updated>2007-07-22T07:19:05.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3. Crystal Report And Visual Basic'/><title type='text'>Crystal Reports and Visual Basic</title><content type='html'>&lt;!-- following code added by server. PLEASE REMOVE --&gt;&lt;script language="JavaScript" src="http://us.geocities.com/js_source/div03.js"&gt;&lt;/script&gt;  &lt;!-- preceding code added by server. PLEASE REMOVE --&gt; &lt;table style="width: 674px; height: 15px;" border="0" cellspacing="2"&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td bg="" style="color: rgb(185, 218, 245);" height="30"&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td bgcolor="#6996e0" height="3"&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Reports can be made quickly and easy for use with VB with Crystal Reports. But there are some problems you can encounter. For example if you use ODBC the name of the used DSN connection is saved within the report. Also when your users want to change the layout of the report they need a direct connection to the database. You can use views or a special useraccount to protect the structure of your database.&lt;/p&gt; &lt;p&gt;An other way is to make use of DataDefinition files. They are just ASCII files which contains the fields and their properties that are to be used in the report. Using such a file means that there is no direct connection with the database. In Visual Basic the query is executed and the result - together with de DataDefinition file - will produce the report.&lt;/p&gt; &lt;p&gt;To make it work you have to take three steps:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;making the DataDefinition file&lt;/li&gt;&lt;li&gt;making the report&lt;/li&gt;&lt;li&gt;merge them in VB and show the result&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;The Biblio.mdb will be used in this example.&lt;/p&gt; &lt;p&gt;Step 1: &lt;i&gt;making the DataDefinition file&lt;/i&gt;&lt;/p&gt; &lt;p&gt;The report needs to be a view to be of all present authors with their titles and year of publication. The fields Author.Author, Titles.Tiltle and Titles.Year Published must be shown on the report. Due the keys the table Title Authors is used. The SQL to get the result is:&lt;/p&gt; &lt;p&gt;SELECT Authors.Author, Titles.Title, Titles.[Year Published]&lt;/p&gt; &lt;p&gt;FROM Titles INNER JOIN (Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID) ON Titles.ISBN = [Title Author].ISBN;&lt;/p&gt; &lt;p&gt;Making the DataDefinition file can be done in Crystal Reports but also in any ordinary editor like notepad. The format is fixed:&lt;/p&gt; &lt;p&gt;Fieldname&lt;/p&gt; &lt;p&gt;Fieldtype&lt;/p&gt; &lt;p&gt;Fieldsize&lt;/p&gt; &lt;p&gt;Description&lt;/p&gt; &lt;p&gt;All on one line separated by a TAB.&lt;/p&gt; &lt;p&gt;Author String 255 name&lt;/p&gt; &lt;p&gt;Title String 255 Title&lt;/p&gt; &lt;p&gt;YearPublished String 4 year&lt;/p&gt; &lt;p&gt;Don't forget to save the file with the name: AuthorTitles.ttx Crystal Reports needs that to be able to define a report on this file.&lt;/p&gt; &lt;p&gt;Step 2: &lt;i&gt;making the report&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Start Crystal Report; choose for &lt;b&gt;New&lt;/b&gt;, &lt;b&gt;Standard&lt;/b&gt; report. On the tab &lt;b&gt;Data&lt;/b&gt; select &lt;b&gt;Active&lt;/b&gt; &lt;b&gt;Data&lt;/b&gt;. On the next screen the choice is &lt;b&gt;Data&lt;/b&gt; &lt;b&gt;definition&lt;/b&gt;. Select with &lt;b&gt;Browse&lt;/b&gt; the file you have made in step 1. Click on &lt;b&gt;Finish&lt;/b&gt;. On the tab &lt;b&gt;Fields&lt;/b&gt; select &lt;b&gt;Add&lt;/b&gt; &lt;b&gt;all&lt;/b&gt; and then &lt;b&gt;Preview&lt;/b&gt; &lt;b&gt;Report&lt;/b&gt;.&lt;/p&gt; &lt;p&gt;The report will be shown. As values the given descriptions will be shown. With &lt;b&gt;Design&lt;/b&gt; you can change what you want on the report. Just save the report (standard extension .&lt;b&gt;rpt&lt;/b&gt;). For quick merging in VB use the same name for the report as for the DataDefinition file: AuthorTitles.rpt&lt;/p&gt; &lt;p&gt;Step 3: &lt;i&gt;merge them in VB and show the result&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Open a new project in VB (name = prjDDCR). Place on the default form (name = frmDDCR) a commandbutton (name = cmdShowReport; caption = Show report). Don't forget to add the reference for &lt;b&gt;DAO&lt;/b&gt; (Microsoft DAO Object Library ) and for &lt;b&gt;Crystal&lt;/b&gt; &lt;b&gt;Reports&lt;/b&gt; (Crystal Reports Engine Object Library).&lt;/p&gt; &lt;p&gt;Add the next code to the general section of the form. (It's just an example so all values are hard-coded.)&lt;/p&gt; &lt;p&gt;Option Explicit&lt;/p&gt; &lt;p&gt;Private db As DAO.Database&lt;/p&gt; &lt;p&gt;Private CDOSet As Object&lt;/p&gt; &lt;p&gt;Private RepApp As Object&lt;/p&gt; &lt;p&gt;Private CrystRep As CRPEAuto.Report&lt;/p&gt; &lt;p&gt;Private RepDb As CRPEAuto.Database&lt;/p&gt; &lt;p&gt;Private RepTables As CRPEAuto.DatabaseTables&lt;/p&gt; &lt;p&gt;Private RepTable As CRPEAuto.DatabaseTable&lt;/p&gt; &lt;p&gt;Private LabelRows() As Variant&lt;/p&gt; &lt;p&gt;On the Form_Load event add the next code. Don't forget the code in the Form_Unload event! Change the path to the right location of your local Biblio.mdb&lt;/p&gt; &lt;p&gt;Private Sub Form_Load()&lt;/p&gt; &lt;p&gt;Set db = OpenDatabase(App.Path &amp; "\biblio.mdb")&lt;/p&gt; &lt;p&gt;End Sub&lt;/p&gt; &lt;p&gt;Private Sub Form_Unload(Cancel As Integer)&lt;/p&gt; &lt;p&gt;db.Close&lt;/p&gt; &lt;p&gt;End&lt;/p&gt; &lt;p&gt;End Sub&lt;/p&gt; &lt;p&gt;Under the cmdShowReport_Click event is the code which merge the result of the executed SQL with the DataDefinition file and the actual report.&lt;/p&gt; &lt;p&gt;Private Sub cmdShowReport_Click()&lt;/p&gt; &lt;p&gt;Dim strSQL As String&lt;/p&gt; &lt;p&gt;Dim rs As DAO.Recordset&lt;/p&gt; &lt;p&gt;Dim intFN As Integer&lt;/p&gt; &lt;p&gt;Dim strFN As String&lt;/p&gt; &lt;p&gt;Dim strLine As String&lt;/p&gt; &lt;p&gt;Dim intX As Integer&lt;/p&gt; &lt;p&gt;Dim intC As Integer&lt;/p&gt; &lt;p&gt;Dim intLabelCount As Integer&lt;/p&gt; &lt;p&gt;'&lt;/p&gt; &lt;p&gt;Set RepApp = CreateObject("Crystal.CRPE.Application")&lt;/p&gt; &lt;p&gt;Set CrystRep = RepApp.OpenReport(App.Path &amp;amp; "\AuthorTitles.rpt")&lt;/p&gt; &lt;p&gt;Set CDOSet = CreateObject("CrystalDataObject.CrystalComObject")&lt;/p&gt; &lt;p&gt;'&lt;/p&gt; &lt;p&gt;intLabelCount = 0&lt;/p&gt; &lt;p&gt;intFN = FreeFile&lt;/p&gt; &lt;p&gt;strFN = App.Path &amp; "\AuthorTitles.ttx"&lt;/p&gt; &lt;p&gt;Open strFN For Input As intFN&lt;/p&gt; &lt;p&gt;Do While Not EOF(intFN)&lt;/p&gt; &lt;p&gt;Line Input #intFN, strLine&lt;/p&gt; &lt;p&gt;If Len(strLine) &lt;&gt; 0 And Right(strLine, 2) &lt;&gt; "%%" Then&lt;/p&gt; &lt;p&gt;CDOSet.AddField Split(strLine, vbTab)(0), vbString&lt;/p&gt; &lt;p&gt;intLabelCount = intLabelC
