[Gambas-user] Dynamic Controls / Grid?

Nate-37 Nathan.Neff at ...626...
Fri Jun 27 05:16:04 CEST 2008


Thanks Moe, I'll definitely take a look at the function you listed below.

I still wonder what function/code is called for VPanels, HPanels, etc. when
they arrange their controls auto-magically.

I would like to see if there's anyone else that knows what magical code is
called when
a form starts up that will line up controls.

In the Gambas beginner's guide, there's a tutorial that sets up controls
like this in a VPanel:

VPanel
        text1
               text2
text3              

And when you start the program, the controls are like this:

text1
text2
text3

I would like to try calling the same code that lines up those controls on my
own VPanels, after I've added some more controls to them.

But in the meantime, I will definitely try your suggestions.

Thank you very much,
--Nate


M0E Lnx wrote:
> 
> Ah!... then whad you need my friend is a way to determine each
> components width and move the rest of them accordingly
> 
> Take a look at this function that I have written and use a lot.
> 
> PUBLIC SUB get_object_width(sText AS String) AS Integer
> 
> 
>   DIM iRetVal AS Integer
>   DIM fvirtfrm AS Form
>   DIM datemp AS DrawingArea
> 
> 
>   fvirtfrm = NEW Form
>   WITH fvirtfrm
>     .Width = 300
>     .Height = 200
>   END WITH
>   datemp = NEW DrawingArea(fvirtfrm)
> 
>   Draw.Begin(datemp)
>   iRetVal = Draw.RichTextWidth(sText)
>   Draw.End
>   RETURN iRetVal
> 
> 
> END
> 
> This will draw (but not display) an object, and give necessary .width
> property to display the .text property on the object.
> 
> If you can figure out exactly how wide each object needs to be, then
> you can set the right .X property for each object and keep them from
> overlaping
> 
> you use it like this
> 
> Textbox1.Width = get_object_width(Textbox1.text)
> Textlabel1.Width = get_object_width(Textlabel1.text)
> Checkbox1.Width = get_object_width(checkbox1.text) + 24 ' Add extra
> space for your square box on this one
> 
> Then, you arrange your objects like this
> 
> textlabel1.move(textbox1.left + (textbox1.width + 4), textbox1.top) '
> leave a 4 pixel space between them
> checkbox1.move(textlabel1.left + (textlabel1.width + 4), textlabel1.top)
> 
> 
> 
> 
> On 6/26/08, Nate-37 <Nathan.Neff at ...626...> wrote:
>>
>>  > Do you really mean (3) objects for each search result?
>>
>>
>> Yes, I need 3 objects for each result.  My problem is not with creating
>> the
>>  objects, it's being able to view them.
>>
>>  I would like an easy way to make the objects visible.  Currently I can
>> only
>>  see the first checkbox that's created.  The others then pile up on top
>> of
>>  the first one.  I can dabble with their top, bottom, left right
>> properties,
>>  but that sounds like more work than what's needed.
>>
>>  I found a demo in the "Beginner's Guide to Gambas" where it shows how
>> the
>>  VPanel, HPanel, HBox and VBox will **automatically** arrange their child
>>  controls when the application starts.  The beginner's guide is here:
>>  http://vectorlinux.osuosl.org/Uelsk8s/gambas-beginner-guide.pdf
>>
>>  Is there some method that I can call, like VPanel.Arrange()  that would
>> do
>>  the same thing?  I've tried several of the methods already, and can't
>> get
>>  them to reveal the other checkboxes.
>>
>>  Thanks,
>>
>>  --Nate
>>
>>
>>
>>  M0E Lnx wrote:
>>  >
>>  > Do you really mean (3) objects for each search result?
>>  >
>>  > In case you do, You can do it like this.
>>  > Put the results in an array
>>  > then run trhough the array creating the stuff
>>  >
>>  > like this
>>  > PUBLIC SUB DYNAMIC_OBJECTS()
>>  > DIM sResults as string '(this is the raw list of results)
>>  > DIM sRes as string[]
>>  > DIM i as integer
>>  > DIM sResult as string '(Single result) in the array
>>  >
>>  > DIM txtBox as textbox
>>  > DIM tTextLabel as TextLabel
>>  > dim cbCheck as Checkbox
>>  >
>>  >
>>  >
>>  > 'We will assume you are separating your l ist with a space
>>  >
>>  > sRes = split(sResults, " ")
>>  > FOR i = 0 to sRes.count - 1
>>  > txtBox = new textbox(YourParentHere)
>>  > tTextlabel  = new textlabel(YourParentHere)
>>  > cbCheck = new checkbox(YourParentHere)
>>  >
>>  > NEXT
>>  >
>>  > END
>>  >
>>  > Of couse, you'll have to set the properties for each of these objects
>>  > after you create them...
>>  > This code may not work out of the box, but it should give you an idea
>>  > of how to do this
>>  >
>>  >
>>  >
>>  >
>>  > On 6/26/08, Nate-37 <Nathan.Neff at ...626...> wrote:
>>  >>
>>  >>  Hello,
>>  >>
>>  >>  I would like to be able to create a Label, a Textbox and a Checkbox
>> for
>>  >> a
>>  >>  variable number of records.
>>  >>
>>  >>  I'm not dealing with a database, I'm dealing with search results.
>>  >>
>>  >>  So, if I find 3 search results, I would like to create a Label, a
>>  >> Textbox
>>  >>  and a Checkbox for each search result like so:
>>  >>
>>  >>
>>  >>  Search Results:
>>  >>
>>  >>  Result         Change To:       Change?
>>  >>  -----------------------------------
>>  >>  Foo            FOOFOO           X
>>  >>  Bar             BARBAR            X
>>  >>  Baz
>>  >>
>>  >>
>>  >>  Go!
>>  >>
>>  >>  What is a good way of creating these dynamic controls, as well as
>>  >> arranging
>>  >>  them so that they appear like in the example above?
>>  >>
>>  >>  I'm playing around with the HPanel, VPanel, HBox and VBox, and will
>> post
>>  >> my
>>  >>  results if I find something that works.  I would use a grid, except
>> that
>>  >> I
>>  >>  want to have a Checkbox in the 3rd column.  Is there any way to
>> place a
>>  >>  checkbox in a Grid?
>>  >>
>>  >>  Thanks,
>>  >>  --Nate
>>  >>  --
>>  >>  View this message in context:
>>  >>
>> http://www.nabble.com/Dynamic-Controls---Grid--tp18140539p18140539.html
>>  >>  Sent from the gambas-user mailing list archive at Nabble.com.
>>  >>
>>  >>
>>  >>
>>  >>
>> -------------------------------------------------------------------------
>>  >>  Check out the new SourceForge.net Marketplace.
>>  >>  It's the best place to buy or sell services for
>>  >>  just about anything Open Source.
>>  >>  http://sourceforge.net/services/buy/index.php
>>  >>  _______________________________________________
>>  >>  Gambas-user mailing list
>>  >>  Gambas-user at lists.sourceforge.net
>>  >>  https://lists.sourceforge.net/lists/listinfo/gambas-user
>>  >>
>>  >
>>  >
>> -------------------------------------------------------------------------
>>  > Check out the new SourceForge.net Marketplace.
>>  > It's the best place to buy or sell services for
>>  > just about anything Open Source.
>>  > http://sourceforge.net/services/buy/index.php
>>  > _______________________________________________
>>  > Gambas-user mailing list
>>  > Gambas-user at lists.sourceforge.net
>>  > https://lists.sourceforge.net/lists/listinfo/gambas-user
>>  >
>>  >
>>
>>
>> --
>>  View this message in context:
>> http://www.nabble.com/Dynamic-Controls---Grid--tp18140539p18142380.html
>>
>> Sent from the gambas-user mailing list archive at Nabble.com.
>>
>>
>> 
>> -------------------------------------------------------------------------
>>  Check out the new SourceForge.net Marketplace.
>>  It's the best place to buy or sell services for
>>  just about anything Open Source.
>>  http://sourceforge.net/services/buy/index.php
>>  _______________________________________________
>>  Gambas-user mailing list
>>  Gambas-user at lists.sourceforge.net
>>  https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
> 
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
> 
> 

-- 
View this message in context: http://www.nabble.com/Dynamic-Controls---Grid--tp18140539p18147431.html
Sent from the gambas-user mailing list archive at Nabble.com.





More information about the User mailing list