Quantcast
Channel: Themen - Paules-PC-Forum.de
Viewing all articles
Browse latest Browse all 42347

MultiEdit

$
0
0
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 :

Quellcode

  1. Declare Handle imgList, hIcon, htb, Edit1, Oemfont, btn1, btn2, btn3, btn4
  2. Declare String ldatei, sdatei, cp850
  3. Declare Int ende
  4. Declare Long zeichen[]
  5. WindowTitle "ASCII - ARTS"
  6. Window 1200, 600
  7. Set("CharSet", 1)
  8. imgList = @Create("ImageList", 16, 16)
  9. @Create("OEMList", imgList)
  10. oemfont = @Create("Font", "Terminal", 10, 0, 0, 0, 0)
  11. Edit1 = @Create("MultiEdit", %HWnd, "", 100, 60, 520, 400)
  12. btn1 = @Create("Button", %HWnd, "Load", 10, 60, 80, 25)
  13. btn2 = @Create("Button", %HWnd, "Save", 10, 90, 80, 25)
  14. btn3 = @Create("Button", %HWnd, "Print", 10, 120, 80, 25)
  15. btn4 = @Create("Button", %HWnd, "Ende", 10, 150, 80, 25)
  16. htb = @Create("Toolbar", %HWnd, imgList, @GetCount(imgList), 10, 2000, 1)
  17. UserMessages $10
  18. SetFont Edit1, oemfont
  19. ende = 0
  20. WhileNot ende
  21. WaitInput
  22. If @Clicked(btn1)
  23. ldatei = @LoadFile$(%HWnd, "Datei laden", "NFO-Dateien|*.NFO")
  24. If ldatei <> ""
  25. SetText Edit1, ""
  26. LeseDatei()
  27. EndIf
  28. ElseIf @Clicked(btn2)
  29. ' save
  30. sdatei = SaveFile$(%HWnd, "Datei speichern", "NFO-Dateien|*.NFO", 1)
  31. If sdatei <> ""
  32. SchreibeDatei()
  33. EndIf
  34. ElseIf @Clicked(btn3)
  35. 'Print
  36. MessageBox("Noch nicht implementiert !", "Info", 0)
  37. ElseIf @Clicked(btn4)
  38. ende = 1
  39. EndIf
  40. Select %MenuItem
  41. CaseOf >= 2000
  42. SetText Edit1, GetText$(Edit1) + Chr$(zeichen[%MenuItem - 2000])
  43. EndSelect
  44. Case %Key = 2 : ende = 1
  45. Case %UMessage = $10 : ende = 1
  46. EndWhile
  47. Proc LeseDatei
  48. ClearList
  49. Move("FileToList", ldatei)
  50. Move("ListToHandle", Edit1)
  51. EndProc
  52. Proc SchreibeDatei
  53. ClearList
  54. Move("HandleToList", Edit1)
  55. Move("ListToFile", sdatei)
  56. EndProc
  57. Proc MaleStatic
  58. Declare Int y
  59. y = 5
  60. StartPaint Static
  61. UseFont "Terminal", 10, 0, 0, 0, 0
  62. RectAngle 5, 5 - 515, 195
  63. WhileLoop 0, GetCount(0)
  64. DrawText 5, y, @GetString$(0, &LOOP)
  65. Inc y, 12
  66. EndWhile
  67. EndPaint
  68. EndProc
  69. SubProc Create.OEMList
  70. Parameters Handle il
  71. Declare Handle bmp
  72. zeichen[] = 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,\
  73. 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,\
  74. 216, 217, 218, 219, 220, 221, 222, 223, 226, 227
  75. WhileLoop 0, (SizeOf(zeichen[]) - 1)
  76. MCls 16, 16, RGB(255, 255, 255)
  77. StartPaint -1
  78. UseFont "Terminal", 10, 0, 0, 0, 0
  79. TextColor RGB(0, 0, 0), RGB(255, 255, 255)
  80. DrawText 1, 1, Chr$(zeichen[&LOOP])
  81. EndPaint
  82. bmp = @Create("hSizedPic", 0, "&MEMBMP", 16, 16, 1)
  83. ImageList("Add", il, bmp)
  84. EndWhile
  85. DeleteObject bmp
  86. Return @GetCount(il)
  87. EndProc
  88. DeleteObject oemfont, imgList
  89. 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 ?

Viewing all articles
Browse latest Browse all 42347