Windows: Markieren mit der Maus bei D&D
-
- Lazarusforum e. V.
- Beiträge: 370
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Windows: Markieren mit der Maus bei D&D
Hallo,
folgendes Problem tritt nur unter Windows auf. Unter Linux geht es ohne Probleme und auch in Wine.
- Projekt erstellt und einfach eine TEdit rein gezogen (ggf. Text angepasst damit man etwas zum testen hat)
- Programm starten und dann mit der Maus Text markieren
=> funktioniert
DragMode vom TEdit auf dmAutomatic stellen und das gleiche nochmals versuchen.
=> es wird hier sofort in den D&D Modus gegangen
=> gewünscht ist erst mal ein markieren und nur wenn ich das rüber in ein anderes Feld ziehe D&D
Wie gesagt geht das unter Linux (GTK und QT6) sowie in Wine problemlos und wie gewünscht. Jemand hier eine Idee, wie ich das lösen kann?
folgendes Problem tritt nur unter Windows auf. Unter Linux geht es ohne Probleme und auch in Wine.
- Projekt erstellt und einfach eine TEdit rein gezogen (ggf. Text angepasst damit man etwas zum testen hat)
- Programm starten und dann mit der Maus Text markieren
=> funktioniert
DragMode vom TEdit auf dmAutomatic stellen und das gleiche nochmals versuchen.
=> es wird hier sofort in den D&D Modus gegangen
=> gewünscht ist erst mal ein markieren und nur wenn ich das rüber in ein anderes Feld ziehe D&D
Wie gesagt geht das unter Linux (GTK und QT6) sowie in Wine problemlos und wie gewünscht. Jemand hier eine Idee, wie ich das lösen kann?
Tipp für PostgreSQL: www.pg-forum.de
-
- Beiträge: 6927
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Windows: Markieren mit der Maus bei D&D
Wie ist deine Window Version von deinem Programm kompiliert ?
WinAPI, GTK2 oder QT6 ?
WinAPI, GTK2 oder QT6 ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 370
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Windows: Markieren mit der Maus bei D&D
Windows ist direkt Windows. Kein anderes Widget-Set.
- Dateianhänge
-
project1.zip
- (94.71 KiB) 103-mal heruntergeladen
Tipp für PostgreSQL: www.pg-forum.de
-
- Beiträge: 732
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Windows: Markieren mit der Maus bei D&D
Was willst du denn d&d, den Text von TEdit oder TEdit selber?
Win32-UI unterstützt kein Text d&d von TEdit und und TMemo.
Der Erffekt den du gesehen hast ist ganz normal für Win32-UI.
Suche für Text-d&d nach drag-n-drop
Komponente bei OPM. Ich weiß aber nicht, ob die auch mit portiert wurden.
Win32-UI unterstützt kein Text d&d von TEdit und und TMemo.
Der Erffekt den du gesehen hast ist ganz normal für Win32-UI.
Suche für Text-d&d nach drag-n-drop
Komponente bei OPM. Ich weiß aber nicht, ob die auch mit portiert wurden.
-
- Lazarusforum e. V.
- Beiträge: 370
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Windows: Markieren mit der Maus bei D&D
Ich möchte
a) D&D zwischen verschiedenen Komponenten (funktioniert)
b) Die Möglichkeit, den Text auch mit der Maus zu markieren (funktioniert unter Linux und in Wine)
Die Frage ist, geht das auch, muss ich hier ggf. etwas auf eine andere Art und Weise umsetzen etc.
Ich habe hier ein Programm, das mit Delphi geschrieben ist. Leider hab ich keine Sourcen, um das nachzuschauen. Da funktioniert beides. Es kann aber sein, dass hier D&D manuell realilsiert wurde. Deswegen meine Frage.
a) D&D zwischen verschiedenen Komponenten (funktioniert)
b) Die Möglichkeit, den Text auch mit der Maus zu markieren (funktioniert unter Linux und in Wine)
Die Frage ist, geht das auch, muss ich hier ggf. etwas auf eine andere Art und Weise umsetzen etc.
Ich habe hier ein Programm, das mit Delphi geschrieben ist. Leider hab ich keine Sourcen, um das nachzuschauen. Da funktioniert beides. Es kann aber sein, dass hier D&D manuell realilsiert wurde. Deswegen meine Frage.
Tipp für PostgreSQL: www.pg-forum.de
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 375
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: Windows: Markieren mit der Maus bei D&D
Hi!
Ich habe ein bisschen experimentiert und es hinbekommen.
Das Dragging muss mit der rechten Maustaste gemacht werden, weil der Linksklick sofort die Textmarkierung zunichte macht.
In der TForm-Definition müssen folgende Variable und Prozeduren deklariert werden ...
... die wie folgt ausprogrammiert sind ...
Und letztlich müssen bei den betroffenen Edit/Memo-Feldern die Event-Handler zugewiesen werden.
Hier Edit1 als Quelle (Feld dessen Inhalt gezogen werden kann) und Edit2 als Ziel.
Grüße, Jörg
Ich habe ein bisschen experimentiert und es hinbekommen.

Das Dragging muss mit der rechten Maustaste gemacht werden, weil der Linksklick sofort die Textmarkierung zunichte macht.
In der TForm-Definition müssen folgende Variable und Prozeduren deklariert werden ...
Code: Alles auswählen
TForm1 = class(TForm)
private
DraggedText: String;
procedure SrcControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure DestControlDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure DestControlDragDrop(Sender, Source: TObject; X, Y: Integer);
end;
Code: Alles auswählen
procedure TForm1.SrcControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Sender is TCustomEdit then // TEdit & TMemo => TCustomEdit
if TCustomEdit(Sender).SelLength>0 then
begin
self.DraggedText:=TCustomEdit(Sender).SelText;
TCustomEdit(Sender).BeginDrag(false);
end;
end;
procedure TForm1.DestControlDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
{var} Accept := self.DraggedText <> '';
end;
procedure TForm1.DestControlDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if self.DraggedText <> '' then
begin
if Sender is TCustomEdit then
begin
TCustomEdit(Sender).Text := DraggedText;
// TCustomEdit(Sender).SelText := ''; // optional: Ausschneiden
end;
DraggedText := '';
end;
end;
Hier Edit1 als Quelle (Feld dessen Inhalt gezogen werden kann) und Edit2 als Ziel.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.OnMouseDown := @self.SrcControlMouseDown;
Edit2.OnDragOver := @self.DestControlDragOver;
Edit2.OnDragDrop := @self.DestControlDragDrop;
end;
-
- Beiträge: 732
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Windows: Markieren mit der Maus bei D&D
Dann würde ich D&D unter Windows nicht automatisch sondern manuell machen, weil du sonst nur Probleme bekommst. Du kannst D&D manuell starten sobald Mauszeiger von TEdit x/y-Koordinaten weiter bewegt hat, so hatte ich damals bei TreeView-Knoten gemacht.Ich934 hat geschrieben: Di 20. Mai 2025, 07:42 Ich möchte
a) D&D zwischen verschiedenen Komponenten (funktioniert)
b) Die Möglichkeit, den Text auch mit der Maus zu markieren (funktioniert unter Linux und in Wine)
Die Frage ist, geht das auch, muss ich hier ggf. etwas auf eine andere Art und Weise umsetzen etc.
Ich habe hier ein Programm, das mit Delphi geschrieben ist. Leider hab ich keine Sourcen, um das nachzuschauen. Da funktioniert beides. Es kann aber sein, dass hier D&D manuell realilsiert wurde. Deswegen meine Frage.