Einzelnen Beitrag anzeigen

thebaer
(Gast)

n/a Beiträge
 
#1

Inhalt von Memo (CopyToClipboard) wird nicht in Zwischenabl.

  Alt 2. Apr 2003, 17:16
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.
  Mit Zitat antworten Zitat