AGB  ·  Datenschutz  ·  Impressum  







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

Memo Scrollbar Events

Ein Thema von VkPenguin · begonnen am 20. Aug 2012 · letzter Beitrag vom 17. Jun 2013
Antwort Antwort
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#1

Memo Scrollbar Events

  Alt 20. Aug 2012, 11:17
Guten Tag zusammen,
ich arbeite an einem neuen Programm, bei dem ich mehrere Memos habe. Nur eines der Memos hat eine Scrollbar (Vertikal), da alle Memos synchron scrollen sollen. Ich habe bereits im Internet danach gesucht und Befehle wie diesen hier

SendMessage(Memo1.Handle,WM_VSCROLL,SB_LINEDOWN,0) gefunden, die sich wohl gut eignen, um die Befehle an die anderen Memos weiterzugeben. Nur: Ich finde im Objektmanager die Events nicht, die stattfinden, wenn der User mit dem Mausrad scrollt, die Scrollbar bewegt oder auf die Pfeile klickt. Meine Frage ist also, ob jemand eine Idee hat, wie ich an diese Events am besten drankomme. Oder bin ich auf dem völlig falschen Weg?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 11:23
Kann folgendes leider gerade nicht für TMemo testen, aber folgender Code funktioniert für eine TScrollBox. Vielleicht kannst es ja auch auf dein Memo anwenden.
Delphi-Quellcode:
TMyScrollBox = class(TScrollBox)
private
  procedure WMHScroll(var Msg: TMessage); message WM_HSCROLL;
  procedure WMVScroll(var Msg: TMessage); message WM_VSCROLL;
end;


procedure TMyScrollBox.WMHScroll(var Msg: TMessage);
begin
  // Hier dein Code

  inherited;
end;

procedure TMyScrollBox.WMVScroll(var Msg: TMessage);
begin
  // Hier dein Code

  inherited;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#3

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 17:37
Hi, danke für deine Antwort. Habe das mal ausprobiert, es hat aber leider nicht geklappt. Bin mir aber auch nicht sicher, ob ich das so ganz verstanden hab. Aber müsste es nicht einfach mit der Position der Scrollbalken des Memos gehen? Eine Art On-Change-Event...? Egal, ob man mit Mausrad oder den Buttons scrollt, die Position des Balken ändert sich immer. Wenn man das irgendwie abfangen könnte... Weiß jemand ob/wie das möglich ist?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 18:02
Auf die Schnelle aus dem Hut:
Delphi-Quellcode:
type
  TScrollChangeEvent = procedure(Sender: TObject;
    const ScrollCode, Pos: SmallInt) of object;

  TMemo = class(StdCtrls.TMemo)
  private
    FOnHorzScroll: TScrollChangeEvent;
    FOnVertScroll: TScrollChangeEvent;
    procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;
  public
    property OnHorzScroll: TScrollChangeEvent read FOnHorzScroll write FOnHorzScroll;
    property OnVertScroll: TScrollChangeEvent read FOnVertScroll write FOnVertScroll;
  end;

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure DoOnHorzScroll(Sender: TObject; const ScrollCode, Pos: SmallInt);
    procedure DoOnVertScroll(Sender: TObject; const ScrollCode, Pos: SmallInt);
  public
    { Public-Deklarationen }
  end;

...

procedure TMemo.WMHScroll(var Msg: TWMHScroll);
begin
  if Assigned(FOnHorzScroll) then
    FOnHorzScroll(self, Msg.ScrollCode, Msg.Pos);
  inherited;
end;

procedure TMemo.WMVScroll(var Msg: TWMVScroll);
begin
  if Assigned(FOnVertScroll) then
    FOnVertScroll(self, Msg.ScrollCode, Msg.Pos);
  inherited;
end;

procedure TForm1.DoOnHorzScroll(Sender: TObject; const ScrollCode,
  Pos: SmallInt);
begin
  ShowMessage('Horizontal: ' + IntToStr(Pos));
end;

procedure TForm1.DoOnVertScroll(Sender: TObject; const ScrollCode,
  Pos: SmallInt);
begin
  ShowMessage('Vertikal: ' + IntToStr(Pos));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.OnHorzScroll := DoOnHorzScroll;
  Memo1.OnVertScroll := DoOnVertScroll;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

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

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 18:34
Aus dem Forum umgewandeltes Bsp. von einem RichEdit:
Angehängte Dateien
Dateityp: zip Demo_Memo_Scroll.zip (203,6 KB, 76x aufgerufen)
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#6

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 20:59
Hi, vielen Dank für die Hilfe. Das mag vielleicht eine Anfängerfrage sein, aber in der Demo wird das erweiterte MyMemo ja mit Memo1 synchronisiert. Wenn die Unit in meine Anwendung einbauen möchte, kann ich das Memo aber nicht einfach auf meine Memos zur Synchronisation umstellen, da es ja zwei verschiedene Units sind. Ich könnte das natürlich in meine Hauptunit einbauen, aber das ist denke ich eher eine Bastellösung. Hat jemand vielleicht einen Link zu einem Tutorial für soetwas oder kann mir einen Tipp geben, wie sowas geht? Würde das gerne "ein für alle mal" lernen, damit ich beim nächsten Mal nicht direkt wieder fragen muss...
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#7

AW: Memo Scrollbar Events

  Alt 21. Aug 2012, 21:32
Hallo nocheinmal,
hab es inzwischen selbst rausbekommen, jetzt funktioniert alles, dankeschön nocheinmal für eure Hilfe!
  Mit Zitat antworten Zitat
Holloster

Registriert seit: 11. Jun 2013
1 Beiträge
 
#8

AW: Memo Scrollbar Events

  Alt 17. Jun 2013, 12:03
Hallo VkPenguin,

könntest du vielleicht erklären oder mir den Programmteil für das synchrone scrollen von mehreren memos zukommen lassen ?

Ich bräuchte es für ein Schulprojekt, ich lese txt-Dokumente in mehrere memos ein und möchte das wenn ich eins nach unten scrolle eben die 3 anderen in selber weise scrollen.

Vielen dank schonmal im voraus. =)
  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 22:37 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