William Hindman
wdhindman at dejpolsystems.com
Sun Feb 22 07:34:08 CST 2009
...sigh ...shakes head ...doesn't work ...tries banging head against wall ...for some reason that only makes it worse :( ..."Simple, sweet, and to the point" it ain't, eh ...and telling Drew he's brilliant is like throwing a cat into a bag full of catnip :( ...for this specific case ...translations ...using tags makes a lot more sense ...imnsho of course. ...now WHERE is that damn Tylenol? William -------------------------------------------------- From: "jwcolby" <jwcolby at colbyconsulting.com> Sent: Sunday, February 22, 2009 8:09 AM To: "Access Developers discussion and problem solving" <accessd at databaseadvisors.com> Subject: Re: [AccessD] Find First in an Array? - The Solution > Actually I think this solution adds too much burden on the developer. The > thing is it is the > computer doing the work and as Rocky said, who cares if the computer is > unhappy. > > Drew's solution was brilliant, rather than stepping through all the > controls, step through all the > RECORDS, then use the control name in the record to index into the > controls collection. > > Simple, sweet, and to the point. > > As you grab the data, store to a collection and you are done. I did some > testing however and > storing to a collection specific to the form is required to keep the > speeds up. It is at this point > that the class begins to make sense again. One class for the form, one as > a supervisor for doing > this stuff. The class form holds a collection for the strings for the > specific form, plus all the > code for loading the data from the recordset. The supervisor has a > collection to hold the class > instances for each form plus the code to decide which form is being > processed. > > Simple, sweet, and to the point. > > John W. Colby > www.ColbyConsulting.com > > > Stuart McLachlan wrote: >> Here's my simple procedural take on the problem. >> I started thinking about ways to avoid stepping through the whole >> controls collection for the >> form and to optimise looping through the ones we are interested in. >> >> This method opens a form containing over 200 labels and buttons with no >> discernable delay. >> >> All that is required is that you: >> a. Maintain a standard naming convention for Labels and Buttons: >> Label1, Label2 etc and Button1001,Button1002 etc within the form >> >> b. Define a FormID constant in each form's module, >> c. Define constants in each form's module which record the number of >> labels and buttons >> d. Store your translation strings with two fields, FormNumber and >> ControlNumber >> >> >> FormNumber - Long >> ControlNumber - Long >> Language1 - String >> Language 2 - String >> Language 3 - String >> etc >> >> 1. When the user changes language, load the new one into a Translation >> collection. >> In a Module: >> >> Global gcolTranslation As New Collection >> >> Function GetLanguage(Language as long) >> Dim rs as DAO Recordset >> If gcolTranslation.Count > 0 Then >> For i = 1 To gcolTranslation.Count >> gcolTranslation.Remove 1 >> Next >> End If >> Set rs = currentdb.openrecordset("uSysTranslationTable") >> While not rs.eof >> gcolTranslation.Add rs(Language + 2), _ >> Format(rs(0),"00") & rs(1) >> rs.movenext >> wend >> rs.close >> set rs = nothing >> End Function >> >> 2. In each Form create 3 constants: >> Const FormID As String = "01" >> Const NoOfLabels As Long = 200 >> Const NoOfButtons as Long = 5 >> >> 3. Use the following on_open event for each form. >> >> Private Sub Form_Open(Cancel As Integer) >> Dim ctl As Control >> Dim x As Long >> Dim sX As String >> For x = 1 To NoOfLabels >> Me("Label" & x).Caption = gcolTranslation(FormID & x) >> Next >> For x = 1001 To 1000 + NoOfButtons >> Me("Button" & x).Caption = gcolTranslation(FormID & (x) >> Next >> End Sub >> > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com >