| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Formulare, Steuerelemente und die weiter Verarbeitung im Modul (1725 mal gelesen)
|
User-Boris-100 Mitglied -
Beiträge: 11 Registriert: 06.06.2005
|
erstellt am: 29. Sep. 2005 15:11 <-- editieren / zitieren --> Unities abgeben:
Folgende Erweiterung zum letzten Problem: Ich möchte ein Quadrat zeichnen bei dem die Variable, die Seitenlänge, über eine Auswahl einer Listenbox erfolgt. Die Auswahl sind fest vorgegebene Werte z.B. (100,200,300,400 und 500). Problem 1: wie rufe ich im Modul ein Formular auf? 2: nach dem Selektieren der Kantenlänge muß der Wert ins Modul übergeben werden. wie? 3: wenn die Auswahl nur ein Text ist, wie kann ich dem Text eine Zahl zuordnen 4: 5: wenn ich eine Zahl als Ausgabewert bekomme, wie z.B. 2,4 oder 2,9 und zur weiteren Bearbeitung nur die Ziffer “2“ benötige muß es doch irgendein Befehl geben der dieses ausführt.... Gruß und Dank Boris ------------------ Boris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Sep. 2005 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für User-Boris-100
Hi Boris, warum 2x? zu 1: Code:
'******normalesModul******* Sub zeige_mir_die_Userform() UserForm1.show End Sub
zu 2./3.:
Code:
'******Userform1************ Private Sub ListBox1_Click() Dim i% Dim rect As AcadPolyline Dim insp#(2), L#, coo#(11) With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) Then L = CDbl(.List(i)) coo(0) = insp(0): coo(1) = insp(1): coo(2) = insp(2) coo(3) = coo(0) + L: coo(4) = coo(1): coo(5) = coo(2) coo(6) = coo(3): coo(7) = coo(4) + L: coo(8) = coo(2) coo(9) = coo(0): coo(10) = coo(7): coo(11) = coo(2) Set rect = ThisDrawing.ModelSpace.AddPolyline(coo) rect.Closed = True End If Next End With ThisDrawing.Regen acActiveViewport 'unload me 'würde die Form wieder schliessen End SubPrivate Sub UserForm_Initialize() Dim i% For i = 1 To 9 ListBox1.AddItem i * 100 Next End Sub
zu 4.: genau!;-)zu 5.:
Code:
?fix(2.5) 2 ?round(3.123,0) 3
Aber schau' Dir doch mal den Link von mir gestern an und nicht erst ab Tag18;-)Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Sep. 2005 17:01 <-- editieren / zitieren --> Unities abgeben: Nur für User-Boris-100
|
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 29. Sep. 2005 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für User-Boris-100
Hallo Boris, wo sollen wir Antworten ? Hier oder in dem von gestern ? Füg doch mal eine Userform im VBA Editor ein. In diese plazierst du eine Combobox eine Textbox und einen Button. Dann kopierst du das Beispiel in den Code-Editor. Ich glaube aus deiner Frage geht hervor das du dir nicht vorstellen kannst was da im VB Programm abgeht. Also... Es gibt da Objekte (z.B. eine Form oder eine Combobox etc) die haben Eigenschaften (wie Text) und diese Objekte können Ereignisse auslösen (Klick). Diese Ereignisse brauchst du zur Interaktion mit dem Programm. Du entscheidest wenn einer auf den Button drückt was passiert. Genauso kannst du reagieren wenn jemand einen Listeneintrag in einer Combobox auswählt. Jedes Objekt hat seine eigenen typischen Ereignisse. Starte das "Programm" mal nicht mit F5 sondern gehe alles im Einzelschritt mit F8 (jede Zeile!) durch. Dann kannst du genau verfolgen was passiert. Formular wird geladen: UserForm_Initialize Wahl eines Listeneintrages:ComboBox1_Click Einer klickt nicht sondern schreibt:ComboBox1_Change usw. Stelli
Code:
Option ExplicitPrivate Sub ComboBox1_Change() ' Text ist das sichbare in der Combobox Me.Caption = Me.ComboBox1.Text End Sub Private Sub ComboBox1_Click() Me.TextBox1.Text = Me.ComboBox1.Text End Sub Private Sub CommandButton1_Click() ' Rechne einen Wert Dim Zahl As Double Dim Ergebnis As Double ' Hole Zahl aus Combobox ' In der Combobox ist ein Text ' also mit val(Text) in Zahl wandeln Zahl = Val(Me.ComboBox1.Text) ' oder mit eigener Funktion Zahl = d_wert(Me.ComboBox1.Text) Ergebnis = Zahl * Zahl ' Ergebnis ausgeben einer Msgbox ' Festen Text mit & Variable verknüpfen MsgBox "Ergebnis ist: " & Str(Ergebnis), vbInformation End Sub Private Sub UserForm_Initialize() ' Alles löschen in der Liste Me.ComboBox1.Clear ' Gewünschte Einträge hinzufügen Me.ComboBox1.AddItem "100" Me.ComboBox1.AddItem "200" Me.ComboBox1.AddItem "300" Me.ComboBox1.AddItem "400" ' Jetzt ist die Form sichtbar End Sub Function d_wert(strWert As String) As Double Dim strTmp As String 'Temporärstring Dim i As Integer 'Hilfsvariable ' String auf eine Hilfsvariable speichern ' damit das Orginal so bleibt strTmp = strWert ' Suche nach Punkten i = InStr(strTmp, ".") ' Wenn punkt gefunden If i > 0 Then ' . gegen , tauschen Mid$(strTmp, i, 1) = "," End If ' Text in Zahl umwandeln d_wert = CDbl(strTmp) End Function
------------------ Warum lisp'eln wenn's auch anders geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 29. Sep. 2005 17:57 <-- editieren / zitieren --> Unities abgeben: Nur für User-Boris-100
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|