Hallo,
ich bin dabei, mir einen ASCII - Art Editor zu schreiben.
Die älteren User hier kennen bestimmt noch die .nfo Dateien,
die den Softwarepaketen beilagen und so schöne ASCII-Bildchen
enthielten.
Eine rudimentäre Version habe ich hier schon :
Code
Declare Handle imgList, hIcon, htb, Edit1, Oemfont, btn1, btn2, btn3, btn4
Declare String ldatei, sdatei, cp850
Declare Int ende
Declare Long zeichen[]
WindowTitle "ASCII - ARTS"
Window 1200, 600
Set("CharSet", 1)
imgList = @Create("ImageList", 16, 16)
@Create("OEMList", imgList)
oemfont = @Create("Font", "Terminal", 10, 0, 0, 0, 0)
Edit1 = @Create("MultiEdit", %HWnd, "", 100, 60, 520, 400)
btn1 = @Create("Button", %HWnd, "Load", 10, 60, 80, 25)
btn2 = @Create("Button", %HWnd, "Save", 10, 90, 80, 25)
btn3 = @Create("Button", %HWnd, "Print", 10, 120, 80, 25)
btn4 = @Create("Button", %HWnd, "Ende", 10, 150, 80, 25)
htb = @Create("Toolbar", %HWnd, imgList, @GetCount(imgList), 10, 2000, 1)
UserMessages $10
SetFont Edit1, oemfont
ende = 0
WhileNot ende
WaitInput
If @Clicked(btn1)
ldatei = @LoadFile$(%HWnd, "Datei laden", "NFO-Dateien|*.NFO")
If ldatei <> ""
SetText Edit1, ""
LeseDatei()
EndIf
ElseIf @Clicked(btn2)
' save
sdatei = SaveFile$(%HWnd, "Datei speichern", "NFO-Dateien|*.NFO", 1)
If sdatei <> ""
SchreibeDatei()
EndIf
ElseIf @Clicked(btn3)
'Print
MessageBox("Noch nicht implementiert !", "Info", 0)
ElseIf @Clicked(btn4)
ende = 1
EndIf
Select %MenuItem
CaseOf >= 2000
SetText Edit1, GetText$(Edit1) + Chr$(zeichen[%MenuItem - 2000])
EndSelect
Case %Key = 2 : ende = 1
Case %UMessage = $10 : ende = 1
EndWhile
Proc LeseDatei
ClearList
Move("FileToList", ldatei)
Move("ListToHandle", Edit1)
EndProc
Proc SchreibeDatei
ClearList
Move("HandleToList", Edit1)
Move("ListToFile", sdatei)
EndProc
Proc MaleStatic
Declare Int y
y = 5
StartPaint Static
UseFont "Terminal", 10, 0, 0, 0, 0
RectAngle 5, 5 - 515, 195
WhileLoop 0, GetCount(0)
DrawText 5, y, @GetString$(0, &LOOP)
Inc y, 12
EndWhile
EndPaint
EndProc
SubProc Create.OEMList
Parameters Handle il
Declare Handle bmp
zeichen[] = 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,\
196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,\
216, 217, 218, 219, 220, 221, 222, 223, 226, 227
WhileLoop 0, (SizeOf(zeichen[]) - 1)
MCls 16, 16, RGB(255, 255, 255)
StartPaint -1
UseFont "Terminal", 10, 0, 0, 0, 0
TextColor RGB(0, 0, 0), RGB(255, 255, 255)
DrawText 1, 1, Chr$(zeichen[&LOOP])
EndPaint
bmp = @Create("hSizedPic", 0, "&MEMBMP", 16, 16, 1)
ImageList("Add", il, bmp)
EndWhile
DeleteObject bmp
Return @GetCount(il)
EndProc
DeleteObject oemfont, imgList
End
Alles anzeigen
Was ich noch wissen wollte :
Wie kann ich in meinem Multi-Edit die aktuelle Cursor - Position herausbekommen ?
Ich möchte das gerne so haben, daß das angeklickte Zeichen auch an der aktuellen
Cursorposition geschrieben wird.
Im Moment kann ich mir zwar mit der Leertaste und Backspacetaste behelfen,
es wäre aber schöner, wenn es an der aktuellen Position ginge.
Hat jemand dazu eine Idee ?