AGB  ·  Datenschutz  ·  Impressum  







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

Zwei Memofelder gleichzeitig scrollen

Ein Thema von Ginko · begonnen am 13. Mär 2010 · letzter Beitrag vom 19. Mär 2010
Antwort Antwort
Seite 2 von 2     12   
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#11

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 17. Mär 2010, 22:06
da fehlen die units, nur das dpr drin ^^
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#12

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 18. Mär 2010, 10:55
Junge, junge, so langsam glaube ich, das Thema ist verhext...
Angehängte Dateien
Dateityp: rar laufleiste__ginko_498.rar (1,2 KB, 20x aufgerufen)
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 19. Mär 2010, 19:33
Hallo Panthrax, so klappt das natürlich noch besser 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.
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#14

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 19. Mär 2010, 21:04
So geht's:
Delphi-Quellcode:
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;
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.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 19. Mär 2010, 21:21
Leider klappt es nur wenn beide Felder eine Scrollbar haben, merkwürdig.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:50 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