Discussion:
Label und Textbox trennen
(zu alt für eine Antwort)
Phil Belloni
2005-04-12 12:20:11 UTC
Permalink
Hi

Access 2000

Wie kann ich per VBA ein Label von einer Textbox trennen?

Bemerkung:
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.

Gruss und Dank
Jörg Ostendorp
2005-04-12 13:21:29 UTC
Permalink
Hallo Phil,
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
IMHO geht das gar nicht, da die Parent-Eigenschaft auch zur
Entwicklungszeit schreibgeschützt ist. Du könntest aber vielleicht per
DeleteControl und CreateControl erst das alte Label löschen und
anschließend direkt ein gleichnamiges neues erstellen.

Viele Grüße
Jörg Ostendorp
Ulrich Haarmeyer
2005-04-12 13:35:32 UTC
Permalink
Hallo Phil
Post by Jörg Ostendorp
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
IMHO geht das gar nicht, da die Parent-Eigenschaft auch zur
Entwicklungszeit schreibgeschützt ist. Du könntest aber vielleicht per
DeleteControl und CreateControl erst das alte Label löschen und
anschließend direkt ein gleichnamiges neues erstellen.
Alternativ dazu würde ich erst versuchen (bin mir nicht sicher ob das
Möglich ist) die ControlType-Eigenschaft von Bezeichnungsfeld auf Textfeld
umstellen und anschließend wieder zurück. So bleiben die anderen
Einstellungen wie Text- und Hintergrundfarbe sowie Größe und Position des
Steuerelements erhalten und müssen nich neu eingestellt werden.
Nur die Beschriftung müßtest du vorher auslesen und anschließend neu setzen.

Gruß
Uli
Phil Belloni
2005-04-13 13:03:37 UTC
Permalink
Hallo Ullrich
Post by Jörg Ostendorp
Hallo Phil
Post by Jörg Ostendorp
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
IMHO geht das gar nicht, da die Parent-Eigenschaft auch zur
Entwicklungszeit schreibgeschützt ist. Du könntest aber vielleicht per
DeleteControl und CreateControl erst das alte Label löschen und
anschließend direkt ein gleichnamiges neues erstellen.
Alternativ dazu würde ich erst versuchen (bin mir nicht sicher ob das
Möglich ist) die ControlType-Eigenschaft von Bezeichnungsfeld auf Textfeld
umstellen und anschließend wieder zurück. So bleiben die anderen
Einstellungen wie Text- und Hintergrundfarbe sowie Größe und Position des
Steuerelements erhalten und müssen nich neu eingestellt werden.
Nur die Beschriftung müßtest du vorher auslesen und anschließend neu setzen.
Danke für deine Idee Ullrich, sie FUNKTIONIERT! Konnte diese Funktion
erstellen.

Sub TrenneLabelTextbox()
Dim frm As Form
Dim lbl As Label
Dim obj As Object
Dim z As Integer, c As Integer
Dim FrmName As String
Dim CtrName As String
Dim CtrCaption As String

For z = 0 To CurrentDb.Containers(2).Documents.Count - 1
FrmName = CurrentDb.Containers(2).Documents(z).Name
DoCmd.OpenForm FrmName, acDesign, , , , acHidden
DoEvents
Set frm = Forms(FrmName)
For c = 0 To frm.Controls.Count - 1
If TypeOf frm.Controls(c) Is TextBox Or _
TypeOf frm.Controls(c) Is ComboBox Or _
TypeOf frm.Controls(c) Is ListBox Then
Set obj = frm.Controls(c)
If obj.Controls.Count > 0 Then
Set lbl = obj.Controls(0) 'Risiko
CtrName = lbl.Name
CtrCaption = lbl.Caption
lbl.ControlType = acTextBox
Set obj = frm.Controls(CtrName)
obj.ControlType = acLabel
Set lbl = frm.Controls(CtrName)
lbl.Caption = CtrCaption
End If
End If
Next c
DoCmd.Close acForm, FrmName, acSaveYes
Next z
MsgBox "Habe Fertig"
End Sub


Gruss und Dank

Philipp Stiefel
2005-04-12 13:58:13 UTC
Permalink
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
Ich weiß nicht ob das insgesamt so eine glorreiche Idee ist. Damit
verlierst du das Standardverhalten der Labels, die Textboxen
zugeordnet sind, die jeweilige Texbox zu aktivieren. Evtl. mag das
der ein oder andere Benutzer ganz gern.

Aber wenn du unbedingt möchtest kannst du mal versuchen das Form im
Entwurfsmodus zu öffnen und dann über VBA die Parent-Eigenschaft der
Labels auf Nothing oder auf den übergeordneten echten Parent (Form,
Register, Section, etc.) zu setzen. - Ungetestet.

Gruß
Phil
--
Bitte verwendet für Fragen zu Access mit DBMS-Server-Backends
die Newsgroup microsoft.public.de.access.clientserver! Danke!

Richtig zitieren im Usenet -> http://got.to/quote
Paul Rohorzka
2005-04-12 15:12:22 UTC
Permalink
Hallo Phil!
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
Du kannst das manuelle Vorgehen per Code ebenfalls tun:

Set txt = frm.Controls("TextBox1")
Set lbl = txt.Controls(0)
strLabelName = lbl.Name

lbl.InSelection = True
DoCmd.RunCommand AcCommand.acCmdCut
DoCmd.RunCommand AcCommand.acCmdPaste

Set lbl = frm.Controls(strLabelName)
lbl.InSelection = False

Was hast du eigentlich vor? Warum willst du auf welche Ereignisse der
zugeordneten Bezeichnungsfelder reagieren?

HTH,
Paul
--
http://www.softconcept.at - Development, Solutions, Tools
http://access.primary.at - Wiener Access-Stammtisch
Phil Belloni
2005-04-12 17:00:23 UTC
Permalink
Hi Paul
Post by Paul Rohorzka
Hallo Phil!
Post by Phil Belloni
Wie kann ich per VBA ein Label von einer Textbox trennen?
Wenn ich eine Textbox in ein Formular ziehe, bekommt es automatisch ein
Label dazu. Nun hat dieses Label aber keine Events.
Wenn ich diese trenne (Cut and Paste), habe ich die Events. Da ich etwa
hundert Formulare mit gesamthaft tausende solcher Labels habe, möchte ich
dies natürlich nicht manuel trennen. Nacher werde ich per VBA
me.label.ondblclick="EineFunction" diesen Labels ein Event zuweisen.
Set txt = frm.Controls("TextBox1")
Set lbl = txt.Controls(0)
strLabelName = lbl.Name
lbl.InSelection = True
DoCmd.RunCommand AcCommand.acCmdCut
DoCmd.RunCommand AcCommand.acCmdPaste
Set lbl = frm.Controls(strLabelName)
lbl.InSelection = False
Was hast du eigentlich vor? Warum willst du auf welche Ereignisse der
zugeordneten Bezeichnungsfelder reagieren?
HTH,
Paul
Danke für Deine / Eure Bemühungen

Meine Applikation (www.fertimed.ch) läuft nun in verschiedenen Sprachen. Die
verschiedenen Sprachen D, E, F usw. sind in einer Tabelle gespeichert. Habe
dafür eine Super kleine einfache Funktion geschrieben, welche alle!!
Controls (sinnvolle Properties, Caption, Controlltip, Statustext, Title
usw.) übersetzt bzw. mit der Aktuellen Sprache bzw. Text aus dieser
genannten Tabelle holt, auch Forms, Symbol- und Menüleisten.

Da mein Übersetzer nicht Mediziner ist, gibt es einige Übersetzungen die der
Arzt nachführen muss. Um es dem Arzt einfach zu machen, doppelclickt er auf
dieses "falsche" Label und im Event wird die Korrektur (Inputbox usw.)
durchgeführt und die genannte Tabelle aktualisiert.

Gruss Philippe
Loading...