The 3D Heading Creation Wizard for Form and Report.
The contents of the 3D Text Wizard were originally published in a series of articles back in September 2006. I created this website to share some tips, many of which I had implemented in my projects while working in an Automotive Company in the Sultanate of Oman. These articles, featuring the QBColor version, aimed to provide insights and practical knowledge based on real-world experiences.
The 3D Text Wizard now offers a broader spectrum of colors in RGB format for users to choose from. To enhance customization, a ColorList table has been introduced, allowing users to add additional colors. This feature proves beneficial for creating three-dimensional text, such as Form headings or displaying data field values like employee names or product names, especially when viewing them from a distance.
Example-1: Employee Name.
Example-2:Order Details Form View-2
The 3D Text Wizard Image is given below:
The event procedures and functions within the 3D Text Wizard have been streamlined in adherence to the new Event Procedure Coding Rules established in the Standalone Class Module. This approach enhances code organization and readability while promoting efficient maintenance and development practices.
3D Text Creation Technique.
The 3D Text is crafted through layers of Label Controls or Text Boxes, each containing the same text. Alternatively, this effect can be manually achieved by strategically placing layers with an attractive color on top and additional layers with a darker forecolor behind, slightly shifted to one of the four corners—top-left, bottom-left, top-right, or bottom-right. This technique imparts a shadow effect, enhancing the visual appeal of the text.
Performing this task manually each time can be a time-consuming exercise. As you may have observed in earlier episodes, I created headings for my Forms using only two labels, achieving a 3D-like appearance effortlessly.
To the left of the Text Wizard user interface, you'll find a ListBox displaying a variety of colors. This ListBox is linked to a table named 'Colors,' providing the flexibility to add additional color codes as needed.
On the right side of the Colors List, there are two OptionGroup controls. The top one features two options. When the first radio button is selected, the color chosen from the ListBox will be displayed in the top rectangle control. This selected color will then be applied to the topmost label's caption or the font color of the TextBox used for the 3D Text.
If the second radio button is selected, the color chosen from the ListBox is applied to the border color of the first two Wizards, namely Border 2D and Border 3D, within the Options Group Control below. It's worth noting that other Text Style Wizard options exclusively utilize the ForeColor option.
The 3D Text Shadow Positions.
At the top right side, there is a ComboBox with four options (0-3) to specify the positions of the light and shadow for the 3D Text.
Shadow Positions:
0 - Left Top Corner.
1 - Left Bottom Corner.
2 - Right Top Corner
3 - Right Bottom Corner
The first text style, 2D, creates a white border around the text and doesn't require additional settings. For both 2D and 3D text styles, the wizard achieves the effect by creating five or seven labels with the same text and different ForeColor, positioning them underneath the top label and slightly adjusting their placement towards the shadow position. In the case of the 2D border design, the other labels are moved towards the four corners of the top label.
3D Text Control Types.
The ComboBox positioned below the Shadow Style ComboBox offers two options and utilizes two types of controls to generate the 3D Text.
1 - Label
2 - TextBox
The first option is good for creating Static Headings on Forms or Reports.
The second option is TextBox-based 3D Text. It is good for displaying data from Form or Report Field(s) by creating Expressions, like the Images given at the top of this Page.
After selecting the desired options, click on the 'Create 3D Text' Command Button to generate the 3D Text. The resulting 3D Text is displayed in the Detail Section of a new Form. Beneath the 3D Text, a label control provides instructions on how to modify the text, font, font size, and font styles, such as bold, italics, and underline, if necessary. Users can carefully select the top label or TextBox without shifting it from its original position to change the label caption or TextBox contents.
After making changes, select all the Labels/TextBoxes Controls together by clicking near the controls and dragging over all the labels. Copy and paste them to the desired location where you want them to appear.
To display the form field(s) data in the TextBox controls, write the expression, such as =[First Name] & " " & [Last Name], in the Control Source Property after selecting all the text boxes together for the 3D Text.
After generating a text style, you have the option to preserve it within the 3D Text Wizard. You can then import it into other projects, making it available for use with modifications.
With this streamlined event procedure coding in the standalone class module, only a single Wrapper class is needed for Command Buttons on the form.
There's only one ListBox control on the form, and its Click-Event can be captured in a subroutine within the intermediary Class Module.
Similarly, there are two Option Group Controls on the form—one with the Style of 3D Text options and the other managing Fore-Color and Back-Color parameter selection activities. The Back-Color option specifically applies to the first two text styles, for 2D and 3D Border Color Options. When either of these two options is selected, the Back-Color option will be in an enabled state; otherwise, it will be disabled.
Since both of these actions can be controlled from the TextStyle Selection Option Group Control, a separate wrapper class module is not required. In both the ListBox and Options Group Control, we declared the object Instances of the ListBox and Options Group Control in the Intermediary Class Module, qualified with the keyword WithEvents. The two ComboBoxes on the Form are used for setting the required 3D Text Shadow Options and the other ComboBox is for selecting the Label or Text Control option. There are no Event Procedures to run for these two Controls.
The Form Module VBA Code.
Both the ListBox and the Option Group Control's Click Events are enabled in the Class_Init() subroutine, and corresponding subroutines are written in this module. First, the Form Module Code is listed below:
Option Compare Database Option Explicit Private W As TWiz_Obj_Init Private Sub Form_Load() Set W = New TWiz_Obj_Init Set W.w_frm = Me End Sub Private Sub Form_Unload(Cancel As Integer) Set W = Nothing End Sub
The TWiz_Obj_Init class is declared in the global area of the module with the object name 'W.' In the Form_Load() event procedure, the object is instantiated, and the current form object (Me) is passed to the W.w_frm() Property Procedure. When the form is closed, the class object 'W' is released from memory.
The TWiz_Obj_Init Class Module Code is Listed Below.
Option Compare Database Option Explicit Private wcmd As TWiz_CmdButton Private WithEvents lst As Access.ListBox Private WithEvents opt As Access.OptionGroup Private wfrm As Access.Form Private Coll As New Collection Public Property Get w_frm() As Form Set w_frm = wfrm End Property Public Property Set w_frm(ByRef vfrm As Form) Set wfrm = vfrm DoCmd.Restore Call Class_Init End Property Private Sub Class_Init() Dim ctl As Control Const EP = "[Event Procedure]" Set opt = wfrm.TxtStyle '3D Text Styles opt.OnClick = EP Set lst = wfrm.ColorList 'List of Colors lst.OnClick = EP For Each ctl In wfrm.Controls Select Case TypeName(ctl) Case "CommandButton" Select Case ctl.Name Case "cmd3D", "cmdClose" Set wcmd = New TWiz_CmdButton Set wcmd.c_Frm = wfrm Set wcmd.c_cmd = ctl wcmd.c_cmd.OnClick = EP Coll.Add wcmd Set wcmd = Nothing End Select End Select Next End Sub Private Sub lst_Click() Dim cl As Long cl = lst.Value Select Case lst.Name Case "ColorList" If wfrm.FBack = 1 Then wfrm.Fore.BackColor = cl wfrm.CFore = cl Else wfrm.Back.BackColor = cl wfrm.CBack = cl End If End Select End Sub Private Sub opt_Click() Dim opval As Integer Select Case opt.Name Case "TxtStyle" opval = opt.Value With wfrm.cboStyle If opval > 1 Then .Enabled = True Else .Enabled = False End If End With With wfrm.Opt2 Select Case opval Case 1, 2 .Enabled = True Case Else .Enabled = False End Select End With End Select End Sub Private Sub Class_Terminate() Do While Coll.Count > 0 Coll.Remove 1 Loop End Sub
The following ListBox and OptionGroup Controls declarations are placed in the Global area of the Class Module.
Private WithEvents lst As Access.ListBox Private WithEvents opt As Access.OptionGroup
The following statements in the Class_Init() Subroutine assign the References from these Objects in the Form and enable their Click Events, by assigning the "[Event Procedure]" text in their Event Properties:
Set opt = wfrm.TxtStyle '3D Text Styles opt.OnClick = EP Set lst = wfrm.ColorList 'List of Colors lst.OnClick = EP
Both these objects Sub lst_Click() and Sub opt_Click() Event Subroutines are written below the Sub Class_Int() Procedure.
The Command Button Wrapper Class Module.
There is only one Wrapper Class for both the Command Buttons on the Form. All the Wizard Functions are called from the Command Button with the Caption 'Create 3D Text' Click Event Procedure, depending on the 3D Text Style Option selected.
The Command Button Wrapper Class Subroutine that Calls the Wizard Functions is listed below for reference.
Option Compare Database Option Explicit Private WithEvents cmd As Access.CommandButton Private cfrm As Access.Form Public Property Get c_Frm() As Form Set c_Frm = cfrm End Property Public Property Set c_Frm(ByRef vfrm As Form) Set cfrm = vfrm End Property Public Property Get c_cmd() As CommandButton Set c_cmd = cmd End Property Public Property Set c_cmd(ByRef vcmd As CommandButton) Set cmd = vcmd End Property Private Sub cmd_Click() Select Case cmd.Name Case "cmd3D" Call Create3D(cfrm) 'Call the 3D Text Wizard Case "cmdClose" If MsgBox("Close the 3DTextWizard? ", vbYesNo + vbQuestion, "cmdClose_Click()") = vbYes Then DoCmd.Close acForm, cfrm.Name End If End Select End Sub
The Cmd3D Click Event Subroutine invokes the Create3D(cfrm) Subroutine and passes the Form Object as a Parameter. This Subroutine in the Standard Module gathers the 3D Text Wizard option settings from the Form into related variables and then calls the wizard function based on the selected text style. Each Wizard function, such as Border2D, and others, calls three different programs to create the 3D Text.
For example, the Border2D Wizard calls the following three Functions to complete the full task of creating the 3D Text:
- FormTxtLabels() ' Creates a Form and the Label or Text Controls
Validate_Dup() ' Performs a Validation check.
MsgLabel() 'Creates a Label control with instructions to use the 3D Text.
Listing all the Wizard VBA codes here is not feasible due to its large volume. However, the 3DTextWizard Demo Database is attached with all the code. You can download it from the link provided at the end of this Page. All the Wizard VBA codes are available in the TxtWizard Standard Module.
Visit the following Links of Articles published earlier for more details on the Wizard Functions:
Demo Database Download Link.
Streamlining Form Module Code in Standalone Class Module.
- Reusing Form Module VBA Code for New Projects.
- Streamlining Form Module Code - Part Two.
- Streamlining Form Module Code - Part Three
- Streamlining Form Module Code - Part Four
- Streamlining Form Module Code - Part Five
- Streamlining Form Module Code - Part Six
- Streamlining Form Module Code - Part Seven
- Streamlining Form Module Code - Part Eight
- Streamlining Form Module Code - Part Nine
- Streamlining Form Module Code - Part Ten
- Streamlining Form Module Code - Part Elevan
- Streamlining Report Module Code in Class Module
- Streamlining Module Code Report Line Hiding-13.
- Streamlining Form Module Code Part-14.
- Streamlining Custom Made Form Wizard-15.
- Streamlining VBA Custom Made Report Wizard-16.
- Streamlining VBA External Files List in Hyperlinks-17
- Streamlining Events VBA 3D Text Wizard-18
- Streamlining Events VBA RGB Color Wizard-19
- Streamlining Events Numbers to Words-20
- Access Users Group(Europe) Presentation-21
- The Event Firing Mechanism of MS Access-22
- One TextBox and Three Wrapper Class Instances-23
- Streamlining Code Synchronized Floating Popup Form-24
- Streamlining Code Compacting/Repair Database-25
- Streamlining Code Remainder Popup Form-26
- Streamlining Code Editing Data in Zoom-in Control-27
- Streamlining Code Filter By Character and Sort-28
- Table Query Records in Collection Object-29
- Class for All Data Entry Editing Forms-30
- Wrapper Class Module Creation Wizard-31
- wrapper-class-template-wizard-v2
No comments:
Post a Comment
Comments subject to moderation before publishing.