Autor Beitrag
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 17.10.17 11:58 
Hallo Freunde,

so langsam glaube ich, ich sollte echt Gärtner werden.

Ich habe hier ein TAdvImage, in das ich per SOAP ein Bild hineinschiebe. So weit, so gut.

Nun soll dies Imager ins Clipboard gehen:

ausblenden Delphi-Quelltext
1:
  Clipboard.Assign(Img_Foto.Picture);					


So weit kein Hexenwerk. Will ich das aber z.B. in Paint einfügen, erscheint "Kann nicht eingefügt werden". Auch mit Paint3D geht das nicht.

Ich habe auch schon mit SaveToClipboardFormat und allem anderen, was Google so hergab, experimentiert. Inklusive eine TImage erstellen, diesem das Img_Foto zu-Assignen und das dann ins Clipboard. Ergebnis immer gleich: Entweder es ist nix im Clipboard oder es läßt sich nicht pasten.

Wie geht das denn nun ?

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.10.17 12:06 
- Nachträglich durch die Entwickler-Ecke gelöscht -
OlafSt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 17.10.17 13:18 
Interessant. HasFormat(CF_PICTURE) ergibt false.

Schreit nach RegisterClipboardFormat, aber die Beschreibung dazu ist... Dürftig.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.10.17 13:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -
OlafSt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 17.10.17 14:11 
Ich habe das TAdvPicture nun gegen ein TImage getauscht.

Auch das hat nix gebracht. HasFormat ist nach wie vor false.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.10.17 14:22 
- Nachträglich durch die Entwickler-Ecke gelöscht -
OlafSt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 17.10.17 15:40 
Ebenso negativ.

Interessanterweise verschwindet der Inhalt des Images, sobald ich Clipboard.Assign durchlaufen habe.

Möglicherweise hängt das mit dem Umstand zusammen, mit dem ich das TImage mit Bilddaten füttere: WebService via SOAP liefert nur halbe Bilddaten. Nachdem ich den SOAP-Datenstrom ent-XML habe, werden die Binärdaten in einen MemoryStream geschaufelt und aus diesem dann per Img.Picture.LoadFromStream(T); in das TImage geladen. Darf ich womöglich den MemoryStream nicht freigeben ? Muß ich womöglich noch andere Aktionen mit dem TImage ausführen, damit das auch wirklich "im Bild" landet ?

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Steku
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 23
Erhaltene Danke: 5



BeitragVerfasst: Di 17.10.17 15:50 
Hi,

nur so eine Idee...

Stream.Position := 0 ???

VG
Steku
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.10.17 15:50 
- Nachträglich durch die Entwickler-Ecke gelöscht -
OlafSt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 17.10.17 16:23 
An Stream.Position brauchte nicht mehr gedacht zu werden,sonst wäre ja nix im TImage gelandet, das ins Clipboard hätte kopiert werden können ;)

Das mit dem temporären TPicture hat geholfen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
     if Assigned(TheImage) then
     begin
          TP:=TPicture.Create;
          TP.Assign(TheImage.Picture);
          Clipboard.Assign(TP);
          if not Clipboard.HasFormat(CF_BITMAP) then
             raise Exception.Create('Nope');
          TP.Free;
     end;


Keine Exception mehr, und ein CTRL-V in Paint liefert das Bild. Ich frage mich nur, warum man das so umständlich machen muß und das Quell-Picture beim kopieren ins Clipboard offenbar seiner Bildinformationen beraubt wird.

Ansonsten Frage beantwortet, danke für eure Hilfe !

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.10.17 16:37 
- Nachträglich durch die Entwickler-Ecke gelöscht -