Max1414 Napisano Styczeń 27, 2009 Zgłoś Share Napisano Styczeń 27, 2009 Witam! Pracuje trochę nad schowkiem i robię coś takiego (opis i kod jaki przedstawiam jest testowy, ale mój działa na podobnej zasadzie): - kopiuje grafikę do schowka (ctrl+c na obrazku) - ręcznie - następnie zapisuje do pliku "C:\formaty.txt" wszystkie identyfikatory formatów schowka w jakich jest dostępna ta grafika - zapisuję te formaty do plików [format].txt - wyświetlam grafikę ze schowka w Image1(TImage) Teraz w drugą stronę: - otwieram plik "formaty.txt" - po kolei wrzucam do schowka odpowiednie formaty - próbuję wyświetlić grafikę ze schowka i... ZONK, nie działa, mimo, że można ją wkleić np. do painta... Dodam, że jak damy start/uruchom "clipbrd" to widać tą grafikę, więc czemu nie mogę jej wyświetlić w TImage? Ma ktoś pomysł czemu tak się dzieje? Zamieszczam kodzik: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Clipbrd, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Stream: TMemoryStream; I: Integer; Data: THandle; TF: TextFile; begin AssignFile(TF, 'C:\formaty.txt'); ReWrite(TF); Clipboard.Open; for i:=0 to Clipboard.FormatCount-1 do begin WriteLn(TF, Clipboard.Formats[i]); Stream:= TMemoryStream.Create; Data:= Clipboard.GetAsHandle(Clipboard.Formats[i]); Stream.SetSize(GlobalSize(Data)); Move(GlobalLock(Data)^, Stream.Memory^, GlobalSize(Data)); Stream.SaveToFile('C:'+IntToStr(Clipboard.Formats[i])+'.txt'); GlobalUnlock(Data); Stream.Free; end; CloseFile(TF); Image1.Picture:=nil; Image1.Picture.LoadFromClipboardFormat(CF_BITMAP, Clipboard.GetAsHandle(CF_BITMAP),0); Clipboard.Close; end; procedure TForm1.Button2Click(Sender: TObject); var Stream: TMemoryStream; I: Integer; Data: THandle; TF: TextFile; Format: String; begin AssignFile(TF, 'C:\formaty.txt'); Reset(TF); Clipboard.Open; while not EoF(TF) do begin ReadLn(TF, Format); Stream:= TMemoryStream.Create; Stream.LoadFromFile('C:'+Format+'.txt'); Data := GlobalAlloc(GMEM_MOVEABLE, Stream.Size); Move(Stream.Memory^, GlobalLock(Data)^, Stream.Size); Clipboard.SetAsHandle(StrToInt(Format), Data); GlobalUnlock(Data); Stream.Free; end; CloseFile(TF); Image1.Picture:=nil; Image1.Picture.LoadFromClipboardFormat(CF_BITMAP, Clipboard.GetAsHandle(CF_BITMAP),0); Clipboard.Close; end; end. Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.