![]() |
Re: Zwei Memofelder gleichzeitig scrollen
da fehlen die units, nur das dpr drin ^^
|
Re: Zwei Memofelder gleichzeitig scrollen
Liste der Anhänge anzeigen (Anzahl: 1)
:wiejetzt: Junge, junge, so langsam glaube ich, das Thema ist verhext...
|
Re: Zwei Memofelder gleichzeitig scrollen
Hallo Panthrax, so klappt das natürlich noch besser :thumb: danke.
Ich habe mal die Scrollbar des Partner Memos rausgeholt und die MouseWheel Prozedur hinzugefügt, welche auch auf das Mausrad reagieren zu scheint, wenn nur die Scrollbar des TMyMemo vorhanden ist. Allerdings weiß ich nicht wie ich jetzt dem Partner Memo mitteilen kann, dass es das selbe macht wie das Hauptmemo. So wie ich es gemacht habe klappt es jedenfalls nicht, man sieht aber, dass das andere Memo reagiert. Hier mal der erweiterte Quelltext:
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMyMemo = class(TMemo) private FPartner: TWinControl; public property Partner: TWinControl read FPartner write FPartner; procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; procedure MouseWheelHandler(var Message: TMessage); reintroduce; message WM_MouseWheel; end; TForm3 = class(TForm) Memo1: TMemo; StaticText1: TStaticText; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.dfm} { TMyMemo } procedure TMyMemo.WMVScroll(var Message: TWMVScroll); begin inherited; if Assigned(FPartner) then FPartner.Dispatch(Message); end; procedure TMyMemo.MouseWheelHandler(var Message: TMessage); begin inherited; SendMessage(FPartner.Handle,WM_VSCROLL,SB_VERT,0); end; { TForm3 } procedure TForm3.FormCreate(Sender: TObject); var Memo: TMyMemo; begin with TMyMemo.Create(Self) do begin Parent := Self; Left := 3; Top := 8; Width := 185; Height := 89; ScrollBars := ssVertical; Lines.Text := Memo1.Lines.Text; Partner := Memo1; end; end; end. |
Re: Zwei Memofelder gleichzeitig scrollen
So geht's:
Delphi-Quellcode:
Die Nachrichten möglichst originär weiterreichen. Und die Methode MouseWheelHandler besser nicht verwenden. Die geerbte Implementierung wird nämlich auch von der Methode TControl.WMMouseWheel aufgerufen, der ursprünglichen Empfängerin der Nachricht. Also besser dort ansetzen, dann ist die Nachrichtenverarbeitung für beide Memos gleich.
type
TMyMemo = class(TMemo) public procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL; end; { TMyMemo } procedure TMyMemo.WMMouseWheel(var Message: TWMMouseWheel); begin inherited; if Assigned(FPartner) and (Message.Result = 1) then begin Message.Result := 0; FPartner.Dispatch(Message); end; end; |
Re: Zwei Memofelder gleichzeitig scrollen
Leider klappt es nur wenn beide Felder eine Scrollbar haben, merkwürdig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 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