instead of putting them in a module create the control. in the project itself. this will allow you to add them on the fly and statically. utilizing the same code with all.
Not sure if it will work for you. You could try it though



Thank You
Scott Wagner


On Jun 21, 2006, at 5:09 AM, Emile Schwarz wrote:

Hi,

REALbasic 2006r2 Commercial Pro for Macintosh
REALbasic 2006r2 Commercial Std for Windows
REALbasic 2006r2 Commercial Std for Linux
Mac OS X 10.4.6
Windows XP
Suse 10.1


Isn't my title funny ?
[a bit dark, but funny!]

OK, here's the challenge (question):

I want to use some controls that are on one window (Using Controls) from a module (from a distant object).

The target window have 23 controls:
11 EditFields, 1 ListBox, 10 StaticText and one PushButton.

Since I have to use at two different places (or more ?) the same code to do the same job, it is better to remove that code from the Window's DropObject Event Handler and put it in a Module.

The original code to clears the Control (that holds data):

  Dim w As Window1

  // Get a reference to the target window
  w = New Window1

  // Delete the previous contents
  w.LBFileName.DeleteAllRows
  w.EFCharacter.Text = ""
  w.EFStory.Text     = ""
  w.EFScript.Text    = ""
  w.EFArt.Text       = ""
  w.EFKind.Text      = ""
  w.EFNumber.Text    = ""
  w.EFLength.Text    = ""
  w.EFDateStart.Text = ""
  w.EFDateEnd.Text   = ""
  w.EFComments.Text  = ""

Replaced by:

  // Start by removing the previous contents
  Dim CtrlCnt As Integer
  Dim CtrlIdx As Integer

  // Get the number of controls in the target Window
  CtrlCnt = Window1.ControlCount - 1 // 0-based

  // Loop thru the Controls and clears their contents
  For CtrlIdx = 0 to CtrlCnt
    If Window1.Control(CtrlIdx) IsA ListBox Then
      // Clears the ListBox contents (only one ListBox)
      ListBox(Window1.Control(CtrlIdx)).DeleteAllRows

    ElseIf Window1.Control(CtrlIdx) IsA EditField Then
      // Clears the EditField contents (for all EditFields)
      EditField(Window1.Control(CtrlIdx)).Text = ""
    End If

    If UserCancelled Then Exit // Avoid Infinite Loop
  Next


Actually, I read the data from a text file - some (10) lines goes to the EditFields - and in a loop I populate the ListBox using absolute reference like:

<Remember the earlier code:>
  Dim w As Window1

  // Get a reference to the target window
  w = New Window1
</Remember the earlier code>


  Window1.EditField1.Text = textTIS.ReadLine
  Window1.EditField2.Text = textTIS.ReadLine
  Window1.EditField3.Text = textTIS.ReadLine

    While Not textTIS.EOF
      // Fills the ListBox from here
      // Actual code removed

      If UserCancelled Then Exit // Avoid Infinite Loop
    Wend

Here comes the question:

I have 10 EditFields (this may vary in the future, who knows) and one ListBox, I do not think that it is reasonable - good programming skill - to pass so many references from the window to the Module Method.

Must I use the Cast trick - as I already do earlier - assuming as I already do that the data _AND_ the Control Order have a _fixed_ 'flow' (will always have the same order in both the text file and in the Window) ?

Please share your input here.

TIA,

Emile

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to