jwcolby
jwcolby at colbyconsulting.com
Mon Feb 9 11:57:51 CST 2009
>Outlook is NOT a good object to practice on! That is true! John W. Colby www.ColbyConsulting.com Charlotte Foust wrote: > I'd say you haven't given classes a fair try, Max. Outlook is NOT a > good object to practice on! LOL > > Charlotte Foust > > > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo > Sent: Monday, February 09, 2009 9:27 AM > To: 'Access Developers discussion and problem solving' > Subject: [AccessD] Classes and WithEvengts was RE: Tags are so 1990s - > wasRe: Combobox.oldvalue displaytext? > > Oh, no upping then. Must be thinking of swans (Bet you don't get that > connection Charlotte - to do with the British Monarch owning all swans). > > The problem I have with classes is that (going on the ones I have > created, say for example an Outlook Class to expose Outlook Properties) > is that to use it I have to declare a container for the pointer, then > I have to set the container to point to the class and then I can use the > class properties and try to remember what done what. So, I always found > it easier to just go directly to the properties themselves. > > Now then John - whoa back a bit - I can almost see you coming down the > connection cable when you read that. I do appreciate that classes have > other uses, especially when a UDF is created and also for > security/enforcement of business rules. One rule changed in one place. > And so on... > > So, I will follow your class with interest. > > Thanks > Max > > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte > Foust > Sent: 09 February 2009 16:02 > To: Access Developers discussion and problem solving > Subject: Re: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue > displaytext? > > It's Sinking and RAISING, not uping. LOL Using classes isn't the only > way to do things, it's just the efficient way. Instead of writing the > same code over and over, you embed that in a class and use the public > interface of the class to handle its operations. If you bind a, oh, > let's say ... A combobox ... To a class then the class can specify the > combobox's behavior, appearance, and the way it handles itself. Want an > oldvalue for a combobox? Put some code and a public property into the > class and voila, you have a combobox with an oldvalue. More > importantly, you have that whenever you bind a combobox to that class. > > I know a lot of people who never say the point in classes, but it's a > bit like religion. Once you convert, you want to persuade everyone else > how wonderful your approach is! > > Charlotte Foust > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo > Sent: Monday, February 09, 2009 7:50 AM > To: Access Developers discussion and problem solving > Subject: Re: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue > displaytext? > > Ha! It was in the 1990's I wrote it <g>. I dont use tags now, but they > might be useful for some purposes - I can think of one but won't go into > that now. > > The aim was to demonstrate easily, the use of control looping with the > various control types and not the storage of variable values. > > I also use classes but I am not a devotee like you John. Sinking and > Uping (or whatever the reverse of sinking is) or WithEvents is not > something I have ever got into and have never ever had a need for this - > I say that because I have not come across anything that I cannot do > without using it/them. > > I would be interest to follow a thread though. > > Thanks > Max > > > On Mon, Feb 9, 2009 at 3:39 PM, <krosenstiel at comcast.net> wrote: > >> I'd be interested in this. Doubt I'll understand it, but I'd be > interested. >> Karen Rosenstiel >> Seattle WA USA >> >> ----- Original Message ----- >> From: "jwcolby" <jwcolby at colbyconsulting.com> >> To: "Access Developers discussion and problem solving" < >> accessd at databaseadvisors.com> >> Sent: Monday, February 9, 2009 6:12:52 AM GMT -08:00 US/Canada Pacific >> Subject: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue >> display text? >> >> Guys, >> >> Using the tag value to store stuff is generally not a good solution, >> and never was (well, perhaps before classes). The disadvantages of the > >> tag speak for itself, ONE location to store how much stuff? Packing, >> unpacking variables that you want to store there, overwriting data >> from the previous programmer, and the list goes on. >> >> Look, MS very kindly gave us Classes and WithEvents. >> >> Classes and Withevents is EASY. Classes and Withevents prepares you >> for programming in other platforms such as dotnet. Classes and >> withevents provide you with extremely powerful methods of handling >> repetitive programing. Classes provide you with encapsulation of code >> and data. If you are a programmer, all of these things should matter >> to you. >> >> If you can program Code Behind Form, if you can do things like the >> example code that Max so kindly provided, then classes are a tiny step > >> that will increase your skill and ability an order of magnitude. >> AccessD has many developers using Classes and Withevents. >> Perhaps they can speak up >> with their opinions on the subject. >> >> If you want to learn how to do what Stuart was asking about using a >> single pair of classes (a form class and a combo class), speak up and >> I will start a thread on the subject. I will teach you how to do this >> stuff, step by step, and in just a few emails you too can be using >> classes and withevents. >> >> John W. Colby >> www.ColbyConsulting.com >> >> >> Max Wanadoo wrote: >>> Hi Stuart, >>> Here are two routines which you may care to look at. The first is to >> store >>> the value into the .TAG property of the control. >>> The second just parses the controls. >>> Might be of interes, might not, don't know, submitted as is - chuck >>> it if >> no >>> good. >>> Regards >>> Max >>> >>> Public Function pubFunUpdateTagData(frm As Form) On Error Resume >>> Next ' this puts the data into the tag before any changes are made >>> >>> Dim ctl As Control, z As Variant >>> For Each ctl In frm.Controls >>> With ctl >>> Select Case .ControlType >>> Case acTextBox ' this can hold numbers, strings and dates etc Select > >>> Case varType(frm(ctl.Name)) Case 2, 3, 4, 5, 6 ' >>> int,long,single,double,currency frm(ctl.Name).Tag = >>> Val(frm(ctl.Name)) Case 7 frm(ctl.Name).Tag = CStr(frm(ctl.Name)) >>> Case 8 frm(ctl.Name).Tag = frm(ctl.Name) End Select Case acCheckBox >>> frm(ctl.Name).Tag = frm(ctl.Name) Case acComboBox Select Case >>> frm(ctl.Name).RowSourceType Case "Table/Query" >>> frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(1)) 'MsgBox >>> frm(ctl.Name).Tag Case "Value List" >>> frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(0, 0)) Case Else End >>> Select Case acListBox frm(ctl.Name).Tag = >>> Nz(frm(ctl.Name).Column(1), "") Case acOptionGroup frm(ctl.Name).Tag > >>> = Nz(frm(ctl.Name), 0) End Select End With Next ctl >>> >>> exithere: >>> Exit Function >>> errhandler: >>> MsgBox "Error in MCM_PeopleChanges.pubFunUpdateTagData: " & >>> Err.Number & vbCrLf & Err.Description Resume exithere End Function >>> >>> Private Function RebuildPersonsFlagsFormsControls(frm As Form, >>> lngPID As >>> Long) >>> On Error Resume Next >>> Dim ctl As Control, strDesc As String Dim varSource As Variant, >>> varvalue As Variant, varType As Variant, >> varName >>> As Variant >>> Dim varVisible As Variant >>> strDesc = frm.Name >>> With frm >>> For Each ctl In frm.Controls >>> varName = ctl.Name >>> varType = ctl.ControlType >>> Select Case varType >>> Case acTextBox >>> varSource = ctl.ControlSource >>> varvalue = ctl.OldValue >>> varVisible = ctl.Visible >>> If Not IsNull(varSource) And Len(varSource) > 0 And _ Not >>> IsNull(varvalue) And Len(varvalue) > 0 And varVisible = True Then >>> Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, >>> conFlagsForms) End If Case acComboBox varSource = ctl.ControlSource >>> varvalue = ctl.OldValue If Not IsNull(varSource) And Len(varSource) >>>> 0 Then Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, > >>> lngPID, conFlagsForms) End If Case acCheckBox varSource = >>> ctl.ControlSource varvalue = ctl.OldValue If varvalue = True Then >>> Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, >>> conFlagsForms) End If Case acOptionGroup varSource = >>> ctl.ControlSource varvalue = ctl.OldValue Call mcmSetFlag(strDesc & >>> ":" & varSource & ":" & varvalue, lngPID, >>> conFlagsForms) >>> Case acSubform >>> Case acLabel >>> Case acBoundObjectFrame >>> Case acPage >>> Case acPageBreak >>> Case acCommandButton >>> Case acCustomControl >>> Case acRectangle >>> Case acImage >>> Case acTabCtl >>> Case acLine >>> Case acToggleButton >>> Case acObjectFrame >>> Case acListBox >>> Case acOptionButton >>> Case Else >>> MsgBox "NewType found in RebuildPersonsFalgsSystemControls:", >>> varType, varName >>> End Select >>> Next ctl >>> End With >>> End Function >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com >