Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi 1 Pixel breiter Splitter funktioniert nicht (https://www.delphipraxis.net/134355-1-pixel-breiter-splitter-funktioniert-nicht.html)

Ace 20. Mai 2009 15:19


1 Pixel breiter Splitter funktioniert nicht
 
Hallo,
ich würde gerne einen Splitter in meine Form einbauen der nur ein Pixel breit ist. Das komische ist dann dass er zuerst funktioniert und dann irgendwann nicht mehr. Ich habe die vermutung dass es daran liegt wo sich das Fenster befindet da die Maus anscheint so ungenau ist und immer minnimal 2 Pixel weiter springt. Wenn dann der Splitter gerade genau auf dem Pixel zwischen den beiden Punkten "Springpunkten" ist habe ich halt Pech gehabt.
Jemand eine Idee wie man das umgehen könnte?
Aber bitte jetzt keine Antworten wie "mach den Splitter breiter, damit kann eh keiner arbeiten" :)

Mithrandir 20. Mai 2009 15:24

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Mach den Splitter breiter, damit kann eh keiner arbeiten.








Mal ganz ehrlich, warum muss der unbedingt so dünn sein? Hat der Schlankheitswahn jetzt auch schon auf Computerprogramme übergegriffen? Ich könnte mir jedenfalls vorstellen, dass ein pixelgenaues treffen sehr, sehr schwer sein kann...

Bernhard Geyer 20. Mai 2009 15:27

Re: 1 Pixel breiter Splitter funktioniert nicht
 
ist der Splitter überhaupt noch an der korrekten Position oder evtl. aufgrund der dünnheit an die falsche Position geflogen?

taaktaak 20. Mai 2009 19:01

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Moin, Moin.
Abgesehen davon, dass ich einen 1 Pixel breiten Splitter auch für vermutlich nicht praktikabel halte: Du könntest im OnMouseDown() den Cursor exakt auf dem Splitter positionieren und danach mit ClipCursor() auf die Splitterfläche "kleben". Im MouseUp() wird das Ganze mit ClipCursor(nil) wieder aufgehoben. Das hat dann den Vorteil, dass der Cursor den Splitter nicht mehr "verlieren" kann.

Ace 21. Mai 2009 08:05

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Zitat:

Zitat von Daniel G
Mach den Splitter breiter, damit kann eh keiner arbeiten.

Was ja klar dass so ein Kommentar kommt. Obwohl ich extra noch was dazu geschrieben habe. Nennt mich Orakel von Delphi...
Das so etwas funktioniert beweist dieser Screenshot:

http://www.async.ece.utah.edu/iBioSi...ots/finder.png

Dort ist der Splitter 1 Pixel breit und es funktioniert wunderbar! Spreche da aus Selbsterfahrung. Falls jetzt jemand sagt "dann entwickel doch unter MacOS wenn das da so toll geht" dann plazt mir gleich was.
Ich wollte doch nur wissen ob jemand eine pfiffige Idee hat wie man sowas realisieren könnte. Aber Aussagen wie "Mach den Splitter breiter, damit kann eh keiner arbeiten." sind wirklich sowas von albern.


Zitat:

Zitat von Bernhard Geyer
ist der Splitter überhaupt noch an der korrekten Position oder evtl. aufgrund der dünnheit an die falsche Position geflogen?

Ja er ist noch an der richtigen Position. Ich konnte ihn ja auch schon mal benutzen.


Zitat:

Zitat von taaktaak
Moin, Moin.
Abgesehen davon, dass ich einen 1 Pixel breiten Splitter auch für vermutlich nicht praktikabel halte: Du könntest im OnMouseDown() den Cursor exakt auf dem Splitter positionieren und danach mit ClipCursor() auf die Splitterfläche "kleben". Im MouseUp() wird das Ganze mit ClipCursor(nil) wieder aufgehoben. Das hat dann den Vorteil, dass der Cursor den Splitter nicht mehr "verlieren" kann.

Hm, das werd ich mal ausprobieren. Keine schlechte Idee.


Inzwischen ist mir auch eine Idee gekommen: Ich mache einen 3 Pixelbreiten Splitter als Grafik. Das mittlere Pixel ist der Splitter, die Pixel rechts und links bekommen einfach die Farbe der Controls direkt neben dem Splitter. So hat man genug Fläche zum Greifen und es sieht aus als wär der Splitter 1 Pixel breit. Mal sehen wie man einen Splitter mit Grafik hinbekommt :)

Jakob Ullmann 21. Mai 2009 08:27

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Das soll funktionieren? :gruebel: Also rein vom Äußeren würde ich jedenfalls nie auf die Idee kommen, dass ich dort irgendwas verschieben kann.

//edit: Wenn ich an meinem eigenen Rechner arbeite, kann ich durchaus pixelgenau treffen. Aber sobald das irgendein anderer Rechner ist, geht das nicht mehr. Und ich glaube, dass dieses Problem recht weit verbreitet ist. :mrgreen:

jaenicke 21. Mai 2009 08:38

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also mit wirklich 1 Pixel Breite ist das schon schwer zu treffen. Hier habe ich den senkrechten Splitter z.B. 3 Pixel breit:
http://www.sj-berlin.de/service/dp/s...ingsDialog.png
Und da lässt sich gerade das gut treffen.

Aber auch mit 1 Pixel Breite funktioniert alles wunderbar bei mir, Demoprogramm im Anhang. :stupid:

Und wenn ich das so auf dem Mac genauer ausprobiere, dann glaube ich nicht, dass das wirklich nur ein Pixel ist. Die Optik ja, aber die hat ja mit der Breite des Splitters nichts zu tun.

Zitat:

Zitat von Jakob Ullmann
Das soll funktionieren? :gruebel: Also rein vom Äußeren würde ich jedenfalls nie auf die Idee kommen, dass ich dort irgendwas verschieben kann.

Das ist schon so. :mrgreen:

Ace 21. Mai 2009 09:21

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Zitat:

Zitat von jaenicke
Und wenn ich das so auf dem Mac genauer ausprobiere, dann glaube ich nicht, dass das wirklich nur ein Pixel ist. Die Optik ja, aber die hat ja mit der Breite des Splitters nichts zu tun.

Ja es stimmt. Es ist sozusagen eine Ooptische Täuschung :D Die Griff-Fläche ist 3-4 Pixel breit. Ich werde wirklich mal mit dem Grafik-Fake Trick versuchen.

jaenicke 21. Mai 2009 09:24

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Also bei mir im Screenshot habe ich nur die Ränder gesetzt, sonst gar nichts. Das sind die Standardkomponenten. Eigentlich reicht es doch Beveled auf False zu setzen, dann sieht man den Splitter selbst nicht und nur die Grafik der Ränder wie sie ansonsten da ist.

Ace 21. Mai 2009 09:37

Re: 1 Pixel breiter Splitter funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaenicke
Also bei mir im Screenshot habe ich nur die Ränder gesetzt, sonst gar nichts. Das sind die Standardkomponenten. Eigentlich reicht es doch Beveled auf False zu setzen, dann sieht man den Splitter selbst nicht und nur die Grafik der Ränder wie sie ansonsten da ist.

Ich habe mal dein Beispiel ausprobiert. Es ist aber irgendwie immer noch Fummelarbeit das Teil zu treffen. Habe jetzt mal meine Idee mit dem Bild umgesetzt. Funktioniert super. Beispiel hängt dran.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz