[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