Wie kann man das Clipboard auf Inhalt prüfen?



  • Hallo,
    ein TMemo kennt ein paar Methoden um ein Clipboard zu verwalten, z.B.

    Memo1->PasteFromClipboard();
    Memo1->CopyToClipboard();
    Memo1->CutToClipboard();
    //usw.
    

    ich möchte in meinem Memo1 feststellen, ob der Zwischenspeicher leer ist oder nicht, dazu gibt's aber nichts? 😕

    //h
    __published:
      TMemo* Memo1;
      TPopupMenu* mnuMemo;
      TMenuItem* Item1Paste;
    //cpp
    if (Memo1->ClipboardIsEmpty())  //gibt's leider nicht!
      Item1Paste->Enabled = false;
    

    Wie mach ich das?



  • Der Zwischenspeicher ist ja Windows-global und nicht pro Memo oder Fenster. Und ich weiß auch gar nicht, ob der Zwischenspeicher überhaupt den Zustand "leer" kennt 😕
    Vielleicht solltest du eher schauen, ob Text im Zwischenspeicher gespeichert ist (und wenn ja, ob mit Länge>0). Die genauen Funktionen kenne ich grad auch nicht, Google sollte aber helfen können 🙂



  • Danke @Badestrand,
    unter der Prämisse, es gibt nur ein Clipboard() "Windows global" u kein spezielles nur für TMemo, wie ich vermutet hatte, müßte folgende Lösung ausreichen:

    #include <Clipbrd.hpp>
    bool TForm1::ClipboardIsEmpty(void) {
    bool empty;
      return (empty = Clipboard()->AsText.IsEmpty() ? true : false);
    }
    


  • Hi,

    es gibt in der WinApi Funktionen, die aufs ClipBoard zugreifen, u.a.:

    OpenClipboard( Memo1->Handle );   
       EmptyClipboard(); 
       // weitere
    

    mfg
    kpeter



  • Hallo @kpeter, vielen Dank für den Tipp.
    An die WinApi hatte ich gar nicht gedacht. 🙂

    Das werde ich jetzt nachholen und mir etwas näher anschauen. Vielleicht findet sich dort auch noch so die eine oder andere Idee.


Anmelden zum Antworten