Difference between revisions of "Gambas/questions"
< Gambas
Jump to navigation
Jump to search
(extracted from main Gambas page; updates, more questions) |
(another Q, another Q&A) |
||
Line 1: | Line 1: | ||
==Unanswered== | ==Unanswered== | ||
+ | * How do you get a Label control to update its contents? | ||
+ | ** It only seems to update if the Text changes ''after'' the containing form has been moved. Subsequent changes will not appear until after the form moves again. | ||
* How do you set the text of header cells in a GridView (or TableView)? | * How do you set the text of header cells in a GridView (or TableView)? | ||
* How do you get a list of selected cells in a GridView (or TableView)? | * How do you get a list of selected cells in a GridView (or TableView)? | ||
Line 10: | Line 12: | ||
==Solved== | ==Solved== | ||
+ | * '''Q''': How do you call an overridden parent method (function/sub)? | ||
+ | ** '''A''': (tentative) Invoke it as Me.MethodName() | ||
* The "'''Not an object'''" error can mean that you tried to refer to a property as if it were a function, i.e. followed it with empty parentheses. | * The "'''Not an object'''" error can mean that you tried to refer to a property as if it were a function, i.e. followed it with empty parentheses. | ||
* Syntax for calling parameterless functions is deceptive. You can sometimes get away without using the parentheses, but other times you will get ''the function itself'' (presumably a pointer of some kind) as the return value instead of executing the funtion. When in doubt, always use parentheses. | * Syntax for calling parameterless functions is deceptive. You can sometimes get away without using the parentheses, but other times you will get ''the function itself'' (presumably a pointer of some kind) as the return value instead of executing the funtion. When in doubt, always use parentheses. | ||
Line 18: | Line 22: | ||
** '''Key presses''': use the [[Key object (Gambas)|Key object]] | ** '''Key presses''': use the [[Key object (Gambas)|Key object]] | ||
** '''Controls in a group''': use the [[LAST (Gambas)|LAST]] keyword | ** '''Controls in a group''': use the [[LAST (Gambas)|LAST]] keyword | ||
− | *** The most obvious solution would have been for the event to pass the control as a parameter; Gambas events don't seem to use parameters. Another intuitive solution would have been for the group itself to appear on the form's list of controls/methods, as an alias for the currently active/effective control. Finally, if the form had an ActiveControl property, I could pull the .Tag value from there, although I would expect to run into problems using this technique under some circumstances | + | *** The most obvious solution would have been for the event to pass the control as a parameter; Gambas events don't seem to use parameters. Another intuitive solution would have been for the group itself to appear on the form's list of controls/methods, as an alias for the currently active/effective control. Finally, if the form had an ActiveControl property, I could pull the .Tag value from there, although I would expect to run into problems using this technique under some circumstances. |
* Another minor thing to remember is that calls to Gambas subroutines always put parentheses around the parameter list (VB subroutines do not, unless the subroutine is a function or property and the return value is being retrieved). | * Another minor thing to remember is that calls to Gambas subroutines always put parentheses around the parameter list (VB subroutines do not, unless the subroutine is a function or property and the return value is being retrieved). | ||
* '''Q''': How do you open a file-browsing dialog that uses KDE's [[kioslave]] feature? ([http://gambasdoc.org/help/comp/gb.form/dirchooser DirChooser] in gb.form lets you choose a local folder only.) | * '''Q''': How do you open a file-browsing dialog that uses KDE's [[kioslave]] feature? ([http://gambasdoc.org/help/comp/gb.form/dirchooser DirChooser] in gb.form lets you choose a local folder only.) | ||
Line 24: | Line 28: | ||
* An "invalid assignment" error can be caused by an undeclared variable, e.g. "A = B" if A has not been declared. | * An "invalid assignment" error can be caused by an undeclared variable, e.g. "A = B" if A has not been declared. | ||
* Properties cannot accept additional arguments (other than the value being processed or retrieved). Workaround: instead of '''property Value''', have '''function GetValue''' and '''sub PutValue(iVal)'''. Not elegant, but functionally equivalent. Another option may be to have the passed data be a hash, but that is probably only efficient in certain rare circumstances; otherwise it involves extra coding to put the data in the hash and get it back out again. | * Properties cannot accept additional arguments (other than the value being processed or retrieved). Workaround: instead of '''property Value''', have '''function GetValue''' and '''sub PutValue(iVal)'''. Not elegant, but functionally equivalent. Another option may be to have the passed data be a hash, but that is probably only efficient in certain rare circumstances; otherwise it involves extra coding to put the data in the hash and get it back out again. | ||
− | * This may be a '''compiler bug''' or at least an undocumented feature: a class with no member variables seems to be automatically classified as "[[static | + | * This may be a '''compiler bug''' or at least an undocumented feature: a class with no member variables seems to be automatically classified as "[[../classes/static|static]]", and therefore cannot be used with the NEW operator. To get around the problem, declare a dummy member variable (e.g. "private strDummy as string"). |
Revision as of 15:44, 25 April 2015
Unanswered
- How do you get a Label control to update its contents?
- It only seems to update if the Text changes after the containing form has been moved. Subsequent changes will not appear until after the form moves again.
- How do you set the text of header cells in a GridView (or TableView)?
- How do you get a list of selected cells in a GridView (or TableView)?
- The documentation for _GridView_Rows seems to be wrong -- it says there is a "Selection" property, but the compiler says there is no such thing.
- How do you access files shared via Samba? (One way would be to make use of the smb kioslave; how is that done in Gambas?)
- Is it possible to do continuous forms as in MS Access? It seems likely that it can be done with some coding...
- Is there any Gambas equivalent to the VB line-continuation syntax (space + underscore)?
- Is there a general language syntax tutorial or reference anywhere?
- What do you do when an attempt to get Mouse information (e.g. Mouse.Right, to find out if the right button is being clicked) inside a Click event causes the error message "No mouse event data"? (The message box does not display an error number.)
Solved
- Q: How do you call an overridden parent method (function/sub)?
- A: (tentative) Invoke it as Me.MethodName()
- The "Not an object" error can mean that you tried to refer to a property as if it were a function, i.e. followed it with empty parentheses.
- Syntax for calling parameterless functions is deceptive. You can sometimes get away without using the parentheses, but other times you will get the function itself (presumably a pointer of some kind) as the return value instead of executing the funtion. When in doubt, always use parentheses.
- Where the function returns an object, function.method seems to be ok (as long as "method" is not also a function)
- One of the more confusing aspects of Gambas (for a Visual Basic user, anyway) is that Gambas's events do not pass parameters; instead, you have to know where to fetch them from:
- Form resize: the size is easily available as a form property ("ME.")
- Mouse clicks: use the Mouse object
- Key presses: use the Key object
- Controls in a group: use the LAST keyword
- The most obvious solution would have been for the event to pass the control as a parameter; Gambas events don't seem to use parameters. Another intuitive solution would have been for the group itself to appear on the form's list of controls/methods, as an alias for the currently active/effective control. Finally, if the form had an ActiveControl property, I could pull the .Tag value from there, although I would expect to run into problems using this technique under some circumstances.
- Another minor thing to remember is that calls to Gambas subroutines always put parentheses around the parameter list (VB subroutines do not, unless the subroutine is a function or property and the return value is being retrieved).
- Q: How do you open a file-browsing dialog that uses KDE's kioslave feature? (DirChooser in gb.form lets you choose a local folder only.)
- A: Dialog.SelectDirectory in gb.qt.kde provides this.
- An "invalid assignment" error can be caused by an undeclared variable, e.g. "A = B" if A has not been declared.
- Properties cannot accept additional arguments (other than the value being processed or retrieved). Workaround: instead of property Value, have function GetValue and sub PutValue(iVal). Not elegant, but functionally equivalent. Another option may be to have the passed data be a hash, but that is probably only efficient in certain rare circumstances; otherwise it involves extra coding to put the data in the hash and get it back out again.
- This may be a compiler bug or at least an undocumented feature: a class with no member variables seems to be automatically classified as "static", and therefore cannot be used with the NEW operator. To get around the problem, declare a dummy member variable (e.g. "private strDummy as string").