Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Scrollbox ohne Scrollbars scrollen ?
arcardia - Mo 18.08.03 17:36
Titel: Scrollbox ohne Scrollbars scrollen ?
Hi
Ich habe in einer Scrollbox ein TImage mit dem Bild einer Weltkarte gepackt (das Bild selbst ist grösser als die Scrollbox - Align:=alClient)
Da ich aber nicht ständig mit den Scrollbars schieben will hab ich mir folgende Routine gebastelt die das ganze immer schön anhand der Mausposition hinschiebt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TMainForm.ScrollBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var FactorX,FactorY: Integer; Bildw,BildH: Integer; DiffH,DiffV: Integer; begin
FactorX := (x*100) div ScrollBox.width; FactorY := (Y*100) div ScrollBox.Height; BildW := ImageWeltkarte.Width; BildH := ImageWeltkarte.Height; DiffH := BildW-ScrollBox.Width; DiffV := BildH-ScrollBox.height;
ScrollBox.HorzScrollBar.Position := (DiffH*FactorX) div 100; ScrollBox.VertScrollBar.Position := (DiffV*FactorY) div 100; end; |
das ganze funzte auch wunderbar - also die Horizontale und Vertikale Trackbar auf Visible:=False (weil sie jetzt ja überflüssig sind) und siehe da ...nix geht mehr ?
Das setzen der ...Position:=[Int] hat keine Wirkung mehr. Kann ich die Positionen der ScrollBox auch anders Pixelgenau setzen ???
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Keldorn - Di 19.08.03 20:51
Hallo
ich habe mir deinen Code nicht genau angeschaut (verwende bitte delphi-tags, erhöht die lesbarkeit) aber ich denke du du hast einen denkfehler drin: wenn du ein image in eine Scrollbox setzt, bekommst nur das image die Mousemove-ereignisse. Bei der Scrollbox werden nur mousemove-ereignisse ausgelöst, wo sich keine Komponente befindet. d. h. wenn du das image auf alclient gesetzt hast, wird dein scrollboxmousemove nie erreicht (setz mal nen breakpoint rein)
Mfg Frank
arcardia - Mi 20.08.03 19:05
Das Image steht auf Enabled:=False deswegen reagiert auch das ScrollBox MouseMove und nicht das Image :wink:
Hab die Scrollbox jetzt gekickt und durch nen einfaches Panel
ersetzt , statt Position=xyz setz ich jetzt Top + Left des Bildes.
Kommt das gleiche bei rum
Allerdings flimmert das Panel durch das Bild hindurch beim verschieben.
Mit DoubleBuffer isses zwar weg , aber dafür ruckelt das ganze enorm
deswegen wär es mit ner ScrollBox doch irgendwie schöner... :(
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!