Seite 2 von 3
Verfasst: 15.01.2007 20:36
von Alves
Ich habs runtergeladen udn hab die exe nocht. Soll ic hsie auf meinen Webspace mal alden ,damit du sie ziehen kannst?
Edith: Habs jetzt mal hochgeladen:
http://kotn.ko.ohost.de/moreedit.exe
Verfasst: 15.01.2007 21:57
von Programie
Alves hat geschrieben:Ich habs runtergeladen udn hab die exe nocht. Soll ic hsie auf meinen Webspace mal alden ,damit du sie ziehen kannst?
Edith: Habs jetzt mal hochgeladen:
http://kotn.ko.ohost.de/moreedit.exe
DANKE!!!
Wenn ich die Exe hab könnte ich das Programm nochmal neu schreiben (Will halt das gleiche nochmal machen. Nur halt noch erweiterter

)
Ich hoffe, dass ich das Programm bis in etwa 2 Wochen soweit wie die Exe hab und etwa 1 Woche später wird´s Mehrsprachig!!!
Verfasst: 20.01.2007 16:51
von Programie
So. Ich hab MoreEdit mal mit ein paar neuen Funktionen neu geschrieben.
Ich hab jetzt noch 5 Probleme:
1. Wie kann ich den markierten Text in die Zwischenablage kopieren?
2. Wie kann ich den Text aus der Zwischenablage an der aktuellen Cursorposition im Editor einfügen?
3. Wie kann ich den ganzen Textinhalt im Editor markieren?
4. Wie kann ich die aktuelle Cursorposition (Spalte und Zeile) im Editor rausfinden?
5. Wie kann ich den Text vom Editor mit WinAPI ausdrucken (Ohne ist es mir zu kompliziert)?
Verfasst: 20.01.2007 17:06
von Thorsten1867
Programie hat geschrieben:So. Ich hab MoreEdit mal mit ein paar neuen Funktionen neu geschrieben.
Ich hab jetzt noch 5 Probleme:
1. Wie kann ich den markierten Text in die Zwischenablage kopieren?
2. Wie kann ich den Text aus der Zwischenablage an der aktuellen Cursorposition im Editor einfügen?
3. Wie kann ich den ganzen Textinhalt im Editor markieren?
4. Wie kann ich die aktuelle Cursorposition (Spalte und Zeile) im Editor rausfinden?
5. Wie kann ich den Text vom Editor mit WinAPI ausdrucken (Ohne ist es mir zu kompliziert)?
1.
Code: Alles auswählen
Procedure.l Editor_GetSelLength(GID)
sel.CHARRANGE
SendMessage_(GadgetID(GID),$0434,0, @sel)
ProcedureReturn sel\cpMax - sel\cpMin
EndProcedure
Procedure.s Editor_GetSelText(GID)
text$ = Space(Editor_GetSelLength(GID) + 1)
SendMessage_(GadgetID(GID), $043E, 0,@text$)
ProcedureReturn text$
EndProcedure
SetClipboardText(Editor_GetSelText(GID))
2.
Verfasst: 20.01.2007 17:07
von RSBasic
@Programie
>1. Wie kann ich den markierten Text in die Zwischenablage kopieren?
Code: Alles auswählen
Define.CHARRANGE sel
SendMessage_(GadgetID(1),#EM_EXGETSEL,0,sel)
>2. Wie kann ich den Text aus der Zwischenablage an der aktuellen >Cursorposition im Editor einfügen?
Code: Alles auswählen
SetClipboardText(???)
SendMessage_(GadgetID(1), #WM_PASTE, 0, 0)
>3. Wie kann ich den ganzen Textinhalt im Editor markieren?
>4. Wie kann ich die aktuelle Cursorposition (Spalte und Zeile) im Editor >rausfinden?
Für Zeichen:
Für Zeile:
Code: Alles auswählen
SendMessage_(GadgetID(1), #EM_EXGETSEL, 1, range.charrange)
CurrentLineIndex = SendMessage_(GadgetID(1), #EM_EXLINEFROMCHAR, 0, range\cpMin)
y = CurrentLineIndex + 1
CurrentLineStartIndex = SendMessage_(GadgetID(1), #EM_LINEINDEX, CurrentLineIndex, 0)
x = range\cpMax - CurrentLineStartIndex + 1
Str(x)
>5. Wie kann ich den Text vom Editor mit WinAPI ausdrucken (Ohne ist >es mir zu kompliziert)?
Kein Plan
Verfasst: 20.01.2007 17:20
von Programie
@Thorsten1867 Und @RSBasic
Danke! Das hab ich gesucht

Verfasst: 20.01.2007 17:27
von Marvin
4. @RSBasic: Man bekommt doch eigentlich nur eine Zahl als String zurück, die nichts mit der aktuellen Position zu tun hat, sondern nur die Anzahl der Zeichen im Gadget beinhaltet, oder?
Einfach mal ausprobieren:
Code: Alles auswählen
SendMessage(GadgetID(#Editor),#EM_EXGETSEL,0,@char.CHARRANGE)
Line=SendMessage(GadgetID(#Editor),#EM_EXLINEFROMCHAR,0,char\cpMin)
In Line müsste dann die Zeile (Erste Zeile = 0) stehen...
Für die Position des Zeichens in der Zeile könnte folgendes klappen:
Code: Alles auswählen
StartChar=SendMessage(GadgetID(#Editor),#EM_LINEINDEX,-1,0) ;Erster Buchstabe der Zeile
PosInLine=char\cpMin-StartChar
Verfasst: 21.01.2007 13:26
von Programie
@Marvin
Die 2 Codes funktionieren! Danke!
@All
Hab einen Code gefunden, mit dem man den Text ausdrucken kann (Aus dem CodeArchiv). Hab ihn so geändert, dass man eine Textdatei statt einem Gadget angeben kann, aber jetzt geht er nicht mehr.
Hier der Code:
Code: Alles auswählen
Structure DInfo1
cbSize.l
dwtype.l
lpszDocname.l
lpszOutput.l
lpszDataType.l
EndStructure
Procedure PrintTextFile(FileName$,JobName$,Font,FrontColor,BackColor)
Window=OpenWindow(#PB_Any,#False,#False,#False,#False,JobName$,#PB_Window_Invisible)
If IsWindow(Window)
If CreateGadgetList(WindowID(Window))
Editor=EditorGadget(#PB_Any,#False,#False,#False,#False,#PB_Editor_ReadOnly)
EndIf
EndIf
If IsGadget(Editor)
If IsFont(Font)
SetGadgetFont(Editor,FontID(Font))
EndIf
SetGadgetColor(Editor,#PB_Gadget_FrontColor,FrontColor)
SetGadgetColor(Editor,#PB_Gadget_BackColor,BackColor)
File=ReadFile(#PB_Any,FileName$)
If IsFile(File)
Repeat
AddGadgetItem(Editor,#PB_Any,ReadString(File,#PB_Ascii))
Until Eof(File)
CloseFile(File)
EndIf
DC=PrintRequester()
cRect.RECT
FormatRange.FORMATRANGE
Docinfo.DInfo1
DocInfo\cbSize=SizeOf(DInfo1)
DocInfo\dwType=#False
DocInfo\lpszDocName=@JobName$
DocInfo\lpszOutput=#False
DocInfo\lpszDataType=#False
StartDoc_(DC,Docinfo)
MaxLen=Len(GetGadgetText(Editor))-SendMessage_(GadgetID(Editor),#EM_GETLINECOUNT,#False,#False)
OldMapMode=GetMapMode_(DC)
SetMapMode_(DC,#MM_TWIPS)
OffsetX=GetDeviceCaps_(DC,#PHYSICALOFFSETX)
OffsetY=-GetDeviceCaps_(DC,#PHYSICALOFFSETY)
HorzRes=GetDeviceCaps_(DC,#HORZRES)
VertRes=-GetDeviceCaps_(DC,#VERTRES)
SetRect_(cRect,OffsetX,OffsetY,HorzRes,VertRes)
DPtoLP_(DC,cRect,2)
SetMapMode_(DC,OldMapMode)
FormatRange\hdc=DC
FormatRange\hdcTarget=DC
FormatRange\rc\left=cRect\left
FormatRange\rc\top=cRect\top
FormatRange\rc\right=cRect\right
FormatRange\rc\bottom=cRect\bottom
FormatRange\rcPage\left=cRect\left
FormatRange\rcPage\top=cRect\top
FormatRange\rcPage\right=cRect\right
FormatRange\rcPage\bottom=cRect\bottom
Repeat
StartPage_(DC)
FormatRange\chrg\cpMax=#PB_Any
LastChar=SendMessage_(GadgetID(Editor),#EM_FORMATRANGE,#True,@FormatRange)
FormatRange\chrg\cpMin=LastChar
SendMessage_(GadgetID(Editor),#EM_DISPLAYBAND,#False,cRect)
EndPage_(DC)
Page+1
Until LastChar>=MaxLen Or LastChar=#PB_Any
EndDoc_(DC)
SendMessage_(GadgetID(Editor),#EM_FORMATRANGE,#False,#False)
EndIf
ProcedureReturn Page
EndProcedure
Verfasst: 27.01.2007 18:07
von Programie
Hab die neue Version (1.1) hochgeladen.
Es fehlen nur noch ein paar Funktionen und die Hilfedateien.
Die Netzwerkfunktion funktioniert auch noch nicht richtig.
Wer Bugs findet: Hier ist der richtige Ort!
Download
Quellcode kommt auch demnächst!
Verfasst: 28.03.2007 11:16
von RSBasic
Warum gibt es nen Installer aber kein Deinstaller?
Da muss ich alles manuell entfernen (Ordner, Startmenüeinträge und Verknüpfung)