![]() |
Inhalt von Memo (CopyToClipboard) wird nicht in Zwischenabl.
Hallo Leute,
hab da ein kleines Problem: Ich hab ne Form mit zwei Memos und nem Bild. Beim klicken auf das Bild wird der Inhalt der Zwischenablage in Memo1 kopiert. Das klappt soweit. Nun werden einige Sachen in Memo eins geändert und in Memo2 gespeichert. Das klappt auch noch. Wenn ich jetzt den Inhalt von Memo2 in die Zwischenablage kopieren will, tut sich abba nix. Kann mir jemand helfen? (Delphi Version 6) Unit Clipbrd habe ich vorsorglich auch mal probiert. Hier der Quelltext:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Clipbrd; const MaxUmlaute = 89; Entities : array [0..MaxUmlaute] of string[10] = ('&','&','&','&','&','&Ccdil;','&','Ñ' , '&','Þ','&','Ý','&','&','&' , 'Æ','Á','Â','À','Å','Ã','Ä' , '&','&','&','&','&','&','&' , 'Ð','É','Ê','È','Ë','&','&', '&','&','&','Í','Î','Ì','Ï', '&','&','&','&','Ó','Ô', 'Ò','Ø','Õ','Ö','&','&', '&','&','&','&','Ú','Û', 'Ù','Ü','&','&','&','&','&', '&','&','&','&','&','&','&', '&','¼','½','¾','¹','²','³', '&','&','&','&','&','&','„', '“'); Umlaute : array [0..MaxUmlaute] of char = ('<','>','&','"','=','Ç','ç','Ñ','ñ','Þ','þ','Ý','ý','ÿ','ß','Æ','Á', 'Â','À','Å','Ã','Ä','æ','á','â','à','å','ã','ä','Ð','É','Ê','È','Ë', 'ð','é','ê','è','ë','Í','Î','Ì','Ï','í','î','ì','ï','Ó','Ô','Ò','Ø', 'Õ','Ö','ó','ô','ò','ø','õ','ö','Ú','Û','Ù','Ü','ú','û','ù','ü','®', '©','±','µ','¶','·','¢','£','¥','¼','½','¾','¹','²','³','¿','°','¦', '§','«','»','"','"'); type TForm1 = class(TForm) Label3: TLabel; Memo2: TMemo; Memo1: TMemo; Image1: TImage; procedure Image1Click(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function SonderzeichenErsetzen(Zeile:string):string; var j : integer; Ent : string; function Entity(Umlaut:string):string; var i : integer; begin i:=0; Result:=Umlaut; while (Result=Umlaut) and (i<MaxUmlaute) do begin if Umlaute[i]=Umlaut then Result:=Entities[i]; inc(i); end; end; {Entity} begin j:=1; while j<=length(Zeile) do begin if ord(Zeile[j])>127 then begin Ent:=Entity(Zeile[j]); delete(Zeile,j,1); insert(Ent,Zeile,j); end; inc(j); end; Result:=Zeile; end; procedure TForm1.Image1Click(Sender: TObject); var I: Integer; begin Memo1.Clear; Memo1.PasteFromClipboard; Memo2.Clear; for I:=0 to Memo1.Lines.Count-1 do begin Memo2.Lines.Add(SonderzeichenErsetzen(Memo1.Lines[I])); end; Memo2.CopyToClipboard; end; end. |
Hallo,
probiere mal
Delphi-Quellcode:
TYPE
TForm1 = CLASS(TForm) Button1: TButton; Memo1: TMemo; Memo2: TMemo; PROCEDURE Button1Click(Sender: TObject); PRIVATE Function SonderzeichenErsetzen(Zeile:string):string;
Delphi-Quellcode:
Deine Function un die TForm1 einbinden.
function TForm1.SonderzeichenErsetzen(Zeile:string):string;
|
Hilft leider nicht habe aber die Lösung entdeckt:
Man muss erst
Code:
machen dann tuts.
Memo1.SelectAll;
|
Hallo,
komisch, :roll: ich habe gestern Deinen Code wie Du ihn gepostet hast ausprobiert, der Fehler war nachvollziehbar. Danach habe ich die obigen Änderungen vorgenommen -und es hat funktioniert. Einzige Änderung zu Deinem Code war, dass ich statt ImageClick ButtonClick benutzte. |
Re: Inhalt von Memo (CopyToClipboard) wird nicht in Zwischen
Ich sehe den Unterschied von ButtonClick zu ImageClick so, dass bei ImageClick gleich selektioniert ist wenn das Element den Focus erhält und die Eigenschaft auf AutoSelect true gesetzt ist. Dann würde sich SelectAll erübrigen. Beim ButtonClick geht aber ohne Select nichts.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
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