AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drag & drop markierte text im memo

Ein Thema von michdan · begonnen am 11. Jul 2012 · letzter Beitrag vom 12. Jul 2012
Antwort Antwort
michdan

Registriert seit: 1. Okt 2003
Ort: varde, Dänemark
40 Beiträge
 
Delphi 7 Professional
 
#1

Drag & drop markierte text im memo

  Alt 11. Jul 2012, 14:50
Hallo!

Ich möchte per Drag & Drop den markierten Text aus einem Memo in ein anderes Memo verschieben.

Ich markiere den Text mit der linken Maustaste und dann wenn ich mit der linken Maustaste das zweite mal auf denn markierten Text drücke soll dass Drag & drop aktiviert werden.


Delphi-Quellcode:
procedure TForm1.mousedown1(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

if (Button = mbLeft) and (memo1.SelText <> '') then
    memo1.BeginDrag(false);
end;

Nur sofort wenn ich mit der linken maustaste auf denn markierten Text drücke wird die markierung wieder gelöscht.


Wie kann ich dieses machen?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Drag & drop markierte text im memo

  Alt 11. Jul 2012, 15:30
Du könntest ja sonst die Selektion nicht mehr per Maus ändern ...
vielleicht kannst Du daraus was basteln ...
Delphi-Quellcode:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tmemo=Class(StdCtrls.TMemo)
        procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  End;

  TForm5 = class(TForm)
    Memo1: TMemo;
    procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}



{ Tmemo }

procedure Tmemo.WMLButtonDown(var Message: TWMLButtonDown);
begin
  // hier vielleicht über Tag o.ä. zusätzlich steuern ob oder ob nicht inherited aufgerufen wird
  if (SelText <> '') then BeginDrag(false)
  else inherited;
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Drag & drop markierte text im memo

  Alt 11. Jul 2012, 15:47
Musst das Dragging auch für das Source-Memo aktivieren, und dann sollte es damit auch gehen:
http://www.delphipraxis.net/146990-o...zu-ziehen.html
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
michdan

Registriert seit: 1. Okt 2003
Ort: varde, Dänemark
40 Beiträge
 
Delphi 7 Professional
 
#4

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 10:03
hallo

Erst mal danke für die Kommentare ...leider bin ich daraus nicht schlauer geworden.

Wenn ich die rechte Maustaste benutze um das draggen zu starten funktioniert das schon, aber die meisten windows programme können das markieren und draggen mit der linken Maustaste schon machen, und das möchte ich auch können, nur wie?

Ich denke man muss irgendwie die linke Maustaste abfangen um zu verhindern das die Markierung gelöscht wird, aber wie kann ich das machen?

Muss ich eine eigene Komponente erstellen für das TMemo oder kann ich irgendwie anders die Maustaste abfangen?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 10:23
Hast Du #2 mal ausprobiert?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
michdan

Registriert seit: 1. Okt 2003
Ort: varde, Dänemark
40 Beiträge
 
Delphi 7 Professional
 
#6

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 10:34
hallo Bummi

Nein ich verstehe nicht was ich mit da machen muss, kannst du mir mal etwas genauer erklären worum es geht?
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 10:38
mit
Delphi-Quellcode:
 Tmemo=Class(StdCtrls.TMemo)
        procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  End;
überschreibst Du quasi die Klasse TMemo auf Deinem Form, alle Memos kommen jetzt im MouseDown links in der Methode
Delphi-Quellcode:
{ Tmemo }

procedure Tmemo.WMLButtonDown(var Message: TWMLButtonDown);
begin
  // hier vielleicht über Tag o.ä. zusätzlich steuern ob oder ob nicht inherited aufgerufen wird
  if (SelText <> '') then BeginDrag(false)
  else inherited;
end;

was Du hier tun willst liegt bei Dir, inherited allein löst das Standardveraltenaus, bei If
könntest Du begin..end einfügen und anhand von Dir festzulegender Bedingungen das Draggen auslösen, ein Beispiel wäre die Steuerung über TAG ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
michdan

Registriert seit: 1. Okt 2003
Ort: varde, Dänemark
40 Beiträge
 
Delphi 7 Professional
 
#8

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 11:32
hallo Bummi

Das klappt wirklich, vielen dank.

Delphi-Quellcode:
procedure Tmemo.WMLButtonDown(var Message: TWMMouse);
begin
     if ((form1.memo1.SelText <> '') and not bSelected ) then
        begin
          form1.memo1.BeginDrag(false);
          bSelected := true;
        end
     else
        begin
          inherited;
          bSelected := false;
     end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Drag & drop markierte text im memo

  Alt 12. Jul 2012, 11:50
Aber bitte so:
Delphi-Quellcode:
  Tmemo= Class( StdCtrls.TMemo )
  private
    bSelected : Boolean; // sollte man eigentlich noch initialisieren
  public
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  End;

procedure Tmemo.WMLButtonDown(var Message: TWMMouse);
begin
     if (( {form1.memo1.}SelText <> '') and not bSelected ) then
        begin
          {form1.memo1.}BeginDrag(false);
          bSelected := true;
        end
     else
        begin
          inherited;
          bSelected := false;
     end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Jul 2012 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz