TIpHtmlPanel
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
TIpHtmlPanel
Hallo,
ich hoffe mir kann jemand helfen.
Ich möchte gerne bei dem IpHtmlPanel die Vertikale Scrollbar ABSCHALTEN, bzw ausblenden.
Ist Das möglich? Wenn ja Bitte wie.
Gruß
ich hoffe mir kann jemand helfen.
Ich möchte gerne bei dem IpHtmlPanel die Vertikale Scrollbar ABSCHALTEN, bzw ausblenden.
Ist Das möglich? Wenn ja Bitte wie.
Gruß
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: TIpHtmlPanel
Was erwartest du dann fürn verhalten vom Control?
Soll einfach alles was darüberhinaus geht abgeschnitten sein ?
Oder willst dus dann zur seite "gedrückt" haben ?
Soll einfach alles was darüberhinaus geht abgeschnitten sein ?
Oder willst dus dann zur seite "gedrückt" haben ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: TIpHtmlPanel
einfach nur die Darstellung im HTMLPANEL ohne Scrollbalken!Christian hat geschrieben:Was erwartest du dann fürn verhalten vom Control?
Soll einfach alles was darüberhinaus geht abgeschnitten sein ?
Oder willst dus dann zur seite "gedrückt" haben ?
Denn scrollen kann man ja mit
TIpScrollAction = (hsaHome, hsaEnd, hsaPgUp, hsaPgDn, hsaLeft, hsaRight, hsaUp, hsaDown)
Gruß
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TIpHtmlPanel
Ich bin mir nicht sicher, aber man könnte die Komponente leicht ein wenig anpassen.
Dürfte nicht weiter Problematisch sein.
Du musst einfach nur von der Klasse eine weitere Ableiten. Dann könnte man eine entsprechende Eigenschaft hinzufügen. Ein andere Weg wäre, die Komponente zu Kopieren, den Namen zu verändern und dann anzupassen.
Ich habe eben nach geschaut. Es dürfte sogar noch ein einfacheren Weg geben:
HScroll und VScroll sind von Typ TIpHtmlScrollBar und das hat eine Eigenschaft Visible.
Ich weiß jetzt nicht ob man die Manuell setzten kann. Aber ein versuch ist es wert. Sonst sind mir nur die ersten Beiden Aufwendigereren Wege bekannt.
Dürfte nicht weiter Problematisch sein.
Du musst einfach nur von der Klasse eine weitere Ableiten. Dann könnte man eine entsprechende Eigenschaft hinzufügen. Ein andere Weg wäre, die Komponente zu Kopieren, den Namen zu verändern und dann anzupassen.
Ich habe eben nach geschaut. Es dürfte sogar noch ein einfacheren Weg geben:
HScroll und VScroll sind von Typ TIpHtmlScrollBar und das hat eine Eigenschaft Visible.
Ich weiß jetzt nicht ob man die Manuell setzten kann. Aber ein versuch ist es wert. Sonst sind mir nur die ersten Beiden Aufwendigereren Wege bekannt.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: TIpHtmlPanel
Danke, hab ich versucht, doch mir ist das nicht gelungen, weil ich nicht genau weiß wie.pluto hat geschrieben:Du musst einfach nur von der Klasse eine weitere Ableiten.
Habe mir jetzt erst einmal geholfen, indem ich die Form so verkleinere, das der VScroll verdeckt wird.
Ist zwar nicht die Lösung, aber man sieht es nicht.
Gruß
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: TIpHtmlPanel
Die Scrollbars sind in einer InnerHTMLPanel Klasse an die man von aussen nicht herankommt (hab jedenfalls nichts gefunden gehabt).
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TIpHtmlPanel
Nun, ich meinte eigentlich direkt von TIpHTMLPanel ableiten.
Und was ist mit HScroll und VScroll? die sind von Typ TIpHtmlScrollBar. Die Eigenschaften sind in Public, z.b. Visible.
Ein Blick in den Code z.b. bei WMHScroll zeigt mir das diese Variablen HScroll hier auch genutzt werden.
WMHScroll und WMVScroll sind jedoch unter protected und die braucht man auch nicht von außen.
Und was ist mit HScroll und VScroll? die sind von Typ TIpHtmlScrollBar. Die Eigenschaften sind in Public, z.b. Visible.
Ein Blick in den Code z.b. bei WMHScroll zeigt mir das diese Variablen HScroll hier auch genutzt werden.
WMHScroll und WMVScroll sind jedoch unter protected und die braucht man auch nicht von außen.
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TIpHtmlPanel
Ich sehe gerade HScroll und VScroll kann man nicht ohne weiteres nutzen.
Weil TIpHtmlFrame nur einmal in TIpHtmlFrame verwendet wird und dort protected ist.
Edit1: Das ist zwar nicht gerade der einfachste Weg, aber du könntest versuchen eine neue CSS Eigenschaft hinzuzufügen. Über CSS lässt sich das Scrollverhalten einstellen. Ich habe mal einige CSS Eigenschaften hinzugefügt, aber keine die das Scrollen Beeinflusst.
Damit würdest du auch gleichzeitig das HTML Panel weiter Entwickeln.
Edit2: Die CSS Eigenschaft heißt
http://www.css4you.de/overflow.html
Hast du denn sowas gemeint? Ich schau mir gerade den Code vom HTML Panel an, kann aber nichts versprechen.
Edit3: Wenn du bereit bist eine bestimmte Methode ein wenig zu Ändern, müsste du am Ziel sein. Ich spreche von dieser Methode hier:
TIpHtmlScrollBar.Update
Dann würde ich dir aber raten, ein Fork von der Komponente zu erstellen. Die Änderung ist Minimal. Aber das verrate ich erst später.
Weil TIpHtmlFrame nur einmal in TIpHtmlFrame verwendet wird und dort protected ist.
Edit1: Das ist zwar nicht gerade der einfachste Weg, aber du könntest versuchen eine neue CSS Eigenschaft hinzuzufügen. Über CSS lässt sich das Scrollverhalten einstellen. Ich habe mal einige CSS Eigenschaften hinzugefügt, aber keine die das Scrollen Beeinflusst.
Damit würdest du auch gleichzeitig das HTML Panel weiter Entwickeln.
Edit2: Die CSS Eigenschaft heißt
http://www.css4you.de/overflow.html
Hast du denn sowas gemeint? Ich schau mir gerade den Code vom HTML Panel an, kann aber nichts versprechen.
Edit3: Wenn du bereit bist eine bestimmte Methode ein wenig zu Ändern, müsste du am Ziel sein. Ich spreche von dieser Methode hier:
TIpHtmlScrollBar.Update
Dann würde ich dir aber raten, ein Fork von der Komponente zu erstellen. Die Änderung ist Minimal. Aber das verrate ich erst später.
MFG
Michael Springwald
Michael Springwald
Re: TIpHtmlPanel
Wenn´s dir wirklich ganz ganz wichtig ist, die Scrollbars auszublenden, hat Pluto eigentlich recht und man braucht nur die VScroll- und HScroll.Visible auf False zu stellen. Bevor man die ganzen Klassen ableitet und mit den eigenen verknüpft, kannst du auch recht einfach die Sichtbarkeit in der Unit IpHtml ausstellen. Achtung, das gilt dann aber für alle Projekte, mit denen du auf diese Unit zugreifst!!! Hilfsweise könntest du eine eigene Unit "MyIpHtml" erstellen und dort diese Änderung machen.
Einfach mal in der Unit IpHtml (bzw. in MyIpHtml) nach { TIpHtmlInternalPanel } suchen und dort Visible auf False stellen:
Einfach mal in der Unit IpHtml (bzw. in MyIpHtml) nach { TIpHtmlInternalPanel } suchen und dort Visible auf False stellen:
Code: Alles auswählen
{ TIpHtmlInternalPanel }
constructor TIpHtmlInternalPanel.Create(AOwner: TComponent);
begin
inherited;
ControlStyle := ControlStyle + [csCaptureMouse];
DragMode := dmManual;
HScroll := TIpHtmlScrollBar.Create(Self, sbHorizontal);
HScroll.Tracking := True;
HScroll.Visible:=false; //hier
VScroll := TIpHtmlScrollBar.Create(Self, sbVertical);
VScroll.Tracking := True;
VScroll.Visible:=false; //und hier
HintWindow := THintWindow.Create(Self);
HintWindow.Color := Application.HintColor;
end;
Zuletzt geändert von Michl am So 15. Sep 2013, 14:46, insgesamt 1-mal geändert.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TIpHtmlPanel
Problem könnte sein Michl, dass Visible zwischen durch wieder auf True gesetzt wird und zwar Automatisch. D.H. man müsste verhindern, dass Visible verstellt werden kann. Aber ich such noch gerade die Passende Code-Zeile.
Edit1: Scheinbar wird ShowScrollBar innerhalb vom HTML Panel überhaupt nicht aufgerufen. ShowScrollBar ist eine API Funktion, mit der man Scrollbalken Sichtbar und Unsichtbar machen kann.
Edit1: Scheinbar wird ShowScrollBar innerhalb vom HTML Panel überhaupt nicht aufgerufen. ShowScrollBar ist eine API Funktion, mit der man Scrollbalken Sichtbar und Unsichtbar machen kann.
MFG
Michael Springwald
Michael Springwald
Re: TIpHtmlPanel
Ich habs mal ausprobiert, selbst wenn ich in den Bereich komme, wo sie angezeigt werden sollten (habe mal die Form entsprechend verkleinert und wieder vergrößert, Anchors gesetzt), die Scrollbars bleiben unsichtbar, sollte also gehen!pluto hat geschrieben:Problem könnte sein Michl, dass Visible zwischen durch wieder auf True gesetzt wird und zwar Automatisch.
Auch wenn ich mit SetHtml ein anderen Inhalt lade, die Scrollbars bleiben unsichtbar.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: TIpHtmlPanel
Danke für die rege Anteilnahme.Michl hat geschrieben:Ich habs mal ausprobiert, selbst wenn ich in den Bereich komme, wo sie angezeigt werden sollten (habe mal die Form entsprechend verkleinert und wieder vergrößert, Anchors gesetzt), die Scrollbars bleiben unsichtbar, sollte also gehen!pluto hat geschrieben:Problem könnte sein Michl, dass Visible zwischen durch wieder auf True gesetzt wird und zwar Automatisch.
Auch wenn ich mit SetHtml ein anderen Inhalt lade, die Scrollbars bleiben unsichtbar.
ich habe das schon an der Stelle ausprobiert und es Funktioniert nicht weil Irgendwo wieder True neu gesetzt wird.
Ich muss dabei sagen, dass ich die Procedure TIpHtmlFrame.Scroll(Action: TIpScrollAction);
erweitert habe für ein Automatisches nach unten scrollen.
Code: Alles auswählen
hsaAuto :
begin
OffsetRect(R, 0, 1);
if R.Bottom > FHtml.FPageRect.Bottom then begin
R.Bottom := FHtml.FPageRect.Bottom;
R.Top := R.Bottom - H;
end;
if R.Bottom = FHtml.FPageRect.Bottom Then
Begin
R.Top := 0;
R.Bottom := R.Top + H;
end;
end;
was auch einwandfrei funktioniert, jedoch wie beschrieben der Balken immer wieder neu gezeichnet wird.
Optimal wäre, wenn man von dieser Stelle aus Zugriff auf VScroll hätte.
Re: TIpHtmlPanel
Und bei welcher Gelegenheit? Ich kann anstellen, was ich will, bekomme die Scrollbars nicht wieder sichtbar...hbr hat geschrieben:ich habe das schon an der Stelle ausprobiert und es Funktioniert nicht weil Irgendwo wieder True neu gesetzt wird.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: TIpHtmlPanel
Sorry, VScroll.Visible:=false; Richtig!Michl hat geschrieben:Und bei welcher Gelegenheit? Ich kann anstellen, was ich will, bekomme die Scrollbars nicht wieder sichtbar...hbr hat geschrieben:
Nur damit setzt man auch alle diese ausser Funktion.
TIpScrollAction = (hsaHome, hsaEnd, hsaPgUp, hsaPgDn,
hsaLeft, hsaRight, hsaUp, hsaDown, hsaAuto);
Re: TIpHtmlPanel
Habe eben nochmal ein bischen damit gespielt. Mit
und funktionieren die TIpScrollAction bei mir, weiss aber nicht, ob das Auskommetieren der Bereichsprüfung ein guter Weg ist (kommt darauf an, wie gut Value zuvor berechnet wurde). Bei mir hatte ich erstmal keine Probleme.
Code: Alles auswählen
{ TIpHtmlInternalPanel }
constructor TIpHtmlInternalPanel.Create(AOwner: TComponent);
begin
inherited;
ControlStyle := ControlStyle + [csCaptureMouse];
DragMode := dmManual;
HScroll := TIpHtmlScrollBar.Create(Self, sbHorizontal);
HScroll.Tracking := True;
HScroll.Visible:=false; //hier
VScroll := TIpHtmlScrollBar.Create(Self, sbVertical);
VScroll.Tracking := True;
VScroll.Visible:=false; //und hier
HintWindow := THintWindow.Create(Self);
HintWindow.Color := Application.HintColor;
end;
Code: Alles auswählen
procedure TIpHtmlScrollBar.SetPosition(Value: Integer);
var
Code: Word;
begin
if csReading in FControl.ComponentState then
FPosition := Value
else begin
// if Value > FCalcRange then Value := FCalcRange //hier
// else
if Value < 0 then Value := 0;
...
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;