Width...

Mailyn

Erfahrenes Mitglied
Also, ich will, dass wenn 'n Label eine bestimme Länge hat, also bei einer bestimmten Zahl in der "Width-Spalte" angekommen ist, dass dann eine Aktion ausgelöst wird... nur WIE?!

Code:
Private Sub Label3_Change()
If Label3.Width = 300 Then MsgBox "Servus!"
End Sub
 
Du solltest kein Ist-Gleich-Zeichen verwenden sondern ein Ist-Größer-Gleich-Zeichen. Denn die Wahrscheinlichkeit für den Fall, dass ein Text genau eine exakte Breite eintritt, ist wohl sehr gering! (Du musst beachten, dass abhängig von der im Label eingestellten Schriftart nicht alle Buchstaben gleich breit sind!)
 
Code:
Private Sub Label3_Change()
If Label3.Width < 300 Then MsgBox "Servus!"
End Sub

geht aber auch nich!
Auch wenn ich den Code im form-load eingeb, da nix!
 
Hast du die AutoSize-Eigenschaft des Labels auf TRUE gesetzt?
Welche Skalierung verwendest du?
 
Hallo Mailyn,

ich denke, Shakie meint, welche Methode der Größenveränderung du benutzt. Also wie wird dein Label größer?
Oder welche Größe besitzt dein Label?
Wenn du deinen Code ins Form_Load-Ereignis einfügst, bedeutet das ja noch längst nicht, dass die Breite von 300 erreicht ist.
Du brauchst also noch eine Prozedur, die dein Label vergrößert, beispielsweise ein Timer, der jede Sekunde die Breite des Labels um 20 vergrößert.

Vielleicht fehlt dir ja die Prozedur und du erhälst deswegen keine Meldung "Servus!" :D

Ciao:
Da' Hacker
 
also doof bin ich auch nicht!

Ich verlängere es so:
Code:
Private Sub Command1_Click()
			label1.Width = CStr(Val(label1.Width) + 100)
End Sub

wie ist mein problem zu lösen?
 
Mailyn hat gesagt.:
also doof bin ich auch nicht!

hehe, also niemand hat geschrieben, dass du doof bist! :D

Ich würde dir also empfehlen den Code in dein Command_Click-Ereignis zu schreiben.
So wird der User begrüßt, wenn die Breite erreicht wird. Letztendlich wäre das eine gute Lösung, wie ich finde:
Code:
Private Sub Command1_Click()
If Not Label3.Width <= 300 Then 'Man könnte auch einfach => hinschreiben (EDIT)
MsgBox "Servus!"
Else
label1.Width = CStr(Val(label1.Width) + 100)
End If
End Sub

Wenn du nur eine Zeile mit einer If-Anweisung haben möchtest, empfehle ich dir, diese in einen Timer mit einem Intervall von 1 zu setzen.

Und ich habe noch nie ein Ereignis gesehen, welches "Label3_Change()" heißt. Höchstens bei Textfeldern, aber nicht bei Labels. Anscheinend habe ich mal wieder etwas dazugelernt(kann es momentan nicht überprüfen).

Ich hoffe, dass ich dir nun mit meinem Beitrag helfen konnte, Mailyn. ;)

Ciao:
Da' Hacker *gutgelaunt*
 
Zuletzt bearbeitet:
Schau mal her: Wenn du "Autosize" auf TRUE stehen hast, dann bringt diese Zeile hier:
Code:
label1.Width = CStr(Val(label1.Width) + 100)
herzlich wenig. Denn "Autosize=TRUE" bewirk, dass das Label seine Breite automatisch der Textbreite anpasst. Entweder musst du "Autosize" auf FALSE stellen oder nicht die Breite des Labels verändern, sondern den Text verlängern, der drin steht!
Nochwas: Die obige Code-Zeile ist etwas kompliziert geschrieben......mach es doch einfach so:
Code:
label1.Width = label1.Width + 100
Die Width-Eigenschaft des Labels ist vom Typ Single, das heißt, der Aufruf von Val ist überflüssig. Desweiteren ist es dann noch unsinniger, die Berechnung der neuen Breite erst in einen Strink zu konvertieren und dann anschließend an eine Single-Variable zu übergeben, da wird der String dann wieder zurückkonvertiert.

@Da Hacker: Das Change-Ereignis gibt es wirklich.
 
Hallo Shakie,

uff, wieder voll um die Ecke gedacht :eek: ;) .
Stimmt, natürlich braucht man die Konvertierungen nicht. Ja und somit auch nicht den Code für die Vergrößerung(wenn man wie du geschrieben hast, AutoSize aktiviert hat).
Habe auch gerade nachgeschaut. Sehr verwunderlich, warum ich das früher nicht entdeckt habe :) .

Okay, lässt Mailyn nun beides weg, dann fehlt ihm aber trotzdem etwas, das sein Label vergrößert. Also muss er irgendwo einen Codeabschnitt haben, der Text in das Label übernimmt.

Naja, ich bin mal gespannt, was Mailyn nun schreibt.

Ciao:
Da' Hacker
 
Zurück