On Friday 05 March 2010 10:22:33 am Paul McNett wrote:
> On 3/5/10 9:48 AM, John wrote:
> > On Friday 05 March 2010 09:15:38 am Paul McNett wrote:
> >> On 3/5/10 9:05 AM, Larry wrote:
> >>> On 3/5/2010 11:52 AM, Paul McNett wrote:
> >>>> On 3/5/10 8:46 AM, Larry wrote:
> >>>>> We want to bind a control's position to a column in a grid for a grid
> >>>>> column total.  What property do we need to be looking at?
> >>>>
> >>>> What do you intend to do if the user horizontally scrolls the grid in
> >>>> such a fashion as to make the column invisible?
> >>>
> >>> I'm planning to also bind to it's width
> >>
> >> Look in dGrid.py, lines 642 - 660 (or search for comment "Thanks Roger
> >> Binns"). That's the code to get the header rect for painting the
> >> column's header. The meat of the code finds the left position of the
> >> column on screen, accounting for the horizontal scrollbar.
> >>
> >> If a read-only dColumn.Left property seems desirable, based on this
> >> code, let me know. Otherwise take the code and modify it to your needs.
> >>
> >> Paul
> >
> > I was able to discover the left by just added all the column widths.  But
> > what Larry has discovered is an issue in my mind.  We are using sizers
> > for the panel (there are multiple panels with multiple tabs).  We add
> > each object to a vertical sizer for each panel.  However, for this one
> > item ( the textbox that follows the location of the last column on a
> > grid) we don't explictly add the textbox to the panels sizer.  But
> > instead add it to the form (self.Form.paidlbl = dabo.ui.dTextBox(self,
> > DynamicPosition=self.pdlblpos, DynamicWidth = self.pdlblwidth).  For some
> > reason (unknown to me) the textbox appears at the correct location.
>
> Explain what you mean by "tabs", with regard to panels. When I think of a
> "tab", I think of a page in a pageframe.
>
> The textbox will appear where you position it, if it isn't in a sizer.
> Since you instantiated it last, it appears on top of the other objects.
>
> > I would have thought that the textbox would have appeared on all tabs
> > (because we appear to be adding it to the form and not the panel).
>
> You added it to the form, not to all panels of the form. So it appears on
> the form, on top of the panels.
>
> > Also in general,
> > just adding an object using position on a form that uses sizers seems
> > wrong.
>
> You are bound to be fighting with it, yes. But there's nothing "illegal"
> about it.
>
> > Are we going the wrong way with this?
>
> What you should probably do is put the textbox in its own panel, where the
> panel is in a sizer and sized to grow horizontally with the grid (the grid
> and this panel are in the same sizer). Then if you need to specify an
> absolute position and size for the text box, add the text box to that panel
> but not to the panel's sizer. That way you only need to deal with the
> position of the textbox within an area that you already know won't be
> overlapping other controls, and the tb.Left will be equal to the
> gridcol.Left that you figured out already.
>
> Paul

tabs == pageframes

thanks for the hints

Johnf


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to