Autor |
Beitrag |
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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:
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
|
Verfasst: Di 17.10.17 12:06
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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
|
Verfasst: Di 17.10.17 13:23
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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
|
Verfasst: Di 17.10.17 14:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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
Beiträge: 23
Erhaltene Danke: 5
|
Verfasst: Di 17.10.17 15:50
Hi,
nur so eine Idee...
Stream.Position := 0 ???
VG
Steku
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 17.10.17 15:50
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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:
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
|
Verfasst: Di 17.10.17 16:37
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|