Text alignment in usercontrol

I have created a simple usercontrol that only uses a textbox. I have full control over most of the textbox's properties EXCEPT text alignment which appears to be read only. Is there a API to force this?
entretecAsked:
Who is Participating?
 
LlandrConnect With a Mentor Commented:
OK Here comes an answer.
UserControls cannot perform actions that involves destruction of a window (in the Windows-API meaning). This means that you cannot perform the rightalignment (since this operation involves deletion and creation of a new textbox window) another property that is impossible to export this way is the MultiLine property.

I made a work around which involves having two textboxes (both multiline) one right aligned and one left-aligned. Hide the textbox that is not currently visible. When you switch aligments copy properties betweeen the textboxes and show the relevant one.

0
 
entretecAuthor Commented:
Adjusted points to 100
0
 
redbaron082997Commented:
How are you implementing the text box functions? alignment is not read-only, that is the property that you set for center,left,etc.  You may need to implement it as such:

property let alignment( pos as single)
  textbox1.alignment = pos
end property
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
topolCommented:
I think if it is read-only API won't work either. What you can do is to insert extra spaces based on alignment--if it is cenrered, you find out the length of textbox, the length of text in text box and insert spaced there.
0
 
entretecAuthor Commented:
The text alignment is read only which is strange because this property CAN be changed in the native textbox.
I thought of shadowing the textbox with a couple of others that had the alternative alignments but I need the textbox to be databound and that seems a contorted thing to try and code safely
I will try topol's suggestion to see if this would work.
0
 
redbaron082997Commented:
have you tried impleming the above function as part of your new control? I just did it and Did not have a problem.  What does the code look like in your modules for declaring the functions of TextBox? Unless you have a property Let, it will be read-only.
0
 
DalinCommented:
entreytec,
You need to have the multiline property set to true before your textbox's align property work. This may be the reason it is read only.
0
 
entretecAuthor Commented:
Perhaps I am not making myself clear. I want to able to alter the alignment from MY usercontrol in the properties menu or even programmaticaly. The nearest I can get is to have 2 separate usercontrols, one left justified and one right justified (too much of kludge, all the code has to be duplicated - I could have a module but how would you pass a usercontrol to it!). I have tried packing with spaces but it doesn't handle properly.

The following is how I have declared the property and functions

'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub UserControl_InitProperties()
   Text1.alignment = vbLeftJustify
   '' other stuff
end sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Text1.alignment = PropBag.ReadProperty("alignment", vbLeftJustify)
'' other stuff

end sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("alignment", Text1.alignment, vbLeftJustify)
    '' other stuff
End Sub


Public Property Get alignment() As AlignmentConstants
    alignment = Text1.alignment
End Property

Public Property Let alignment(ByVal vNewValue As AlignmentConstants)
   Text1.alignment() = New_TabValue
   PropertyChanged "alignment"
End Property
0
 
topolCommented:
So what doesn't work? Show your alignment code
0
 
entretecAuthor Commented:
Thanks if only to know it cannot be done. I would interested to see your work around
0
 
LlandrCommented:
Give me an email and I will post the control to you.
0
 
entretecAuthor Commented:
I think I may have done the wrong thing and put my email on the question page. Here is my email mikeb@entretec.com.au
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.