EditorGadget Callback - Abfangen von Cut & Paste für UNDO

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

EditorGadget Callback - Abfangen von Cut & Paste für UNDO

Beitrag von Thorsten1867 »

Ich möchte eine mehrstufige Undo/Redo-Funktion für EditorGadgets erstellen.
Hierzu müsste ich z.B. Eingaben und v.a. Paste & Cut - Aktionen abfangen, um den Text vorher für die Undo-Funktion speichern zu können.
Leider bin ich mit der Suche nach einem Callback für das EditorGadget nicht wirklich fündig geworden.

Wer kennt sich ein bisschen besser mit der WinAPI aus und kann mir einen Tipp geben.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Kiffi »

Thorsten1867 hat geschrieben:Wer kennt sich ein bisschen besser mit der WinAPI aus und kann mir einen Tipp geben.
WinAPI = RSBasic = http://www.rsbasic.de/winapi-library/

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Thorsten1867 »

Da habe ich natürlich schon geschaut, aber möglicherweise an der falschen Stelle?!?
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Kiffi »

Thorsten1867 hat geschrieben:Da habe ich natürlich schon geschaut, aber möglicherweise an der falschen Stelle?!?
ich habe hier geguckt: http://www.rsbasic.de/aktualisierung/wi ... 0machen.pb

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Thorsten1867 »

Ich brauche es genau umgekehrt.
Ich muss wissen, wann etwas in das EditorGadget eingefügt bzw. ausgeschnitten wurde .
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Kiffi »

Thorsten1867 hat geschrieben:Ich muss wissen, wann etwas in das EditorGadget eingefügt bzw. ausgeschnitten wurde .
Warum? Das EditorGadget kümmert sich doch selber um das UnDo / ReDo.

Grüße ... Kiffi
a²+b²=mc²
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: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von ts-soft »

Eigentlich brauchste nicht viel machen, jedenfalls unter Windows, BeginUndo-, CanUndo-, Undo-, Redo- usw. werden
unterstützt vom RichEdit (EditorGadget), siehe: http://www.realsource.de/downloads/doc_ ... edit-class

Einfach nutzen und Callback ist unnötig, so gut wie die eingebaute Funktion wirste es wohl kaum nachbauen können :wink:

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
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Thorsten1867 »

Kiffi hat geschrieben:Warum? Das EditorGadget kümmert sich doch selber um das UnDo / ReDo.
Funktioniert leider nicht bzw. nicht immer.
Vermutlich weil ich eine eigene Zeilenumbruchroutine (PDF-kompatibel) verwende.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von edel »

Versuch es mal so:

Code: Alles auswählen

Global DefProc = 0

Procedure IsEditorGadgetActive()
  Protected Gadget
  Gadget = GetActiveGadget()
  
  If Gadget => 0 And GadgetType(gadget) = #PB_GadgetType_Editor
    ProcedureReturn #True
  EndIf
  
  ProcedureReturn #False
EndProcedure

Procedure OnCut()
  Protected Len.l
  Protected Buf.i
  Protected Gadget.i
  Protected s.i, e.i
  
  If IsEditorGadgetActive()
    Gadget = GetActiveGadget()
        
    SendMessage_(GadgetID(gadget), #EM_GETSEL, @s, @e)    
    
    If e - s > 0
      
      Buf = AllocateMemory(e - s)
    
      SendMessage_(GadgetID(gadget), #EM_GETSELTEXT, 0, Buf)
    
      SetClipboardText(PeekS(buf))
    
      FreeMemory(Buf)
      
    EndIf
  
  EndIf
  
EndProcedure

Procedure OnPaste()
  Protected Gadget.i
  Protected text.s
  
  If IsEditorGadgetActive()
    Gadget = GetActiveGadget()
    text   = GetClipboardText()
    
    SendMessage_(GadgetID(Gadget), #EM_REPLACESEL, #True, Text)
    
  EndIf
  
  
EndProcedure

Procedure Main()
  Protected Window
  Protected Event
  
  Window = OpenWindow(#PB_Any, 
                      #PB_Ignore,
                      #PB_Ignore,
                      640, 480,
                      "Test")
  
  editor = EditorGadget(#PB_Any, 
                        0,0,
                        WindowWidth(Window),
                        WindowHeight(Window))
  
  SetActiveGadget(editor)
  
  AddKeyboardShortcut(Window, #PB_Shortcut_Control|#PB_Shortcut_C, 1)
  AddKeyboardShortcut(Window, #PB_Shortcut_Control|#PB_Shortcut_V, 2)
  
  BindEvent(#PB_Event_Menu, @OnCut(), Window, 1)
  BindEvent(#PB_Event_Menu, @OnPaste(), Window, 2)
  
  Repeat    
    Event = WaitWindowEvent()
        
  Until Event = #PB_Event_CloseWindow
  
  
EndProcedure: End Main()

Schon aergerlich das man selbst fuer die einfachsten Sachen API Gedoens braucht.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: EditorGadget Callback - Abfangen von Cut & Paste für UND

Beitrag von Thorsten1867 »

Klingt interessant. Werde mal damit "rumspielen". Danke!
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten