Oscar : Loderunner. Wieso habe ich das noch nicht? LOL Oder geht das nicht auf den heutigen PC's
LG, Lina.
Hallo Lina!
Doch, das läuft auch auf'm PC und ist mittlerweile sogar Freeware:
Auf'm C64 war es damals aber mit Sound.
Oscar : Loderunner. Wieso habe ich das noch nicht? LOL Oder geht das nicht auf den heutigen PC's
LG, Lina.
Hallo Lina!
Doch, das läuft auch auf'm PC und ist mittlerweile sogar Freeware:
Auf'm C64 war es damals aber mit Sound.
Mit WinMove() kannst Du das Fenster an jede beliebige Stelle verschieben.
Nach reichlich lesen in der 'Microsoft Office 2003 Web Components VBA Language Reference' und diversen 'Trial And Error'-Experimenten habe ich es jetzt geschaft, die Tabelle zu speichern.
Ich will euch mein vorläufiges Ergebnis nicht vorenthalten, deshalb hier das Script:
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $MaxPlayer = 20, $NCount = 8
Global $aNames[$MaxPlayer] = ['A','B','C','D','E','F','G','H']; hier sind die Namen der Mitspieler gespeichert
Global $aFM[$MaxPlayer] = [True, True, True, False, False, False, False, False]; Frau/Mann
Global $GUI = GUICreate('Test', 800, 600, -1, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Global $oExcel = ObjCreate('OWC10.Spreadsheet')
If Not IsObj($oExcel) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
$oSheet = $oExcel.Worksheets(1)
Const $ssConstants = $oExcel.Constants
Global $Excel_ctrl = GUICtrlCreateObj($oExcel, 30, 10, 700, 570)
GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetBKColor(-1, 0x444444)
With $oExcel
.AutoFit=0
.DisplayGridlines=-1
.DisplayHorizontalScrollBar=-1
.DisplayTitleBar=0
.DisplayToolbar=0
.DisplayVerticalScrollBar=0
.EnableEvents=-1
.MoveAfterReturn=-1
.RightToLeft=0
.ViewableRange='1:30'
EndWith
With $oSheet
.Columns('A:A').ColumnWidth = 12
.Columns('B:U').ColumnWidth = 8
.Rows('1:1').RowHeight = 25
.Range('A1:A30').Interior.Color = 0x88ff88
.Range('A2:A30').HorizontalAlignment = -4152; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A25:U25').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
.Range('A1:U1').Font.Bold = TRUE
.Range('A25:U25').Font.Bold = TRUE
For $i = 66 TO 85
.Range('A' & $i-64).value = $i-65
.Range(Chr($i) & '1').value = $aNames[$i-66] & StringLeft(' ', 1*($aNames[$i-66]=''))
.Range(Chr($i) & '25').formula = '=' & Chr($i) & '1'
If $aFM[$i-66] And $i-66 < $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x8888ff
.Range(Chr($i) & '25').Interior.Color = 0x8888ff
Else
.Range(Chr($i) & '1').Interior.Color = 0xff8888
.Range(Chr($i) & '25').Interior.Color = 0xff8888
EndIf
If $i-66 >= $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x88ffff
.Range(Chr($i) & '25').Interior.Color = 0x88ffff
EndIf
.Range(Chr($i) & '24').formula = '=SUM(' & Chr($i) & '2:' & Chr($i) & '21)'
Next
.Range('A1').value = 'Name'
.Range('A22').value = 'Pumpen'
.Range('A23').value = 'Alle Neune'
.Range('A24').value = 'Punkte'
.Range('A25').value = 'Name'
EndWith
GUISetState()
$oExcel.Export ('C:\temp\test.xls', $ssConstants.ssExportActionNone, $ssConstants.ssExportAsAppropriate)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(10)
WEnd
Func _End()
Exit
EndFunc
Nein, das führt zum fast gleichen Fehler. Der Zeiger zeigt dann nur hinter die Klammern.
Ich denke, das muss was mit dem: Global $oExcel = ObjCreate('OWC10.Spreadsheet') zu tun haben.
Wenn ich das ändere in: Global $oExcel = ObjCreate('Excel.Application') und dann $oExcel.Visible = 1, dann öffnet sich Excel und AutoIt meldet auch keinen Fehler bei: Global $oBook = $oExcel.Workbooks.Add, sondern erst später beim: .AutoFit=0 nach dem 'With'.
Ich weiss aber nicht, wie ich das ändern kann/muss. Es soll ja auf jeden Fall eine eingebettete Excel-Tabelle sein.
Ich krieg's irgendwie nicht auf die Reihe.
Wenn ich das so (unten) ändere, kommt immer eine Fehlermeldung:
libExamplesGUI.exe
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $MaxPlayer = 20, $NCount = 8
Global $aNames[$MaxPlayer] = ['A','B','C','D','E','F','G','H']; hier sind die Namen der Mitspieler gespeichert
Global $aFM[$MaxPlayer] = [True, True, True, False, False, False, False, False]; Frau/Mann
Global $GUI = GUICreate('Test', 800, 600, -1, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Global $oExcel = ObjCreate('OWC10.Spreadsheet')
If Not IsObj($oExcel) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
Global $oBook = $oExcel.Workbooks.Add
Global $oSheet = $oBook.Worksheets(1)
Global $oExcel_ctrl = GUICtrlCreateObj($oExcel, 30, 10, 700, 570)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetBKColor(-1, 0x444444)
With $oExcel
.AutoFit=0
.DisplayGridlines=-1
.DisplayHorizontalScrollBar=-1
.DisplayTitleBar=0
.DisplayToolbar=0
.DisplayVerticalScrollBar=0
.EnableEvents=-1
.MoveAfterReturn=-1
.RightToLeft=0
.ViewableRange='1:30'
.Columns('A:A').ColumnWidth = 12
.Columns('B:U').ColumnWidth = 8
.Rows('1:1').RowHeight = 25
.Range('A1:A30').Interior.Color = 0x88ff88
.Range('A2:A30').HorizontalAlignment = -4152; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A25:U25').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
.Range('A1:U1').Font.Bold = TRUE
.Range('A25:U25').Font.Bold = TRUE
For $i = 66 TO 85
.Range('A' & $i-64).value = $i-65
.Range(Chr($i) & '1').value = $aNames[$i-66] & StringLeft(' ', 1*($aNames[$i-66]=''))
.Range(Chr($i) & '25').formula = '=' & Chr($i) & '1'
If $aFM[$i-66] And $i-66 < $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x8888ff
.Range(Chr($i) & '25').Interior.Color = 0x8888ff
Else
.Range(Chr($i) & '1').Interior.Color = 0xff8888
.Range(Chr($i) & '25').Interior.Color = 0xff8888
EndIf
If $i-66 >= $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x88ffff
.Range(Chr($i) & '25').Interior.Color = 0x88ffff
EndIf
.Range(Chr($i) & '24').formula = '=SUM(' & Chr($i) & '2:' & Chr($i) & '21)'
Next
.Range('A1').value = 'Name'
.Range('A22').value = 'Pumpen'
.Range('A23').value = 'Alle Neune'
.Range('A24').value = 'Punkte'
.Range('A25').value = 'Name'
EndWith
GUISetState()
While 1
Sleep(10)
WEnd
Func _End()
Exit
EndFunc
Wie muss das richtig aussehen?
Ich habe eine eingebettete Excel-Tabelle (siehe Beispiel unten) und möchte diese, nachdem sie ausgefüllt ist, abspeichern und später auch wieder laden können.
Mit Objekten habe ich aber noch nicht viel gemacht und somit wenig Ahnung. Wie kriege ich das mit dem speichern und laden hin?
Edit: Man benötigt Excel in der XP-Version für dieses Beispiel.
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $MaxPlayer = 20, $NCount = 8
Global $aNames[$MaxPlayer] = ['A','B','C','D','E','F','G','H']; hier sind die Namen der Mitspieler gespeichert
Global $aFM[$MaxPlayer] = [True, True, True, False, False, False, False, False]; Frau/Mann
Global $GUI = GUICreate('Test', 800, 600, -1, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Global $Obj1 = ObjCreate('OWC10.Spreadsheet')
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
Global $Obj1_ctrl = GUICtrlCreateObj($Obj1, 30, 10, 700, 570)
GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetBKColor(-1, 0x444444)
With $Obj1
.AutoFit=0
.DisplayGridlines=-1
.DisplayHorizontalScrollBar=-1
.DisplayTitleBar=0
.DisplayToolbar=0
.DisplayVerticalScrollBar=0
.EnableEvents=-1
.MoveAfterReturn=-1
.RightToLeft=0
.ViewableRange='1:30'
.Columns('A:A').ColumnWidth = 12
.Columns('B:U').ColumnWidth = 8
.Rows('1:1').RowHeight = 25
.Range('A1:A30').Interior.Color = 0x88ff88
.Range('A2:A30').HorizontalAlignment = -4152; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A25:U25').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
.Range('A1:U1').Font.Bold = TRUE
.Range('A25:U25').Font.Bold = TRUE
For $i = 66 TO 85
.Range('A' & $i-64).value = $i-65
.Range(Chr($i) & '1').value = $aNames[$i-66] & StringLeft(' ', 1*($aNames[$i-66]=''))
.Range(Chr($i) & '25').formula = '=' & Chr($i) & '1'
If $aFM[$i-66] And $i-66 < $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x8888ff
.Range(Chr($i) & '25').Interior.Color = 0x8888ff
Else
.Range(Chr($i) & '1').Interior.Color = 0xff8888
.Range(Chr($i) & '25').Interior.Color = 0xff8888
EndIf
If $i-66 >= $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x88ffff
.Range(Chr($i) & '25').Interior.Color = 0x88ffff
EndIf
.Range(Chr($i) & '24').formula = '=SUM(' & Chr($i) & '2:' & Chr($i) & '21)'
Next
.Range('A1').value = 'Name'
.Range('A22').value = 'Pumpen'
.Range('A23').value = 'Alle Neune'
.Range('A24').value = 'Punkte'
.Range('A25').value = 'Name'
EndWith
GUISetState()
While 1
Sleep(10)
WEnd
Func _End()
Exit
EndFunc
Aber wirklich Tippfaule machen das eh so:
[autoit]
$Char = GUICtrlCreateCombo("Charakter", 232, 8, 169, 25)
GUICtrlSetData(-1,"Assasine|Derwisch|Elementarmagier|Krieger|Mesmer|Mönch|Nekromant|Paragon|Ritualist|Waldläufer")
Mein Lieblingsspiel aus den 80ern war Loderunner. Habe ich damals stundenlang auf'm C64 gespielt.
Ich würde mal tippen, dass der Pfad nicht stimmt. Liegt denn das Verzeichnis 'Rüstungen' im Scriptverzeichnis?
AutoIt macht aber manchmal auch Probleme mit relativen Pfaden. Füge am besten mal @ScriptDir vor die Bilder ein.
Das ist cool! Genau so eine Funktion fehlt(e) in AutoIt.
Gleich mal abgespeichert...
Es gäbe noch diese Möglichkeit:
[autoit]
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $close
$pc=GUICtrlRead($inputbox)
GUIDelete()
Return $pc
; Case $msg[0] = -7 And $msg[3] > 12 And $msg[3] < 390 And $msg[4] > 32 And $msg[4] < 307
; GUICtrlSetData($inputbox, $listboxtext[_GUICtrlListView_SetSelectionMark ($hListView,1)][0])
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $GUI
ExitLoop
EndSelect
If _GUICtrlListView_GetSelectedIndices($hListView) <> '' Then
GUICtrlSetData($inputbox, $listboxtext[_GUICtrlListView_SetSelectionMark ($hListView,1)][0])
ControlListView("Bitte PC auswählen", '', $hListView, 'SelectClear')
EndIf
WEnd
Aber richtig überzeugend ist die auch nicht. :wacko:
Hab's gerade ausprobiert. Funktioniert!
Ein Beep, wenn's fertig ist, wäre nicht schlecht.
Jo, da stimme ich Dir voll und ganz zu. Völlig genial! Danke für den Tip!
Eine Zeile unter dem Label musst Du das hier einfügen:
[autoit]
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Wir können ja beides machen:
das Kürzeste (Bytegröße) und das mit dem besten Effekt.
Hab nämlich sowieso schon zwei Versionen.
Edit: Das mit den externen DLLs finde ich nicht so gut. Es sollte schon mit AutoIt sein.
@Xeno: Ja, ich habe jetzt die Icons aus einem Iconpack. Etwas nachbearbeitet. Danke, für den Tip.
@progandy: Dein Script habe ich und benutze es auch. Sehr Hilfreich!
GtaSpider : Der TotalCommander ist mein absolutes Lieblingsprogramm. Läuft immer im Hintergrund. IclView kannte ich aber noch nicht. Danke!
@Ritzelrocker: Die Icons aus der 'Progman.exe' sind irgendwie nicht so der Brüller. Etwas....veraltet...
eukalyptus: Igitt! Vista! Bäh!
Zum umwandeln eines Bilds in ein Icon kann man auch IrfanView benutzen. Mache ich immer so.
Ok! Herausforderung angenommen und fertig!
Gibt's einen Abgabetermin? An wen soll ich das jetzt schicken?
Schau Dir mal dieses Beispiel an:
[autoit]
GUICreate("Example")
$edit = GUICtrlCreateEdit ("", 10,10)
[/autoit][autoit][/autoit][autoit]GUISetState()
[/autoit][autoit][/autoit][autoit]$hallo = 100
[/autoit][autoit][/autoit][autoit]While $hallo >0
Sleep(500)
$hallo = $hallo -1
GUICtrlSetData($edit, $hallo)
Wend
@Dönn3y: Wieso muss man da 2 Stunden suchen?
Es ist doch kein Problem ein GUI-Fenster zu erstellen, dort dann ein Label und mit GUICtrlSetData schreibst Du die Variable ($ZAHL) in das Label. Das dauert keine 5 Minuten und Du suchst 2 Stunden lang?
Oder willst Du nur, dass jemand anderes für Dich das Script schreibt?
Das mit dem TreeView hat sich, glaube ich, erledigt. Das ist mir zu langsam.
Es gibt aber dennoch eine neue Version: 1.5.0.1 (siehe oben).