RTF Mini Editor geht nicht in BETA

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

RTF Mini Editor geht nicht in BETA

Beitrag von Velindos »

Hallo Leute,
habe mir gerade das neue PureBasic 5.11(x64) Beta installiert und meinen mini rtf Editor probiert, funkt aber nicht! Kann mir da jemand helfen,

* Codec geändert

Code: Alles auswählen

EnableExplicit
;- CONSTANTEN
Enumeration
  #Editor_Window
  #S_TextZoom_Notiz
  #Editor_StyleF
  #Editor_StyleY
  #Editor_StyleB
  #Editor_StyleI
  #Editor_StyleU
  #Editor_StyleFC
  #Editor_StyleBC
  #Editor_Number
  #Editor_Print
  #Editor_AlignR
  #Editor_AlignC
  #Editor_AlignL
  
  #Editor_Menu
  #Editor_MenuNew
  #Editor_MenuOpen
  #Editor_MenuSave
  #Editor_MenuQuit
  
  #Editor_ImageFC
  #Editor_ImageBC
  
  #Editor_StyleS                ;Neue Funktionen
  #ButtonSuchen
  #StringSuchen
  #ButtonWordPad
  #ButtonCalculator
  #Font_Suchfeld
  
  #S_PopUp_TextZoom            ;CreatePopupMenu
  #S_PopUp_TextZoom_Rueckgangig
  #S_PopUp_TextZoom_Ausschneiden
  #S_PopUp_TextZoom_Kopieren
  #S_PopUp_TextZoom_Einfuegen
  #S_PopUp_TextZoom_Loeschen
  #S_PopUp_TextZoom_Markieren
  #S_PopUp_TextZoom_Write
  #S_PopUp_TextZoom_Sonderzeichen
  #S_PopUp_TextZoom_Datum
  #S_PopUp_TextZoom_Trennlinie
  #S_PopUp_TextZoom_Punkt
  ;-Gadget Notizzom
         
  #B_TextZoom_Neu
  #B_TextZoom_Minus
  #I_TextZoom_Logo
  #S_TextZoom_Stichwort
  #Font_TextZoom_Stichwort
  #B_TextZoom_Plus
  #B_TextZoom_INS
  #B_TextZoom_HTML
  
  #Font_TextZoom_Notiz
  #Ordner_Button
  #Ordner_Pfad
  #Font_Ordner_Pfad
  #NotizOrdnerExtern_Button
  
EndEnumeration
;- GLOBAL
Global VelindosDatabaseOpenBild
Global MyRingbutton
Global VelindosDatabaseSaveBild
Global ButtonVelindos25
Global MyDropLogo
Global RoteDiskette
Global myButtonHTML
Global EditorFettBild
Global EditorKursivBild
Global EditorUnterstrichenBild
Global EditorDurchgestichenBild
Global ButtonSearch16
Global EditorLinksPositionBild
Global EditorMittePositionBild
Global EditorRechtsPositionBild
Global EditorAbsatzPositionBild

Global TextZoomGadget

Global ButtonOrdner
Global OrdnerExtern23

Global SearchText$
Global Range.CHARRANGE
Global Updown
Global findtext.FINDTEXTEX
Global GrosseLinie$ = "-------------------------------------------------------------------------------------------"
Global NOTIZ$
Global AktuellesDatum$



#CFM_BACKCOLOR    = $4000000
#SF_USECODEPAGE   = $20
#CP_UTF8      = 65001

Global Editor_FileName$ = ""
Global Editor_Pattern$ = "RTF (*.rtf)|*.rtf|Text (*.txt)|*.txt|Unicode (*.txt)|*.txt|UTF8 (*.utf8)|*.utf8"
Global *pcb.Long
Global MyEditorResult.s
Procedure Editor_EnumFontProc(*lpelfe.LOGFONT , *lpntme.TEXTMETRIC , fontType , lParam)
  AddGadgetItem(#Editor_StyleF , -1 , PeekS(@*lpelfe\lfFaceName))
  ProcedureReturn 1
EndProcedure

Procedure Editor_StreamOutCallback(dwCookie , *pbBuff , cb , *pcb.Long)
  *pcb = WriteData(dwCookie , *pbBuff , cb)
  ProcedureReturn Bool(Not *pcb)
EndProcedure

Procedure Editor_StreamInCallback(dwCookie , *pbBuff , cb , *pcb.Long)
  *pcb\l = ReadData(dwCookie , *pbBuff , cb)
  ProcedureReturn Bool(Not *pcb)
EndProcedure

Procedure Editor_UpdateGadgets(editor)
  Protected cf.CHARFORMAT2
  Protected pf.PARAFORMAT2
  Protected fName$ , i
  
  cf\cbSize   = SizeOf(CHARFORMAT2)
  SendMessage_(GadgetID(editor) , #EM_GETCHARFORMAT , #SCF_SELECTION , cf)
  
  pf\cbSize   = SizeOf(PARAFORMAT2)
  SendMessage_(GadgetID(editor) , #EM_GETPARAFORMAT , 0 , pf)   
  
  If cf\dwMask   & #CFM_SIZE
    SetGadgetText(#Editor_StyleY , Str(cf\yHeight * 0.05))
  EndIf   
  If cf\dwMask   & #CFM_FACE
    fName$ = PeekS(@cf\szFaceName , 32)
    For i = 0 To CountGadgetItems(#Editor_StyleF) - 1
      If GetGadgetItemText(#Editor_StyleF , i) = fName$
        SetGadgetState(#Editor_StyleF , i)
        Break
      EndIf
    Next
  EndIf   
  If cf\dwEffects & #CFE_BOLD
    SetGadgetState(#Editor_StyleB , 1)
  Else
    SetGadgetState(#Editor_StyleB , 0)
  EndIf
  If cf\dwEffects & #CFE_ITALIC
    SetGadgetState(#Editor_StyleI , 1)
  Else
    SetGadgetState(#Editor_StyleI , 0)
  EndIf
  If cf\dwEffects & #CFE_UNDERLINE
    SetGadgetState(#Editor_StyleU , 1)
  Else
    SetGadgetState(#Editor_StyleU , 0)
  EndIf   
  If cf\crTextColor <> -1
    StartDrawing(ImageOutput(#Editor_ImageFC))
    Box(0,0,ImageWidth(#Editor_ImageFC),ImageHeight(#Editor_ImageFC), cf\crTextColor)
    StopDrawing()
    SetGadgetAttribute(#Editor_StyleFC , #PB_Button_Image , ImageID(#Editor_ImageFC))
  EndIf
  If cf\crBackColor <> -1
    StartDrawing(ImageOutput(#Editor_ImageBC))
    Box(0,0,ImageWidth(#Editor_ImageBC),ImageHeight(#Editor_ImageBC), cf\crBackColor)
    StopDrawing()
    SetGadgetAttribute(#Editor_StyleBC , #PB_Button_Image , ImageID(#Editor_ImageBC))
  EndIf
  If pf\dwMask & #PFM_ALIGNMENT
    SetGadgetState(#Editor_AlignR , 0)
    SetGadgetState(#Editor_AlignC , 0)
    SetGadgetState(#Editor_AlignL , 0)   
    Select pf\wAlignment
      Case #PFA_LEFT      : SetGadgetState(#Editor_AlignL , 1)
      Case #PFA_CENTER   : SetGadgetState(#Editor_AlignC , 1)
      Case #PFA_RIGHT      : SetGadgetState(#Editor_AlignR , 1)
    EndSelect
  EndIf
  If pf\dwMask & #PFM_NUMBERING
    Select pf\wNumbering
      Case 0            : SetGadgetState(#Editor_Number , 0)           
      Default         : SetGadgetState(#Editor_Number , 1)
        
    EndSelect
  EndIf   
  SetActiveGadget(editor)
EndProcedure

Procedure Editor_SetFontName(editor , fontName$)
  Protected cf.CHARFORMAT2
  If fontName$ <> ""
    cf\cbSize      = SizeOf(CHARFORMAT2)               
    cf\dwMask      = #CFM_FACE
    PokeS(@cf\szFaceName   , fontName$ , 32)
    SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
    Editor_UpdateGadgets(editor)
  EndIf
EndProcedure

Procedure Editor_SetFontHeight(editor , fontSize)   
  Protected cf.CHARFORMAT2
  If fontSize > 0
    cf\cbSize      = SizeOf(CHARFORMAT2)               
    cf\dwMask      = #CFM_SIZE
    cf\yHeight      = fontSize * 20.0
    SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)
    Editor_UpdateGadgets(editor)
  EndIf   
EndProcedure

Procedure Editor_SetFontColor(editor , fontColor)
  Protected cf.CHARFORMAT2
  If fontColor <> -1     
    cf\cbSize      = SizeOf(CHARFORMAT2)               
    cf\dwMask      = #CFM_COLOR
    cf\crTextColor   = fontColor
    SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)     
    Editor_UpdateGadgets(editor)
  EndIf
EndProcedure

Procedure Editor_SetBackColor(editor , backColor)
  Protected cf.CHARFORMAT2
  If backColor <> -1     
    cf\cbSize      = SizeOf(CHARFORMAT2)               
    cf\dwMask      = #CFM_BACKCOLOR
    cf\crBackColor   = backColor
    SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)     
    Editor_UpdateGadgets(editor)
  EndIf
EndProcedure

Procedure Editor_SetFontStyle(editor , mask)
  Protected cf.CHARFORMAT2
  cf\cbSize         = SizeOf(CHARFORMAT2)               
  cf\dwMask         = mask
  cf\dwEffects      = 0
  If GetGadgetState(#Editor_StyleB)
    cf\dwEffects   | #CFE_BOLD
  EndIf
  If GetGadgetState(#Editor_StyleI)
    cf\dwEffects   | #CFE_ITALIC
  EndIf
  If GetGadgetState(#Editor_StyleU)
    cf\dwEffects   | #CFE_UNDERLINE
  EndIf
  If GetGadgetState(#Editor_StyleS)
    cf\dwEffects   | #CFE_STRIKEOUT
  EndIf
  
  SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , cf)               
  Editor_UpdateGadgets(editor)
EndProcedure

Procedure Editor_SetAlignment(editor , alignment)
  Protected pf.PARAFORMAT2
  pf\cbSize         = SizeOf(PARAFORMAT2)               
  pf\dwMask         = #PFM_ALIGNMENT
  pf\wAlignment      = alignment
  SendMessage_(GadgetID(editor) , #EM_SETPARAFORMAT , 0 , pf)
  Editor_UpdateGadgets(editor)
EndProcedure

Procedure Editor_SetNumbering(editor , format)
  Protected pf.PARAFORMAT2
  pf\cbSize         = SizeOf(PARAFORMAT2)               
  pf\dwMask         = #PFM_NUMBERING | #PFM_NUMBERINGTAB
  pf\wNumbering      = format
  pf\wNumberingTab   = 500
  SendMessage_(GadgetID(editor) , #EM_SETPARAFORMAT , 0 , pf)
  Editor_UpdateGadgets(editor)
EndProcedure

Procedure Editor_Quit()
  End   
EndProcedure

Procedure Editor_Callback(hwnd , msg , wparam , lparam)
  Protected *nmhdr.NMHDR   
  If msg = #WM_NOTIFY
    *nmhdr = lparam
    If *nmhdr\code = #EN_SELCHANGE
      Editor_UpdateGadgets(*nmhdr\idFrom)
    EndIf     
  EndIf   
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure Editor_Initialize(editor , fontName$ = "Arial" , fontHeight = 10 , fontStyle = 0 , fontColor = #Black , backColor = #White)
  Protected lf.LOGFONT , y
  
  ClearGadgetItems(editor)
  ClearGadgetItems(#Editor_StyleF)
  ClearGadgetItems(#Editor_StyleY)
  
  EnumFontFamiliesEx_(GetDC_(GadgetID(editor)) , lf , @Editor_EnumFontProc() , 0 , 0)
  
  For y = 1 To 100
    AddGadgetItem(#Editor_StyleY , -1 , Str(y))
  Next   
  
  If fontStyle & #CFM_BOLD
    SetGadgetState(#Editor_StyleB , 1)
  Else
    SetGadgetState(#Editor_StyleB , 0)
  EndIf   
  If fontStyle & #CFM_ITALIC
    SetGadgetState(#Editor_StyleI , 1)
  Else
    SetGadgetState(#Editor_StyleI , 0)
  EndIf   
  If fontStyle & #CFM_UNDERLINE
    SetGadgetState(#Editor_StyleU , 1)
  Else
    SetGadgetState(#Editor_StyleU , 0)
  EndIf   
  Editor_SetFontStyle   (editor , fontStyle)   
  Editor_SetFontName   (editor , fontName$)
  Editor_SetFontHeight(editor , fontHeight)
  Editor_SetFontColor   (editor , fontColor)
  Editor_SetBackColor   (editor , backColor)
  
  SendMessage_(GadgetID(editor) , #EM_SETEVENTMASK , 0 , #ENM_SELCHANGE)
  SetWindowCallback(@Editor_Callback())
EndProcedure
Procedure.s Editor_GetCursorChar(Gadget_ID, opt.b=0)
  ; opt = 0 -> Character left from the cursor
  ; opt = 1 -> Character right from the cursor
  Protected ttr.TEXTRANGE
  Protected Buffer.s = Space(1)
  ttr\lpstrText = @Buffer
  SendMessage_(GadgetID(Gadget_ID),#EM_EXGETSEL,0,ttr\chrg)
  If opt
    ttr\chrg\cpMax + 1
  Else
    ttr\chrg\cpMin - 1
  EndIf
  SendMessage_(GadgetID(Gadget_ID),#EM_GETTEXTRANGE,0,ttr\chrg)
  ProcedureReturn Buffer
EndProcedure

Procedure Editor_Insert_Text(Gadget_ID, text$)
  ; Insert text with spaces (if needed) in EditorGadget
  text$ = Trim(text$)
  If Editor_GetCursorChar(Gadget_ID, 0) <> " "
    text$ = " " + text$
  EndIf
  If Editor_GetCursorChar(Gadget_ID, 1) <> " "
    text$ + " "
  EndIf
  SendMessage_(GadgetID(Gadget_ID), #EM_REPLACESEL, 0, text$)
EndProcedure

Procedure Editor_Open(editor , fileName$)
  Protected es.EDITSTREAM , file
  file = ReadFile(#PB_Any , fileName$)
  If IsFile(file)
    Editor_Initialize(editor)
    es\pfnCallback   = @Editor_StreamInCallback()
    es\dwCookie      = file
    Select SelectedFilePattern()
      Case 0 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_RTF , es)
      Case 1 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_TEXT , es)
      Case 2 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , #SF_UNICODE | #SF_TEXT , es)
      Case 3 : SendMessage_(GadgetID(editor) , #EM_STREAMIN , (#CP_UTF8 << 16) | #SF_USECODEPAGE | #SF_TEXT , es)           
    EndSelect     
    CloseFile(file)
    Editor_FileName$ = fileName$
  EndIf
EndProcedure

Procedure Editor_Save(editor , fileName$)
  Protected es.EDITSTREAM , file
  file = CreateFile(#PB_Any , fileName$)
  If IsFile(file)     
    es\pfnCallback   = @Editor_StreamOutCallback()
    es\dwCookie      = file     
    Select SelectedFilePattern()
      Case 0 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_RTF , es)
      Case 1 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_TEXT , es)
      Case 2 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , #SF_UNICODE | #SF_TEXT , es)
      Case 3 : SendMessage_(GadgetID(editor) , #EM_STREAMOUT , (#CP_UTF8 << 16) | #SF_USECODEPAGE | #SF_TEXT , es)           
    EndSelect     
    CloseFile(file)
    Editor_FileName$ = fileName$
  EndIf
EndProcedure
Procedure Editor_ColumnClick_Callback(hwnd, uMsg, wParam, lParam) 
  Protected result = #PB_ProcessPureBasicEvents , *msg.NMHDR, *pnmv.NM_LISTVIEW,msg,*nmhdr.NMHDR  
  result = #PB_ProcessPureBasicEvents 
  Select uMsg 
      
    Case #WM_CONTEXTMENU
      If GadgetID(#S_TextZoom_Notiz) = wParam
        DisplayPopupMenu(#S_PopUp_TextZoom, WindowID(#Editor_Window))
      EndIf       
      ProcedureReturn #PB_ProcessPureBasicEvents
      
  EndSelect 
  ProcedureReturn result 
EndProcedure 
;-Images
CreateImage(#Editor_ImageFC,12,12)
CreateImage(#Editor_ImageBC,12,12)

;-[xx] WiNdows TextZoom
OpenWindow(#Editor_Window,0, 0, 667, 706,"Mini_Word_Editor" , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
If CreatePopupMenu(#S_PopUp_TextZoom)
  MenuItem(#S_PopUp_TextZoom_Markieren, "Alles markieren")
  MenuBar()
  MenuItem(#S_PopUp_TextZoom_Ausschneiden, "Ausschneiden")
  MenuItem(#S_PopUp_TextZoom_Kopieren, "Kopieren")
  MenuItem(#S_PopUp_TextZoom_Einfuegen, "Einfügen")
  MenuItem(#S_PopUp_TextZoom_Loeschen, "Löschen")
  MenuBar()
  MenuItem(#S_PopUp_TextZoom_Rueckgangig, "Rückgängig")
  MenuBar()
  MenuItem(#S_PopUp_TextZoom_Write, "Wordpad")
  MenuItem(#S_PopUp_TextZoom_Sonderzeichen, "Sonderzeichen Einfügen")
  MenuBar()
  MenuItem(#S_PopUp_TextZoom_Datum, "Datum Einfügen")
  MenuItem(#S_PopUp_TextZoom_Trennlinie, "- Trennlinie")
  MenuItem(#S_PopUp_TextZoom_Punkt, "• Punktation")
EndIf
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_MenuOpen   ,1,  0, 30, 30 , "OPEN")
GadgetToolTip(#Editor_MenuOpen, "Notiz von Datei")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_MenuQuit, 31, 0, 605, 30, "QUIT-END")       
GadgetToolTip(#Editor_MenuQuit, "EditorPlus beenden!")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_MenuSave   ,637,  0, 30, 30 , "SAVE" )
GadgetToolTip(#Editor_MenuSave, "Notiz in Datei")
; ==========================================================================================
ComboBoxGadget(#Editor_StyleF   ,  1,  62,145, 20)    ; Combobox für FONT
GadgetToolTip(#Editor_StyleF, "Font")
; ----------------------------------------------------------------------------------------
ComboBoxGadget(#Editor_StyleY   ,155,  62, 40, 20)    ; Combobox für FONT-GRÖSSE
GadgetToolTip(#Editor_StyleY, "Size")
; ==========================================================================================
ButtonGadget(#Editor_StyleB   ,200, 62, 20, 20 , "B"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_StyleB, "Fett")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_StyleI, 221, 62, 20, 20, "I"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_StyleI, "Kursiv")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_StyleU, 242,  62, 20, 20 , "U"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_StyleU, "Unterstreichen")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_StyleS, 263,  62, 20, 20, "S"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_StyleS, "Durchstreichen")
; ----------------------------------------------------------------------------------------
ButtonGadget(#ButtonSuchen,287,  62, 20, 20, "?");ButtonVelindos25
GadgetToolTip(#ButtonSuchen, "Suche nach Suchwort")

StringGadget(#StringSuchen,310,  62, 160, 20,"")
GadgetToolTip(#StringSuchen, "Suchwort")
SetGadgetFont(#StringSuchen, LoadFont(#Font_Suchfeld, "Calibri", 10, #PB_Font_HighQuality));#PB_Font_Bold|

ButtonGadget(#ButtonWordPad,471,  62, 20, 20, "W");ButtonVelindos25
GadgetToolTip(#ButtonWordPad, "Wordpad aufrufen")

ButtonGadget(#ButtonCalculator,492,  62, 20, 20, "R");ButtonVelindos25
GadgetToolTip(#ButtonCalculator, "Rechner aufrufen")

; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_AlignL   ,515,  62, 20, 20 , "<"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_AlignL, "Linksbündig")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_AlignC,535,  62, 20, 20 , "-"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_AlignC, "Mitte")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_AlignR, 555,  62, 20, 20 , ">"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_AlignR, "Rechtsbündig")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_Number   ,581,  62, 20, 20 , "•"   ,#PB_Button_Toggle)
GadgetToolTip(#Editor_Number, "Absatz")
; ----------------------------------------------------------------------------------------
ButtonImageGadget(#Editor_StyleFC  ,602,  62, 20, 20 , ImageID(#Editor_ImageFC));603,  62, 20, 20
GadgetToolTip(#Editor_StyleFC, "Font Color")
; ----------------------------------------------------------------------------------------
ButtonImageGadget(#Editor_StyleBC  ,622,  62, 20, 20 , ImageID(#Editor_ImageBC));630,  62, 20, 20
GadgetToolTip(#Editor_StyleBC, "Backround Color")
; ----------------------------------------------------------------------------------------
ButtonGadget(#Editor_Print   ,642,  62, 20, 20 , "P"   )
GadgetToolTip(#Editor_Print, "Drucken")
; ----------------------------------------------------------------------------------------
TextZoomGadget = EditorGadget(#S_TextZoom_Notiz,1, 85, 664, 534)
SetGadgetFont(#S_TextZoom_Notiz, LoadFont(#Font_TextZoom_Notiz, "Verdana", 12, #PB_Font_HighQuality));#PB_Font_Bold|

;-Init
Editor_Initialize(#S_TextZoom_Notiz) ; Font und SIZE initialisieren
SendMessage_(GadgetID(#S_TextZoom_Notiz), #EM_SETTARGETDEVICE, #Null, 0); Text Umbruch
SetWindowCallback(@Editor_ColumnClick_Callback())

;-Start
Repeat   
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow         
      Editor_Quit()
    Case #PB_Event_SizeWindow
      ResizeGadget(#S_TextZoom_Notiz , 2,#PB_Ignore , WindowWidth(#Editor_Window) - 5 , WindowHeight(#Editor_Window) - 120)
    Case #PB_Event_Gadget         
      Select EventGadget()
        Case #Editor_StyleF
          Editor_SetFontName(#S_TextZoom_Notiz , GetGadgetText(#Editor_StyleF))
        Case #Editor_StyleY               
          Editor_SetFontHeight(#S_TextZoom_Notiz , Val(GetGadgetText(#Editor_StyleY)))
        Case #Editor_StyleB
          Editor_SetFontStyle(#S_TextZoom_Notiz , #CFM_BOLD)
        Case #Editor_StyleI
          Editor_SetFontStyle(#S_TextZoom_Notiz , #CFM_ITALIC)
        Case #Editor_StyleU
          Editor_SetFontStyle(#S_TextZoom_Notiz , #CFM_UNDERLINE)       
        Case #Editor_StyleS
          Editor_SetFontStyle(#S_TextZoom_Notiz , #CFM_STRIKEOUT)
        Case #Editor_StyleFC
          Editor_SetFontColor(#S_TextZoom_Notiz , ColorRequester())
        Case #Editor_StyleBC
          Editor_SetBackColor(#S_TextZoom_Notiz , ColorRequester())
        Case #Editor_Number
          Editor_SetNumbering(#S_TextZoom_Notiz , GetGadgetState(#Editor_Number))
        Case #Editor_Print
          Debug "Druckroutine"
        Case #Editor_AlignL
          Editor_SetAlignment(#S_TextZoom_Notiz , #PFA_LEFT)
        Case #Editor_AlignC
          Editor_SetAlignment(#S_TextZoom_Notiz , #PFA_CENTER)
        Case #Editor_AlignR
          Editor_SetAlignment(#S_TextZoom_Notiz , #PFA_RIGHT)
        Case #Editor_MenuSave
          Editor_Save(#S_TextZoom_Notiz , SaveFileRequester("" , Editor_FileName$ , Editor_Pattern$ , SelectedFilePattern()))
          SetWindowTitle(#Editor_Window, Editor_FileName$)
        Case #Editor_MenuOpen
          Editor_Open(#S_TextZoom_Notiz , OpenFileRequester("" , Editor_FileName$ , Editor_Pattern$ , SelectedFilePattern()))
        Case #Editor_MenuQuit
          Editor_Quit()
        Case #ButtonSuchen          ;Suchroutine für NotizZoom Gadget über SUCHBUTTON
          SearchText$=GetGadgetText(#StringSuchen)
          If SearchText$="":SearchText$="Notiz":EndIf
          SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_EXGETSEL,0,Range.CHARRANGE)
          Updown = 1 & 2147483647
          findtext.FINDTEXTEX
          If Updown
            findtext\chrg\cpMin = Range\cpMax
            findtext\chrg\cpMax=-1
          Else
            findtext\chrg\cpMin = Range\cpMin
            findtext\chrg\cpMax= 0
          EndIf
          findtext\lpstrText=@SearchText$
          If SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_FINDTEXTEX,1,@findtext) <> -1
            SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_EXSETSEL,0,@findtext\chrgText)
          EndIf
          
        Case #ButtonWordPad
          RunProgram("Write.exe ")
          
        Case #ButtonCalculator
          RunProgram("C:\Windows\System32\Calc.exe ")
          
          
          
      EndSelect
      ;-TEXT Menue
    Case #PB_Event_Menu
      Select EventMenu()
        Case #Editor_MenuNew        ; Löschen des Notiztextes, gibt es bis dato noch nicht
          ClearGadgetItems(#S_TextZoom_Notiz)
          
          Case #S_PopUp_TextZoom_Rueckgangig
          SendMessage_(GadgetID(#S_TextZoom_Notiz), #WM_UNDO, 0, 0)
          
        Case #S_PopUp_TextZoom_Ausschneiden
          SendMessage_(GadgetID(#S_TextZoom_Notiz), #WM_CUT, 0, 0)
          
        Case #S_PopUp_TextZoom_Kopieren
          SendMessage_(GadgetID(#S_TextZoom_Notiz), #WM_COPY, 0, 0)
          
        Case #S_PopUp_TextZoom_Einfuegen
          SendMessage_(GadgetID(#S_TextZoom_Notiz), #WM_PASTE, 0, 0)
          
        Case #S_PopUp_TextZoom_Loeschen
          SendMessage_(GadgetID(#S_TextZoom_Notiz), #WM_CLEAR, 0, 0)
          
        Case #S_PopUp_TextZoom_Markieren
          SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_SETSEL,#SF_RTF,-1)
          
        Case #S_PopUp_TextZoom_Write
          RunProgram("Write.exe ")
          
        Case #S_PopUp_TextZoom_Sonderzeichen
          RunProgram("charmap.exe ")
          
        Case #S_PopUp_TextZoom_Datum
          AktuellesDatum$ = FormatDate("%dd.%mm.%yyyy", Date());+Chr(13)))
          Editor_Insert_Text(#S_TextZoom_Notiz, AktuellesDatum$)
          
        Case #S_PopUp_TextZoom_Trennlinie: SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_REPLACESEL,1, GrosseLinie$);#LF$+#CR$
          ;Editor_UpdateGadgets(#S_TextZoom_Notiz)
          
        Case #S_PopUp_TextZoom_Punkt:: SendMessage_(GadgetID(#S_TextZoom_Notiz),#EM_REPLACESEL,1, "• ");#LF$+#CR$
          
      EndSelect         
      
      
      ;-TEXT Drag&Drop
    Case #PB_Event_GadgetDrop
      Select EventGadget()
        Case #S_TextZoom_Notiz
          If EventDropType() = #PB_Drop_Text
            AddGadgetItem(#S_TextZoom_Notiz, -1, EventDropText())
          EndIf
      EndSelect
      
      
  EndSelect     
ForEver
Gruss Velindos
Zuletzt geändert von Velindos am 31.03.2013 18:08, insgesamt 2-mal geändert.
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: RTF Mini Editor geht nicht in BETA

Beitrag von ts-soft »

Die Fehlermeldungen sind eigentlich eindeutig und die Historie der Hilfe enthält auch alle notwendigen Hinweise.
Hab jetzt die 3 Fehler beseitigt, die eine Ausführung verhindern, den Rest, wie z.B. absolute Pfade usw., die nicht
auf jedem System funktionieren, solltest Du selber beseitigen können, wenn das Programm sowieso nur auf Deinem
Rechner laufen soll, ist es ja auch egal :wink:

Code: Alles auswählen

Procedure Editor_StreamOutCallback(dwCookie , *pbBuff , cb , *pcb.Long)
  *pcb = WriteData(dwCookie , *pbBuff , cb)
  ProcedureReturn Bool(Not *pcb)
EndProcedure

Procedure Editor_StreamInCallback(dwCookie , *pbBuff , cb , *pcb.Long)
  *pcb\l = ReadData(dwCookie , *pbBuff , cb)
  ProcedureReturn Bool(Not *pcb)
EndProcedure
Einmal wurde ein Pointer mit nativen Type benutzt, was verboten ist und ansonsten habe ich noch das Bool()
hinzugefügt. Das es vorher funktioniert hat, war auch nie garantiert, da boolsche Ausdrücke nie offiziell
unterstützt wurden.

Und wieso BETA? Die Finale ist doch raus?

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: RTF Mini Editor geht nicht in BETA

Beitrag von Velindos »

Hallo ts-soft,
besten Dank für deine Unterstützung, hat auf Anhieb geklappt.

Das mit dem Release kommt daher, dass ich nicht mehr so viel zum Programmieren komme und daher oft nicht so "fix&fux" bin, das gleich zu verstehen. Habe die Sache nachgeholt und den neuen Release mir runtergeladen, Danke für deinen Tip! Jetzt läufts ja auch im neuen Release!

Ansatz diese RTF Mini Editor ist, das ich in eine beliebige Anwendungen schnell integrieren kann, er ist also keine Ultimate Software etc. Daher stelle ich im Forum mit Codec aus, um anderen Anfänger einen Zugang zu ermöglichen.

Also, wenn es interessiert mir ein paar Tips zu geben, wäre ich Dankbar. Folgende Punkte versuche ich in den nächsten Tage/Wochen noch zu lösen:

• Font werden nicht alphabetisch aufgelistet warum????
• Sucheroutine hört am Ende auf - Wie springe ich wieder automatisch am Anfang
• Wenn ich den Punkt setze, habe ich einen grossen Abstand. Möchte jedoch es so lösen das vorher ein Tab kommt und dann der Punkt und ich schreiben kann.
• Muss ich den Text des Gadget in einer Datei vorher speichern, wenn ich in Wordpad verwenden will oder kann ich mit den Aufruf von Wordpad den Text mitgeben ins Dokument?
• Select Platter funktioniert nicht beim Speichern, speichert Textdatei.x statt Textdatei.rtf
• Wie kann man die Sache ausdrucken?

Also nochmals Danke für die Mitarbeit!

Gruss Velindos

PS: Änderungen wurden in den obigen Codec eingearbeitet und hochgeladen!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Mr.L
Beiträge: 51
Registriert: 05.02.2011 21:04

Re: RTF Mini Editor geht nicht in BETA

Beitrag von Mr.L »

Ich will ja nicht kleinlich sein, aber einen klitzekleinen Hinweis auf den Originalautor des Editors (meine Wenigkeit) fänd ich schon angemessen.
Immerhin hast du das Teil zu 100% aus dem Codearchiv übernommen und bloß mit ein paar Zusatzfunktionen versehen.
Ich mein ja nur... weil du ja von "deinem" Editor sprichst und so, ähhm... na egal - fühle mich auch etwas geschmeichelt und es ist ja auch Ostern... :roll:
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: RTF Mini Editor geht nicht in BETA

Beitrag von Velindos »

Hallo Mr.L.
sorry das ich Dich nicht erwähnt habe, war nicht Absicht! War nur mal wieder zum Programmieren gekommen und bin über den neuen Release gefallen. War beeindruckt das sich einiges geändert hat!
Ich will ja nicht kleinlich sein, aber einen klitzekleinen Hinweis auf den Originalautor des Editors (meine Wenigkeit) fänd ich schon angemessen.
Nochmals, sorry! Wie du gesehen hast habe ich die Sache einmal angereizt, des es einige gute RTF-Editor Beispiele im Forum gibt, ich jedoch keines über einen mini RTF-Editor gefunden habe. Ich denke das ist für andere Anfänger auch interessant, weil Sie diesen in Ihre Anwendung einbauen können.

Im diesem Sinne...!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten