Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inhalt von Memo (CopyToClipboard) wird nicht in Zwischenabl. (https://www.delphipraxis.net/3855-inhalt-von-memo-copytoclipboard-wird-nicht-zwischenabl.html)

thebaer 2. Apr 2003 16:16


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.

APP 2. Apr 2003 16:52

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:
function TForm1.SonderzeichenErsetzen(Zeile:string):string;
Deine Function un die TForm1 einbinden.

thebaer 3. Apr 2003 16:24

Hilft leider nicht habe aber die Lösung entdeckt:

Man muss erst
Code:
Memo1.SelectAll;
machen dann tuts.

APP 3. Apr 2003 16:38

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.

netpilots 23. Aug 2006 09:28

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