Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Memo verhindert scrollen wenn auf VerticalScrollbox (https://www.delphipraxis.net/216001-memo-verhindert-scrollen-wenn-auf-verticalscrollbox.html)

fisipjm 9. Okt 2024 16:34

Memo verhindert scrollen wenn auf VerticalScrollbox
 
Hi,

mal ganz off Topic und wegen Frust :evil:
Programmiert eigentlich irgendjemand eine ernstzunehmende Anwendung für den mobile Bereich mit Delphi? Ich bezweifle das mittlerweile bei den ganzen Basics die nicht funktionieren so langsam.

Also nun zum Thema :-D
Wenn man ein Memo Feld auf eine VerticalScrollbox platziert und noch andere Elemente auf der Vertical Scrollbox hat, die Scrollbox also in der Theorie gescrollt werden können soll, dann verliert die Scrollbox diese Fähigkeit wenn ein MemoFeld auf ihr liegt und man versucht über das Memofeld zu scrollen.
Das memoFeld frist also das Scroll Event von der Scrollbox.
Mir ist schon klar, dass es wahrscheinlich damit zusammen hängt, dass das Memo selbst auch scrollbar ist, wenn es mehr text hat als es anzeigen kann, aber ich habe keinen direkten Weg gefunden wie ich das irgendwie einfach steuern könnte.
Wisst ihr weiter?

Ich bin aktuell folgende Lösung am Testen, aber nicht wirklich zufrieden, weil meine Form "Zuckt", funktionieren tut es aber zumindest schon mal.

Delphi-Quellcode:
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  FPrevMousePosY := Y;
  FPrevMousePosX := X;
end;

procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
var
  lMemo: TCustomMemo;
  lRect: TRectangle;
  procedure ScrollVerticalby(_y: Single);
  begin
    lmemo.OnMouseMove := nil;
    VertScrollBox1.ScrollBy(0,_y);
    lmemo.OnMouseMove := Memo1MouseMove;
  end;

begin
  lMemo := Sender as TCustomMemo;
  lRect := lMemo.Parent as TRectangle;

  if not Assigned(lMemo.VScrollBar) then
    ScrollVerticalby( Y - FPrevMousePosY)
  else if not lMemo.VScrollBar.Visible then
  begin
    ScrollVerticalby( Y - FPrevMousePosY);
  end
  else if (lMemo.VScrollBar.Value = lMemo.VScrollBar.Max) or (lMemo.VScrollBar.Value = lMemo.VScrollBar.Min) then
    ScrollVerticalby( Y - FPrevMousePosY);
  FPrevMousePosY := Y;
  FPrevMousePosX := X;
end;

procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  FPrevMousePosY := 0;
  FPrevMousePosX := 0;
end;

DeddyH 9. Okt 2024 16:36

AW: Memo verhindert scrollen wenn auf VerticalScrollbox
 
Zitat:

Zitat von fisipjm (Beitrag 1542023)
Programmiert eigentlich irgendjemand eine ernstzunehmende Anwendung für den mobile Bereich mit Delphi?

Ganz ehrlich: jahrelang versucht und dann FMX in die Tonne getreten, genau aus eben diesen Gründen. Ich bin dann erst zu Ionic und später zu Flutter gewechselt, aber mittlerweile übernehmen meine Kollegen die mobile Entwicklung.

fisipjm 10. Okt 2024 11:11

AW: Memo verhindert scrollen wenn auf VerticalScrollbox
 
Falls es jemand interessiert.
https://embt.atlassian.net/servicede...tal/1/RSS-2086
https://embt.atlassian.net/servicede...tal/1/RSS-2087


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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