Re: Checkbox-Weite automatisch setzen

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo Richard,

Ich möchte die Weite einer Checkbox mit Beschriftung
automatisch auf die richtigen Maße setzen, so wie ein
Label mit Autosize arbeitet. Nun habe ich aber doch
Probleme, und ich sehe nicht ganz, woran es hängt.
Auf meinem Computer geht es gut, aber ich habe
eben auf einem anderen Computer gesehen, dass
es nicht genau hinhaut und meine Checkbox
zweizeilig wird. Ich wüsste gerne, woran es liegt.

Meine Prodzedur dafür lautet:

Public Sub SetProperCheckBoxWidth
(ByVal uCheckBox As CheckBox)

uCheckBox.Width =
uCheckBox.Parent.TextWidth(.Caption) + 240

Was ist Parent.Font?
Was ist CheckBox.Font?

Ein Form.TextWidth("Text") liefert die Textbreite
für den akt. bei der Form eingestellten Font.
Hast Du das irgendwo berücksichtigt?

End Sub

.... schnipp...

Hier mal ein Beispiel das jede Sekunde die
Beschriftung der Checkbox ändert.


' /// Code in einer leeren Form1
Option Explicit
Private WithEvents Timer1 As Timer
Private WithEvents CheckBox1 As CheckBox
Private Label1 As Label
Private mCounter As Integer

Private Sub Form_Load()
Me.ScaleMode = vbPixels

Dim Fnt As New StdFont
With Fnt
.Name = "Arial"
.Size = 10
End With
Set Me.Font = Fnt

Set CheckBox1 = _
Me.Controls.Add("VB.CheckBox", "CheckBox1")

With CheckBox1
.Move 10, 10, 90, 30
.Caption = .Name
Set .Font = Fnt
.Visible = True
End With

Set Timer1 = _
Me.Controls.Add("VB.Timer", "Timer1")

With Timer1
.Interval = 1000
.Enabled = True
End With
End Sub

Private Sub CheckboxSetText(NewText As String)
CheckBox1.Width = Me.TextWidth(NewText) + 20
CheckBox1.Caption = NewText

' rechte Begrenzung der Checkbox markieren.
Me.Cls
Me.CurrentX = CheckBox1.Left + CheckBox1.Width + 1
Me.CurrentY = CheckBox1.Top + 7
Me.Print Chr$(60)
End Sub

Private Sub Timer1_Timer()
mCounter = mCounter + 1
Me.Caption = CStr(mCounter)
CheckboxSetText MonthName(mCounter)
If mCounter = 12 Then
mCounter = 0
End If
End Sub
' \\\ E N T E

Sowohl für die Form (den Parent der Checkbox)
als auch für die Checkbox selbst muss im Moment
der Messung der Textbreite (Form.TextWidth(X))
die selbe Einstellung für Font gelten.


Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)


.



Relevant Pages

  • Re: Change Box Color on CheckBox Control
    ... you don't need the checkbox functionality ... for those mirrored checkboxes, do you? ... Private Sub Check1_Click ...
    (microsoft.public.vb.general.discussion)
  • Re: CheckBox unchecked status detection in DataGrid Template Column
    ... private CustomCheckBoxHeader headerCheckBox; ... CustomCheckBoxHeader(headerCheckBoxTooltip): new CustomCheckBoxHeader; ... private abstract class CustomCheckBox: CheckBox, ... (itemsArray, headerArray) ...
    (microsoft.public.dotnet.framework.aspnet)
  • RE: Calling a sub on another worksheet
    ... Try the following with double quotes and also note full name of sub ... I am trying to use a checkbox to show or hide an additional worksheet. ... part is easy - but what I am also trying to do is call a subroutine (Private ... Dim RemSection As Long ...
    (microsoft.public.excel.programming)
  • Re: Using Checkbox Values
    ... While it's true the even code is designated Private by default, ... I have created a checkbox on Sheet1, then the following sub (in ... Module1) produces different output dependent on whether the checkbox ... When I create a checkbox (using the control toolbox), ...
    (microsoft.public.excel.programming)
  • Re: Click-Ereignis =?iso-8859-1?Q?unterdr=FCcken?=
    ... > mit 1 CheckBox: Check1 ... > Private mInhibitFlag As Boolean ... > Private Sub Check1_Click ...
    (microsoft.public.de.vb)