Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

First attempt at documneting components

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • First attempt at documneting components

    Below is some very rough code that demonstrates how to document each component in your project. I have found as my components multiply I wanted a way to have the data handy (mostly code imbedded in the component). Selwyn provided an undocumeted function that makes this possible.

    Create a code file and run this. The only prompt that will appear is a ui box signaling the process completed. In a matter of seconds (depends on how many componets) it will create two text files, one detailing the name and type of component, the other with the actuual xbasic code. It could be combined in one file. It also creates a database table called comp_docs in your current project directory with the name of the component, the type and the xbasic code. I will develop my documentation in the form of a report.

    As I said, it is rough. It could use more error checking and be incorporated in a nicely developed application format complete with user supplied input and prompts.


    Much of the documented text is courtesy of Alpha

    For now, it provides me usefull documentation for all of my components without having to open each one.

    Steve

    Code:
    'Date Created: 21-Feb-2007 01:30:39 PM
    'Last Updated: 21-Feb-2007 03:55:20 PM
    'Created By  : 
    'Updated By  : 
    
    dim DBpath as c
    dim shortname as c
    dim longname as c
    dim tbl as P
    dim xbasic as c
    dim result as c
    Dim comp_name as c
    Dim comp_type as c
    
    	shortname = "[default]\*.a5wcmp"
    	'the shortname has the projectname in [ ] 
    	longname = a5wcb_friendlyname_decode(shortname)
    	'the longname is the fully filename of the component
    
    	file_list = filefind.get(longname, 0, "PN")
    	'this creates an array of all the components in your project
      	 'this section creates text files detailing component info
      	  'and a database file to display the component data
      		
      		
      	'test for the existence of text files, if exist, remove 
      		if file.exists("c:\docs.txt") = .t. then
    		file.remove("c:\docs.txt")
    		end if
    
    		if file.exists("c:\file_names.txt") = .t. then
    		file.remove("c:\file_names.txt")
    		end if
    	'create table for comp data
    	DBpath = a5.get_path()
    	table.create_begin("comp_xbasic","m",60)
    	table.field_add("comp_type","c",30)
    	table.field_add("comp_name", "c", 30)
    	tbl = table.create_end(Dbpath + "\\" + "comp_docs.dbf")
        'The create_end() method creates the table and assign an object pointer to the table
    	tbl = table.open("comp_docs.dbf")
    
    	'process the array and populate table and text files
    	for each foo in file_list
    
        	if foo <> ""
    			xbasic = A5wcb_getGridInfo("xbasic",foo.value)
    			'the a5wcb_getGridInfo() function is for internal use and is therefore not documented.
    			'it is used to extract information from a saved component definition. even though the function name is a5wcb_getGridInfo()
    '			it can be used for other component types besides grids.
    
    			'the property that we want to extract is the 'xbasic' property.
    			'this is a string of xbasic code - the same code that you see in the Grid builder when you go to the Xbasic tab
    		
    			result = evaluate_template(xbasic)
    			'the xbasic code in this string creates a dot variable (called 'tmpl') and assigns properties to 'tmpl'
    			'we want to execute the code in this variable so that 'tmpl' is instantiated.
    			'to do this we use the evaluate_template() function. if there are any xbasic errors in the code
    			'that is execute, then 'result' will be non-null
    	
    			file.append("c:\docs.txt",xbasic)
    
    			comp_type = tmpl.ComponentType ' set variables with different propoerties
    
    				if comp_type="NavigationSystem" ' check for navigation comp name
    					comp_name = tmpl.name
    				else
    					comp_name = tmpl.componentName ' dialog and grid use this property
    				End if
    			
    			file.append("c:\file_names.txt",comp_name +  "  " + comp_type + crlf(1))
    			
    			tbl.enter_begin(.T.)
    			tbl.comp_name = comp_name
        		tbl.Comp_Xbasic = xbasic
    			tbl.comp_type = comp_type
    			tbl.enter_end(.T.)
      	end if
    
    	next
      
    
    
    FILE_ADD_TO_DB(Dbpath + "\\" + "comp_docs.dbf")
    
    
    ui_msg_box("Done!","The process has been completed.")
    end
    Last edited by Steve Bovino; 02-21-2007, 05:58 PM. Reason: can't spell

  • #2
    Re: First attempt at documenting components

    Thank Steve. We need more of documentation functions like a5wcb_getGridInfo(); one that shows how security is applied would be great.

    Now, I need to extract just the portion of tmpl that defines the fields to display. The sections look like this:

    Code:
    with tmpl.field_info[1]
    	.Fieldname = "Id"
    	.Scope = "Local"
    	.DisplayFormat = ""
    	.DisplayUnFormat = ""
    	.ConditionalStyle = ""
    	.ConditionalStyleLevel = "Cell"
    	.ClientSideConditionalStyle = ""
    ...
    I wondered if this non-documented function has parameters to let me extract just that part? Right now a5wcb_getGridInfo() lists the entire xbasic for the grid.
    Steve Wood
    Join the ALPHA DEVELOPERS NETWORK
    There is no Cloud. It's just someone else's computer.
    Web - Mobile - Hosting - Products - Frameworks - Developer Resources
    AlphaToGo | IADN (100% Alpha Anywhere Websites)

    Comment

    Working...
    X