Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Visual Basic 6.0 / VBA » Source ansprechen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.11.2004, 15:28 Uhr
sXene[WARE]



Hi!
Kann man in einem Textfeld den Source seiner eigenen Application anzeigen?
z.b.

Visual Basic:
Text1.Text = Me.Source


oder sowas?

und kann man einen befehl wie z.b.
Me.Caption = InputBox "Bitte Namen eingeben!"
in einem textfeld verstauen, (Text1) und als Source ausführen?
also

Visual Basic:
Private Sub Command1_Click()
ExecuteSource Text1.Text
End Sub



so dass der also die input box anzeigt??

wie geht das? und geht das überhaupt?
--
sXene.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.11.2004, 18:19 Uhr
Pablo
Supertux
(Operator)



Zitat von sXene:
Hi!
Kann man in einem Textfeld den Source seiner eigenen Application anzeigen?
z.b.

Visual Basic:
Text1.Text = Me.Source


und kann man einen befehl wie z.b.
Me.Caption = InputBox "Bitte Namen eingeben!"
in einem textfeld verstauen, (Text1) und als Source ausführen?
also

Visual Basic:
Private Sub Command1_Click()
ExecuteSource Text1.Text
End Sub



so dass der also die input box anzeigt??

wie geht das? und geht das überhaupt?



Nein.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 04.11.2004 um 18:20 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.11.2004, 18:20 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das erste glaub ich nicht, ka ob VB eine Art "Eval"-Funktion mitliefert. Jedenfalls wäre dann das "einpacken" des VB-Interpreters nötig wenn man Source ausführen wollte. (Such mal google ab, evtl gibts da echt was, evtl ein ocx oder so)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.02.2005, 13:05 Uhr
Audron-AT-www
http://www.sXene.de Audron@sxene.de
(Operator)


Diesen Thread wollte ich nun mal wieder ansprechen... Pablo sagte, dass es nicht geht, hat damit aber unrecht
Seht euch mal folgendes an...

Ich habe mich gefragt, wie man z.B. eine Form, deren Name in einer String-Variable steht zur Laufzeit laden und anzeigen kann? Oder wie man eine Formel in einer TextBox ohne zusätzlichen Parser ausrechnen? Wie das geht, habe ich dann rausgefunden... Und damit Pablo mal wieder übertrumpft

Die Datei vba6.dll (Bestandteil der VB6-Installation) beinhaltet eine unscheinbare aber mächtige Funktion:


Visual Basic:
' Achtung: nur für VB6!!!
Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
  ByVal StringToExec As Long, _
  ByVal Any1 As Long, _
  ByVal Any2 As Long, _
  ByVal CheckOnly As Long) As Long



Mit dieser Funktion ist es möglich, sowohl VB-Code, der in einem String gespeichert ist, zur Laufzeit auszuführen - so als befände sich der VB-Code direkt im Projekt.

Anwendungsbeispiel 1: Formular aus String öffnen
Bei der Recherche nach einer Lösung dieses Problems bin ich auf eben die oben genannte Funktion EbExecuteLine gestossen. Mit dieser Funktion lässt sich die Form dann wie folgt anzeigen:


Visual Basic:
' VB-Code mit dynamischen Formname
Dim sCode As String
sCode = Rs("Formname") & ".Show"

Dim bResult As Boolean
bResult = (EbExecuteLine(StrPtr(sCode), 0&, 0&, 0&) = 0)



Zusätzlich verpacken wir die EBExecuteLine-Funktion in eine eigene VB-Funktion, so dass wir nicht immer alle Parameter angeben müssen:


Visual Basic:
' VB-Code ausführen
Public Function VBExecute(sCode As String) As Boolean
  
  VBExecute = (EbExecuteLine(StrPtr(sCode), 0&, 0&, 0&) = 0)
End Function



Um beim obigen Beispiel zu bleiben, erstellen wir uns eine Funktion, mit der sich eine Form aus einer String-Variable aufrufen lässt, wobei wir als Rückgabewert dann das Form-Objekt zurückbekommen:


Visual Basic:
' VB-Form anhand Variable! zuweisen
Public Function VBForm(ByVal sFormName As String) As Form
  Dim oForm As Form
  
  If VBExecute("Load " & sFormName) Then
    For Each oForm In Forms
      If oForm.Name = sFormName Then
        Set VBForm = oForm
        Exit For
      End If
    Next
  End If
End Function



Der Aufruf sieht dann wie folgt aus:


Visual Basic:
Dim oForm As Form
Set oForm = VBForm(Rs("Formname"))
oForm.Show



Weiteres Beispiel zur API-Funktion
Natürlich kann man mit der EbExecuteLine-API noch viel mehr anstellen :-)

Rechnen - ja natürlich - rechnen kann man damit auch *grinz*
Man platziere eine TextBox, ein Label, sowie einen CommandButton auf die Form. Zur Laufzeit gibt man dann in die TextBox eine Formel ein, z.B.: (5+8)*3^2. Beim Klick auf den CommandButton soll die Formel ausgerechnet und im Label angezeigt werden:


Visual Basic:
Private Sub Command1_Click()
  VBExecute "Form1.Label1.Caption = CStr(" & Text1.Text & ")"
End Sub



Wichtiger Hinweis!
Die EBExecuteLine-Funktion lässt sich nur innerhalb der VB-IDE verwenden. In der kompilierten Version (EXE-Datei) wird eigenartigerweise immer ein Speicher-Fehler produziert.

Ich hoffe damit habe ich euch weitergeholfen
--
Mit freundlichen Grüßen
Audron, audron@sxene.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Visual Basic 6.0 / VBA ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: