Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ScrollBox und Delphi XE (https://www.delphipraxis.net/156271-scrollbox-und-delphi-xe.html)

FrankJ28 25. Nov 2010 18:04

ScrollBox und Delphi XE
 
Hallo,
kann mir jemand sagen welches event ausgelöst wird, wenn eine ScrollBox gescrollt wird? Delphi2007 feuerte noch onCanResize, Delphi XE leider nicht mehr.

Danke
Frank

Insider2004 25. Nov 2010 18:35

AW: ScrollBox und Delphi XE
 
Resize hat nichts mit Scrollen zu tun. Soweit ich weiss hatte die TScrollbox noch nie Scroll-Events. Die musst Du selber abfragen.

himitsu 25. Nov 2010 18:42

AW: ScrollBox und Delphi XE
 
Notfalls könnte man OnRepaint nutzen.

wie schon gesagt:
Resize = Größenänderung und nicht Verschiebung

FrankJ28 25. Nov 2010 18:58

AW: ScrollBox und Delphi XE
 
Hallo,

Zitat:

Resize hat nichts mit Scrollen zu tun.
schon klar, aber dieses event (onCanResize) wurde mit D2007 noch gefeuert und von mir "leider" als onScroll mit benutzt.
onRepaint??? Ich kenne nur onPaint aus dem zugehörigen Formular (wird aber auch nicht gefeuert).
Ciao
Frank

mkinzler 25. Nov 2010 18:59

AW: ScrollBox und Delphi XE
 
Dann war halt das alte Verhalten falsch und jetzt stimmt es.

s.h.a.r.k 25. Nov 2010 19:07

AW: ScrollBox und Delphi XE
 
Muss hier aber auch sagen, dass dieses Event auch einfach fehlt. Wenn ich eine Komponente programmiere, dann überlege ich mir doch was für die Benutzung sinnvoll ist und sowas liegt doch fast auf der Hand.

FrankJ28 25. Nov 2010 19:33

AW: ScrollBox und Delphi XE
 
@Markus: Wenn ich mit so einer Bemerkung meinen Kunden gegenüber trete bekomme ich mit Recht einen Rüffel. Meine Frage zielt ja auch nicht auf fals/richtig, ich stelle lediglich fest, dass es vorher gefeurt wurde, und jetzt leider nicht meh und frage, ob jemand Abhilfe kennt.

@Armin: Hatte ich seinerzeit (um 2000) schon bei Borland nachgefragt. Antwort: gibt es nicht, Abhilfe über onCanResize. Ein korrektes (@Markus: hast ja Recht) event hätte ich auch gerne.

Nun stehe ich leider vor der Migration auf Delphi XE und werde mit den "Fehlerbeseitigungen" in Delphi konfrontiert. Vielleicht hat ja noch jemand eine zündene Idee, mein Post sollte ja keine Kritik sein, aber "Ist halt so" hilft nicht.

Ciao
Frank

Bummi 25. Nov 2010 19:52

AW: ScrollBox und Delphi XE
 
am sinnvollsten eine neue Komponente ableiten und in DFM's und pas per Search&Replace ersetzen
, Quick und dirty und für Testzwecke
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TScrollBox=Class(Forms.TScrollBox)
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  End;
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Panel1: TPanel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



{ TScrollBox }



{ TScrollBox }

procedure TScrollBox.WMHScroll(var Message: TWMHScroll);
begin
  Form1.Caption := 'HSCROLL';
  inherited;
end;

procedure TScrollBox.WMVScroll(var Message: TWMVScroll);
begin
  Form1.Caption := 'VSCROLL';
  inherited;
end;

end.

stahli 25. Nov 2010 19:56

AW: ScrollBox und Delphi XE
 
Frag doch mal bei Matthias Eissing an. Ich denke, er toleriert das.

s.h.a.r.k 25. Nov 2010 20:25

AW: ScrollBox und Delphi XE
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von stahli (Beitrag 1064120)
Frag doch mal bei Matthias Eissing an. Ich denke, er toleriert das.

Wer ist denn das? Sagt mir gar nichts -- wobei ich auch gestehen muss, dass ich keinen von Embarcadero kenne ;)

Hier das ganz mal als Komponente gepackt.

himitsu 25. Nov 2010 20:49

AW: ScrollBox und Delphi XE
 
Ich hätte erwartet, daß OnPaint auch beim Scrollen ausgelöst wird, da ja der Inhalt (teilweise) neu gezeichnet werden muß. :gruebel:

s.h.a.r.k 25. Nov 2010 20:55

AW: ScrollBox und Delphi XE
 
Ist das nicht der Fall? Imho müsste das schon auch aufgerufen werden, sonst würde das OnPaint-Ereignis wenig Sinn machen.

stahli 25. Nov 2010 20:55

AW: ScrollBox und Delphi XE
 
MEissing hat u.a. auch diese Webinars veranstaltet.
War ja nur so eine Idee, das mal (deutsch) als Problem mitzuteilen...

Insider2004 25. Nov 2010 23:29

AW: ScrollBox und Delphi XE
 
Die Dinger gibt es. Leider werden die nur intern verwendet und sind aussen nicht sichtbar.

Delphi-Quellcode:
procedure TScrollingWinControl.WMHScroll(var Message: TWMHScroll);
begin
  if (Message.ScrollBar = 0) and FHorzScrollBar.Visible then
    FHorzScrollBar.ScrollMessage(Message) else
    inherited;
end;
Leider muss man bei Emba mindestens 10 Jahre warten, damit mal ein User-wunsch erfüllt wird. Wenn sich also niemand oder zu wenig Leute beschweren, dann wird da nie was passieren.

s.h.a.r.k 25. Nov 2010 23:46

AW: ScrollBox und Delphi XE
 
Oder man nutzt eben die Komponente weiter oben ;) Dort werden eben die Messages abgefangen, Events getriggert und weiter geleitet.

FrankJ28 26. Nov 2010 08:52

AW: ScrollBox und Delphi XE
 
Meinen Dank an Armin, ich habe das inzwischen recht ähnlich gelöst (Deine Lösung ist aber eleganter:-D)
Ciao
Frank

Bummi 26. Nov 2010 09:43

AW: ScrollBox und Delphi XE
 
@FrankJ28
dann schmoll ich jetzt mal eine Runde :?

stahli 26. Nov 2010 09:47

AW: ScrollBox und Delphi XE
 
[OT-aber seelsorgerisch wichtig!]Bummi, dafür verwende ich Deine eingebetten Formulare! :thumb: [/OT-aber seelsorgerisch wichtig!]

FrankJ28 26. Nov 2010 10:26

AW: ScrollBox und Delphi XE
 
@Thomas: Asche auf mein Haupt, auch dein Code ist natürlich zielführend, natürlich auch mein Lob an dich.
Ciao
Frank

s.h.a.r.k 29. Nov 2010 18:59

AW: ScrollBox und Delphi XE
 
@Bummi: Wir hatten wohl gleichzeitig die selbe Idee, ich hab sie halt mal schnell in eine installierbare Komponente gegossen. Hab sowas lieber gekapselt, da es sich dann eben einfacher und wie "normale" VCL-Objekte verwenden lässt :)


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