AGB  ·  Datenschutz  ·  Impressum  







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

Memos synchron scrollen

Ein Thema von Muellermilchtrinker · begonnen am 19. Jan 2010 · letzter Beitrag vom 20. Jan 2010
Antwort Antwort
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

Memos synchron scrollen

  Alt 19. Jan 2010, 17:54
Hy DP,

Ich möchte gerne zwei Memos synchron scrollen.
Ich habe auch schon was gefunden: Klick mich hart und du wirst belohnt!!!
Nur ist hier jetzt das Problem:
Wenn ich Memo1 scrolle, scrollt Memo2 auch.
Soweit so gut.
Aber wenn ich Memo2 scrolle, scrollt Memo1 nicht.

Meine Frage jetzt:
Wie kann ich es auf beide anwenden.

Ich hab auch schon den Code zu kopieren und auf Memo2 anwenden. Ergebnis: Negativ. Vllt habe ich auch etwas falsch gemcht. Ich wäre dankbar wenn ihr mir helfen könnt.

MFG
Muellermilchtrinker (der mit den vielen Fragen )
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Memos synchron scrollen

  Alt 19. Jan 2010, 18:01
Zitat:
Ich hab auch schon den Code zu kopieren und auf Memo2 anwenden
Zeig mal den Code davon
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Memos synchron scrollen

  Alt 19. Jan 2010, 18:07
Das wär die ganze Unit:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
    PRichEdWndProc, POldWndProc: Pointer;
    PRichEdWndProc2, POldWndProc2: Pointer;
    procedure RichEdWndProc(var Msg: TMessage);
    procedure RichEdWndProc2(var Msg: TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  PRichEdWndProc := MakeObjectInstance(RichEdWndProc);
  POldWndProc := Pointer(SetWindowLong(Memo1.Handle, GWL_WNDPROC,
    Integer(PRichEdWndProc)));
  PRichEdWndProc2 := MakeObjectInstance(RichEdWndProc);
  POldWndProc2 := Pointer(SetWindowLong(Memo2.Handle, GWL_WNDPROC,
    Integer(PRichEdWndProc2)));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(PRichEdWndProc) then
  begin
    SetWindowLong(Memo1.Handle, GWL_WNDPROC, Integer(POldWndProc));
    FreeObjectInstance(PRichEdWndProc);
  end;
  if Assigned(PRichEdWndProc2) then
  begin
    SetWindowLong(Memo2.Handle, GWL_WNDPROC, Integer(POldWndProc));
    FreeObjectInstance(PRichEdWndProc2);
  end;
end;


procedure TForm1.RichEdWndProc(var Msg: TMessage);
begin
  Msg.Result := CallWindowProc(POldWndProc, Memo1.Handle, Msg.Msg,
    Msg.wParam, Msg.lParam);

  if (Msg.Msg = WM_VSCROLL) and (LOWORD(Msg.wParam) = SB_THUMBTRACK) then
  begin
    Memo2.Perform(Msg.Msg, Msg.wParam, Msg.lParam);
    SetScrollPos(Memo2.Handle, SB_VERT, HIWORD(Msg.wParam), True);
  end;
end;

procedure TForm1.RichEdWndProc2(var Msg: TMessage);
begin
  Msg.Result := CallWindowProc(POldWndProc, Memo2.Handle, Msg.Msg,
    Msg.wParam, Msg.lParam);

  if (Msg.Msg = WM_VSCROLL) and (LOWORD(Msg.wParam) = SB_THUMBTRACK) then
  begin
    Memo2.Perform(Msg.Msg, Msg.wParam, Msg.lParam);
    SetScrollPos(Memo1.Handle, SB_VERT, HIWORD(Msg.wParam), True);
  end;
end;

end.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Memos synchron scrollen

  Alt 19. Jan 2010, 22:45
Was mir auf die Schnelle aufffällt:
In RichEdWndProc machst du ein Memo2.Perform und SetScrollPos(Memo2....)
In RichEdWndProc2 machst du ein Memo2.Perform und SetScrollPos(Memo1....)
Ich denke du müßtest in ichEdWndProc2 ein Memo1.Perform machen
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Memos synchron scrollen

  Alt 20. Jan 2010, 13:34
Danke.
Warn zwar noch zwei/drei andere Kleinigkeiten, funktioniert aber jetzt.

Kommt davon wenn man Copy&Paste nutzt
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  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 11:43 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