On 25 Mar 2006, at 19:07, J. Landman Gay wrote:
Okay, I'll bite. I have just created your version 1. I have not
looked at version 2 yet.
Here is my setup:
1 button: Choose
3 flds: BaseFolder, FolderContents, FileContents
These controls were grouped. No name or custom properties were
assigned to anything. I set the listBehavior of the FolderContents
field to true, and put vertical scrollbars on FolderContents and
FileContents. Setup time: about 1 minute.
Setting up the controls so they look nice will be the same and will
depend on what the customer wants. I'm happy to say this is even.
Scripts:
** Choose button:
on mouseUp
answer folder "Choose the base folder:"
if it <> "" then setFolder it
end mouseUp
** FolderContents field:
on selectionChanged
putFileContents (the selectedtext of me)
end selectionChanged
** Stack script:
on setfolder tFolder
put the ID of the owner of the target into tGrp
put tFolder into fld "basefolder" of grp ID tGrp
put the directory into tOldDir
set the directory to tFolder
put the files into fld "folderContents" of grp ID tGrp
put "" into fld "fileContents" of grp ID tGrp
set the directory to tOldDir
end setfolder
Ok the actual gathering of the Files in a Folder is handled in my app
was handled in a Library Stack so the code necessary to do this is
not duped all over the place. You could do the same so the time taken
to code this would be roughly the same. The same goes for getting the
file contents.
on putFileContents tFile
put the ID of the owner of the target into tGrp
put fld "basefolder" of grp ID tGrp & slash & tFile into tFilePath
put url ("file:"&tFilePath) into fld "fileContents" of grp ID tGrp
end putFileContents
Ok, but you are hard coding control names which I was trying to
avoid. For instance If the customer didn't want the path of the
folder displayed anymore (e.g. there was just a choose button) then
all I'd have to do is to delete the field. Using the method above
you'd have to change the script otherwise you'd get an execution
error. The same goes for any field, using ISM deleting a control
stops the action initiator from sending to that control (since they
no longer are "listening"). I guess you could prefix all control
accesses with an "if exists() then" clause but this gets cumbersome
and adds additional overhead. Also if the user wanted the folder path
displayed in a number of places (say in different card(s) or even in
different stack(s)), you'd have to change the script, whereas I'd
just have to copy and paste the existing Folder Path name field and
it would automatically pick up the folder when it was selected.
Also with my method I can paste in a control from another group and
it will instantiate itself automatically and since there are no hard-
coded control names you don't get any execution errors.
Also if you wanted these groups in another stack you'd have to paste
the groups and then paste the Stack Script. If you already had
handlers with the same name in the Stack Script you'd have to do some
jiggerling in order to make it work.
With my method when
Comparing our methods:
Thing Mine Yours
# of objects with scripts 3 8
# of custom properties 0 3
# objects with custom props 0 8
Total lines of script 21 63
Point taken about the number of Scripts, but bearing in mind the
above flexibility, I'd rather have more scripts and not have to
change things in other scripts. I could cut down on the number of
scripts and sacrifice flexibility by "Listening" at a higher level.
All the Best
Dave
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution