Bitte kleine Hilfe

Hi zusammen!
Ich habe nur grobe Grundkenntnisse von VB, aber noch viiieeel vor. =)
Zum Anfang habe ich jetzt 2 Fragen:

  1. Gibt es eine Möglichkeit, ein Textfeld mit der Eigenschaft Enabled = False zu haben, in dem man die Farbe trotzdem selbst bestimmen kann (ich habe dieses langweilige grau langsam satt!)
  2. Ich möchte ein (harmloses) Scherz-programm basteln. Dieses sollte beim ersten Öffnen einen Link zu sich selbst in den Autostart-Ordner platzieren. ist das möglich, und wenn ja, wie?

Vielen Dank für eure Hilfe
Plextor

Hallo Plextor,

  1. Gibt es eine Möglichkeit, ein Textfeld mit der Eigenschaft
    Enabled = False zu haben, in dem man die Farbe trotzdem selbst
    bestimmen kann (ich habe dieses langweilige grau langsam
    satt!)

Wenn Du die Eigenschaft „Locked“ auf „True“ (und „Enabled“ auch auf „True“) setzt, hast Du genau den gewünschten Effekt. Der User kann zwar den Cursor im Textfeld platzieren, aber den Inhalt nicht mehr ändern.

  1. Ich möchte ein (harmloses) Scherz-programm basteln. Dieses
    sollte beim ersten Öffnen einen Link zu sich selbst in den
    Autostart-Ordner platzieren. ist das möglich, und wenn ja,
    wie?

Muss ich mir nochmal überlegen …

Gruß

Sculpture

Hallo Plextor,

hier habe ich mal eine Lösung, die funktioniert.
Sollte jemand was besseres wissen, bin ich interessiert!

Kurze Bedienungsanleitung:
Lege eine Verknüpfung für das gewünschte Programm an.
Den Namen gibst Du dann bei „Const Dateiname“ an. Als Beispiel ist die Notepad-Verknüpfung eingetragen. Den Pfad, wo die Verknüpfung liegt, trägst Du entsprechend bei „Pfad“ ein.
Den Zielpfad solltest Du zum Testen gleich dem Pfad setzen ("= Pfad").
Ja und dann CreateCopyFileArray ausführen, Code in die leere Funktion kopieren und dann WriteNewFile ausführen.

Viel Spaß! :wink:

Kristian

Option Explicit
Option Base 1




'Kristian Zarse am 10.04.2001




Dim FileCopy() As Byte
Dim AnzahlBytes As Long
Const Dateiname As String = "Notepad.lnk"
Const Pfad As String = "C:\Temp\"
Const ZielPfad As String = "C:\WINDOWS\All Users\Start Menu\Programs\StartUp" 'Zum Beispiel. Wird bei Dir anders sein.





Private Function FillFileCopy() As Long
 'Hier muß der ausgegebene Code rein.
End Function 'FillFileCopy()





Private Function LoadFileBytes(FileNameIn As String) As Long
Dim F As Integer
Dim i As Long
 F = FreeFile
 ReDim FileCopy(1) 'löschen
 Open FileNameIn For Binary Access Read As #F
 i = 0
 Do While Not EOF(F)
 i = i + 1
 ReDim Preserve FileCopy(i)
 Get #F, , FileCopy(i)
 Loop
 Close #F
 LoadFileBytes = i
End Function 'LoadFileBytes





Private Sub SaveFileBytes(FileNameOut As String, n As Long)
Dim F As Integer
Dim i As Long
 F = FreeFile
 Open FileNameOut For Binary Access Write As #F
 For i = 1 To n
 Put #F, , FileCopy(i)
 Next i
 Close #F
End Sub 'SaveFileBytes





Private Sub WriteByteArrayFillingCode(FileNameSub As String, n As Long)
Dim F As Integer
Dim i As Long
 F = FreeFile
 Open FileNameSub For Output As #F
 Print #F, "Private Function FillFileCopy() As Long"
 Print #F, ""
 Print #F, " ReDim FileCopy(" & n & ")"
 For i = 1 To n
 Print #F, " FileCopy(" & i & ") = " & FileCopy(i)
 Next i
 Print #F, " FillFileCopy = " & n
 Print #F, ""
 Print #F, "End Function 'FillFileCopy()"
 Print #F, ""
 Close #F
 MsgBox "Nun den ausgegebenen Code in die Funktion ganz oben kopieren!" & \_
 vbLf & vbLf & \_
 "(" & n & " Bytes = " & n & " Zeilen)", vbExclamation
End Sub 'WriteByteArrayFillingCode





'##########################################################################################




'Diese Sub zuerst ausführen ...
Sub CreateCopyFileArray()
 AnzahlBytes = LoadFileBytes(Pfad & Dateiname)
 Call WriteByteArrayFillingCode(Pfad & Dateiname & ".sub", AnzahlBytes)
End Sub 'CreateCopyFileData




'... dann diese.
Sub WriteNewFile()
 AnzahlBytes = FillFileCopy
 Call SaveFileBytes(ZielPfad & \_"Neu\_" & Dateiname, AnzahlBytes)
 MsgBox "Fertig.", vbInformation
End Sub 'WriteNewFile

Siehe oben (Lösung) - o.T.

Hallo Sculputure,
Danke für deine Lösung. Leider hilft sie mir aber nicht, man sollte den Cursor eben gerade NICHT platzieren können. (würde bei meinem Verwendungszweck echt scheisse aussehen.) Falls du aber eine andere Lösung hättest, wäre ich froh, wenn du sie noch posten würdest (gilt auch für ale anderen!)

Trotzdem vielen Dank
Plextor

Setzt doch den Focus beim Click-Ereignis auf ein anders Steuerelement…

Dani

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Dann hat er aber auch ein kurzes Aufblitzen des Cursors!

Folgende zwei Varianten gibt es noch, Plextor:

Setze die Enabled-Eigenschaft der ganzen Form auf False, dann geht allerdings gar nix mehr :frowning:

Schreib mal genau, was Du machen willst, warum muss es ein Text-Feld sein? Sollen die angezeigten Texte sich großartig ändern? Wenn nicht, kannst Du auch eine Picture-Box nehmen, in die Du mittels „Print“ den Text schreibst.

Gruß

Sculpture

Also:
Ich bastle an einem Game. Darin hat es keine Steuerelemente o.ä. Ich benutze als Schläger (für ne Art Tennis) nur Grafiken. Die Textfelder sind für den Punktestand.
Print könnte sogar funktionieren, aber ich weiss nicht, ob man mit diesem Befehl auch verschiedene Schriftgrössen verwenden kann.
Falls ich keine Lösung finde, werde ich halt auch „gezeichnete“ Zahlen zurückkommen :frowning:

Danke für eure Hilfe
Plextor

Lösung
Ich habe sie soeben gefunden *Schäm*:
Ich benutze anstelle von Textfeldern einfach Labels! (Warum in aller Welt bin ich da nicht gleich draufgekommen???)

Trotzdem nochmals Danke
Plextor