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 :D )
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.

Code: Alles auswählen

SendMessage_(GadgetID(editor),#EM_REPLACESEL,0,Text$)

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?

Code: Alles auswählen

SendMessage_(GadgetID(1),#EM_SETSEL,0,-1)
>4. Wie kann ich die aktuelle Cursorposition (Spalte und Zeile) im Editor >rausfinden?
Für Zeichen:

Code: Alles auswählen

Str(Len(GetGadgetText(1)))
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 :allright:

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! :allright:


@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)