was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

291 Visitors Online


 
...mehrere Komponenten per Stream in die Zwischenablage speichern/auslesen?
Autor: Peter Below
[ Tip ausdrucken ]  

Tip Bewertung (6):  
     


{
  Clipboard has  methods  GetComponent and SetComponent but we need
  to stream multiple components to the clipboard to include copy paste type
  of feature.

  Die Zwischenablage hat die Methoden GetComponent and SetComponent
  aber wir wollen mehrere Komponenten in die
  Zwischenablage speichern und wieder auslesen.
}


procedure CopyStreamToClipboard(fmt: Cardinal; S: TStream);
var
  
hMem: THandle;
  pMem: Pointer;
begin
  
S.Position := 0;
  hMem       := GlobalAlloc(GHND or GMEM_DDESHARE, S.Size);
  if hMem <> 0 then 
  begin
    
pMem := GlobalLock(hMem);
    if pMem <> nil then 
    begin
      
S.Read(pMem^, S.Size);
      S.Position := 0;
      GlobalUnlock(hMem);
      Clipboard.Open;
      try
        
Clipboard.SetAsHandle(fmt, hMem);
      finally
        
Clipboard.Close;
      end;
    end { If }
    
else 
    begin
      
GlobalFree(hMem);
      OutOfMemoryError;
    end;
  end { If }
  
else
    
OutOfMemoryError;
end{ CopyStreamToClipboard }


procedure CopyStreamFromClipboard(fmt: Cardinal; S: TStream);
var
  
hMem: THandle;
  pMem: Pointer;
begin
  
hMem := Clipboard.GetAsHandle(fmt);
  if hMem <> 0 then 
  begin
    
pMem := GlobalLock(hMem);
    if pMem <> nil then 
    begin
      
S.Write(pMem^, GlobalSize(hMem));
      S.Position := 0;
      GlobalUnlock(hMem);
    end { If }
    
else
      raise 
Exception.Create('CopyStreamFromClipboard: could not lock global handle ' +
        'obtained from clipboard!');
  end{ If }
end{ CopyStreamFromClipboard }


 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners