Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Clipboard Fehler (https://www.delphipraxis.net/108129-clipboard-fehler.html)

dominikkv 8. Feb 2008 13:56

Re: Clipboard Fehler
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von dominikkv
ok, angeschaut -> abgeschrieben -> geht :angel2:

Hast Du auch kapiert, was da gemacht wird?
Abschreiben alleine reicht ja nicht.

ähh... so halber^^
...oder sagen wir zu dreiviertel xD

DeddyH 8. Feb 2008 13:59

Re: Clipboard Fehler
 
Wieso eigentlich abgeschrieben? Du hättest auch die Zwischenablage nutzen können :lol:

napstar 1. Apr 2008 19:51

Re: Clipboard Fehler
 
kann mir jemand erklähren was in diesem code hier gemacht wird.. ich will nicht einfach was übernehmen, ohne das ich was dabei lerne ^^

Delphi-Quellcode:
TfMain = class(TForm)
  private
    hNextViewer: DWORD;
  protected
    procedure WMChangeCBChain(var Msg: TMessage); message WM_CHANGECBCHAIN;
    procedure WMDrawClipboard(var Msg: TMessage); message WM_DRAWCLIPBOARD;
  end;


  // FormCreate:
  hNextViewer := SetClipBoardViewer(Handle);

  // FormDestroy:
  ChangeClipBoardChain(Handle, hNextViewer);


procedure TfMain.WMChangeCBChain(var Msg: TMessage);
begin
  if Msg.WParam = hNextViewer then
    hNextViewer := Msg.lParam
  else if hNextViewer <> 0 then
    SendMessage(hNextViewer, MSG.Msg, MSG.wParam, MSG.lParam);
end;

procedure TfMain.WMDrawClipboard(var Msg: TMessage);
var
  hClipbrdObj: THandle;
  pClipbrdObj: Pointer;
begin
  OpenClipboard(Handle);
  hClipbrdObj := GetClipboardData(CF_TEXT);
  if hClipbrdObj <> 0 then
    begin
      pClipbrdObj := GlobalLock(hClipbrdObj);
      if chk1.Checked then
        ClipboardChanged(PChar(pClipbrdObj));
    end;
  GlobalUnlock(DWORD(pClipbrdObj));
  GlobalFree(hClipbrdObj);
  CloseClipBoard;
end;

dominikkv 1. Apr 2008 20:14

Re: Clipboard Fehler
 
Delphi-Quellcode:
TfMain = class(TForm)
  private
    hNextViewer: DWORD; // Handle des nächsten Kettenmitglieds
  protected
    procedure WMChangeCBChain(var Msg: TMessage); message WM_CHANGECBCHAIN; // wird aufgerufen wenn sich die Kette verändert
    procedure WMDrawClipboard(var Msg: TMessage); message WM_DRAWCLIPBOARD; // wird aufgerufen wenn sich das Clipboard verändert
  end;


  // FormCreate:
  hNextViewer := SetClipBoardViewer(Handle); // Dich in der Kette anmelden und das nächste Mitglied sichern

  // FormDestroy:
  ChangeClipBoardChain(Handle, hNextViewer); // Dich von der Kette ausklinken und dem Folgemitglied bescheid geben


procedure TfMain.WMChangeCBChain(var Msg: TMessage);
begin
  if Msg.WParam = hNextViewer then   // wenn die Nachricht von dem Folgemitglied kommt (d.h. er sich aus der Kette ausklinkt)
    hNextViewer := Msg.lParam        // das nächste Folgenmitglied sichern
  else if hNextViewer <> 0 then      // ansonsten wenn es ein Folgemitglied gibt
    SendMessage(hNextViewer, MSG.Msg, MSG.wParam, MSG.lParam); // die Nachricht weiterleiten
end;

procedure TfMain.WMDrawClipboard(var Msg: TMessage);
var
  hClipbrdObj: THandle;
  pClipbrdObj: Pointer;
begin
  OpenClipboard(Handle); // Clipboard öffnen
  hClipbrdObj := GetClipboardData(CF_TEXT); // schauen ob Text drinnsteht -> Handle
  if hClipbrdObj <> 0 then // wenn ja
    begin
      pClipbrdObj := GlobalLock(hClipbrdObj); // einen Zeiger auf die Daten ausrichten und den bereich Sperren
      if chk1.Checked then
        ClipboardChanged(PChar(pClipbrdObj)); // etwas mit den Daten machen
    end;
  GlobalUnlock(DWORD(pClipbrdObj)); // Sperrung aufheben
  GlobalFree(hClipbrdObj);          // Den Speicherbereich freigeben und Handle ungültig machen
  CloseClipBoard;                   // Clipboard schließen
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz