![]() |
Meinungen zu Textcursor und Formatierungen in eigenen Controls
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich arbeite an eigenen Controls und habe einige Fragen, welche Lösung bezüglich des Textcursors am sinnvollsten wäre… Vielleicht hat jemand Zeit und Lust, sich das mal anzuschauen: ![]() Meine generellen Fragen: 1) Wie soll ich das Scrollen im Text organisieren. Rechts habe ich einen Scrollabstand zum rechten Rand eingerichtet. Soll ich dies auch links tun oder wie bisher immer so viel linksseitigen Text darstellen wie möglich? 2) Wie soll ich die Textcursorposition bei einem Zellenwechsel organisieren? Soll der Textcursor z.B. immer am Textende stehen oder soll ich den gesamten Text selektieren? 3) Wie soll ich Cursor links/rechts/hoch/runter bei Controls im Formular oder alternativ z.B. in Panels behandeln. Soll ein Control dadurch verlassen und ein anderes fokussiert werden - und welches? Zusätzlich wüsste ich gern, ob jemand 4) Erfahrungen mit dem Aufbau von RichEdits und RichMemos hat und 5) ob meine Überlegung sinnvoll ist, die Daten für ein RichMemo in einer Objektlist vorzuhalten (z.B. TNewFont(aFont), TWord("André", X,Y,Width,Height), TSpace(1, X,Y,Width,Height), TNewFont(aOtherFont), TWord("Stahl", X,Y,Width,Height), TCR ) und dass das Memo dann dynamisch diesen „Textobjekten“ ihre aktuellen Positionsdaten zuweist, so dass man dann immer nachvollziehen kann, wo sich welches Textobjekt befindet… Da ich die GUI von Null an aufbaue kann ich das letztlich so regeln, wie das am Sinnvollsten erscheint. Eine gewisse Nähe zu RTF- oder PDF-Formatierungen wäre auf jeden Fall wohl zweckmäßig. Hat jemand Erfahrungen, Vorschläge, Tutorials? |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Zu den generellen Fragen:
zu 1. und 2. Wenn ich ein Control selbst erweitere oder erstelle, dann mach ich es immer so, dass ich dem Benutzer des Controls nachher immer so viele Wahlmöglichkeiten (Properties) gebe, wie irgendwie möglich. Also würde ich hier eine Property "AutoSelect" einführen, die bei True dafür sorgt, dass der gesmate Text selektiert wird. Eine Propertie TextScrollOffsetType welche festlegt, ob "links", "rechts", "links und rechts" oder "none" mit einem bestimmten Zeichenabstand gescrollt wird. Zusätzich noch eine Property TextScrollOffset, in der man die Anzahl der Zeichen einstellen kann. Gleiches gilt für das vertikale Scrollen von Zelle zu Zelle. Der Programmierer kann in den Propertys den gewünschten Effekt einstellen, je nach dem wo er will, dass der Cursor stehen soll. Also Werte wie "Start", "End" und "LastPos". Es ist natürlich aufwändiger dies alles zu implementieren, aber damit gibst Du dem Programmierer alle Möglichkeiten, welche Du auch erdacht hast und dieser kann aber selbst entscheiden, was er für sinnvoll hält. So brauchst Du nicht zu überlegen, was "das Beste" ist, sondern kannst die "Verantwortung" für das Verhalten Deiner Komponente auf den Programmierer der Endanwendung übertragen. |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Natürlich soll es Eigenschaften geben, die gewählt werden können und die das Verhalten beeinflussen, aber diese sollen überschaubar bleiben.
Aber selbst wenn es Einflussmöglichkeiten gibt (in welcher Form auch immer) stellt sich die Frage, was das Standardverhalten sein soll. Also würde ich die Fragestellung mal dahingehend präzisieren... :-) |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Als erstes würde ich fragen, beziehen sich die Fragen auf das LookAnFeel aus Usersicht, oder willst du Controls veröffentlichen, dann also auch aus Entwicklersicht?
Also zum scrollen: ich würde es am besten empfinden, denn der Cursor zur Controlmitte geht, und erste dann das scollen beginnt. So habe ich den größt möglichen Überblick über den Text im Control. Und das Auge verbleigt ggf. länger auf eine Punkt. Mit dem Scrollen in der Tabelle verhält sich das für meine Begriffe genauso. Weil es für mich auch angenehmer ist, wenn sie das Scrollverhalten innerhalb der Anwendung immer gleich verhält. Aus Entwicklersicht würde ich mir dann natürlich Properties wünschen, wie z.b. ScrollOrientation=(soLeft, soMiddle, soRight) und SrollMargin = 5 für den Abstand bei soLeft oder soRight. Beim Zellwechsel in vertikaler Richtung: Aus Usersicht, würde ich es am angenehmsten empfingen, wenn der Cursor horizontal nahe zu an der gleichen Stelle bleiben würde. Als wenn der Text in der alten Zelle 5 Zeichen lang ist, und der Cursor hinter dem 4. Zeichen steht, dann sollte er in der neuen Zelle auch hinter dem 4. Zeichen stehen, egal wie lang der Text in dieser Zelle auch ist (außer erst ist kürzer ;) ) Beim Edit würde ich an der standardmäßigen Funktionalität nichts ändern. Außer vielleicht per Enter das nächste Control auswählen. Auch erst mal nur innerhalb des Parents, und erst dann weiter zum Parent. Letztlich hängt diese aber auch von der Informationsverteilung auf der Form ab, d.h. wie sie sich dem User gegenüber darstellt. |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Zitat:
Ist sie komplett neu geschrieben, also von TControl, TWinControl oder noch tiefer abgeleitet, dann schau ich mir das Grundverhalten eines vergleichbaren Controls an und nehme dieses als Standardverhalten. Hierbei gilt für mich immer die Devise: Standardverhalten = Verhalten, so wie es in jeder anderen Anwendung ohne "spezielle" Controls üblich und zu erwarten ist. Sei es nun von Windows oder Delphi vorgegeben. |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
@Captnemo
Die Fragen beziehen sich auf die Nutzersicht. Deine Anmerkungen sind sehr nachvollziehbar. Ich habe derzeit für das Grid 1/5 der Gridhöhe als Scrollabstand definiert und im Edit 1/10 der Editbreite. Der Programmierer soll eigentlich nicht jedes Control individuell einstellen müssen/dürfen. Aber ich kann natürlich globale Optionen anbieten, so dass der Programmierer grundsätzliche Funktionalitäten (z.B. Scrollabstände oder Control-Wechsel über Cursor) vorgeben kann. Man kann dann natürlich auch noch dem User ermöglichen, diese Einstellungen nachträglich wieder zu überschreiben und in der Registry abzulegen). Zitat:
@BadenPower Ich habe nur eine Zeichenfläche, auf der ich selbst alles regle. Ich leite von keinem Control ab. An die gewohnten Funktionalitäten will ich mich schon halten, aber ich bin nicht gezwungen dazu. Wichtiger ist mir, dass alles gut zusammenspielt und dazu muss nicht alles identisch zu Windows laufen. Zu welchem Windows eigentlich? VCL, WinForms, Browser, WPF? Es gibt ohnehin verschiedene Ansätze und Standards. Wichtig ist mir lediglich, dass die GUI in sich schlüssig und sehr komfortabel ist (für den User und auch für den Programmierer). |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Zitat:
Zitat:
Zitat:
Zu den anderen Fragen kann ich nichts beitragen. MfG Dalai |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Interessant, welche Wünsche/Denkansätze es zu solch simplen Fragen gibt. Beim Lesen ist mir aufgefallen, daß ich für meine Zwecke mal den (Text)Cursor an Textanfang und mal am Textende bevorzuge. Ebenso ist das Scrollen sehr von der jeweiligen Anwendung abhängig. HexAnzeige z.B. einzeilig vertikal und 3 Stellig horizontal. Bei großen Textmengen bevorzuge ich das "AbsatzScrolling". Langer Rede kurzer Sinn Abstract, kann ich zu Deinem Problem wenig beitragen, da es meiner Meinung nach auch sehr auf die dargestellten Daten und die Arbeitsweise hiermit ankommt.
Gruß K-H |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Zitat:
Zitat:
Dafür gibt es doch schon die Taborder. Oder habe ich nicht verstanden, worauf du hinaus willst? Zitat:
|
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Zitat:
|
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Danke für Eure Beiträge. Das ist wirklich interessant.
Ich werde (später) so eine Art TBehavior erstellen, die bestimmte Verhaltensregeln kapselt. Dann kann der Programmierer eine solche dem Projekt zuweisen oder auch individuell unterschiedliche einzelnen Formularen oder z.B. Groupboxen. So kann man ohne Programmierung (Quelltext) Einfluss auch auf einzelne GUI-Bereiche nehmen. Zusätzlich kann der Enduser optional die Möglichkeit erhalten, diese Vorgaben wieder Projektbezogen oder Systemweit zu überstimmen. |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Hier mal meine Erweiterungen vom Wochenende:
![]() Es fehlen noch die Selektion von Text und ein paar andere kleinere Dinge, aber als grundsätzliches Standardverhalten passt das m.E. so schon ganz gut. Optional müsste das Verhalten dann später noch beeinflusst werden können - aber nicht durch Programmierung in Ereignishandlern sondern durch Einstellung von Eigenschaften. Noch nicht ganz klar ist mir, wie ich mit dem Cursorwechsel von einem Control in ein anderes umgehen soll, wenn diese in verschiedenen Parents liegen... |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Bei einem Wechsel von z.B. untereinander liegenden Edit's, finde ich es ruhiger, wenn der Text sich nicht im Control beim Einsprung verändert (z.B. wenn der Text im Control länger ist, als das Control selbst).
Auch hier hängt es irgendwie wieder in bisschen von den Daten ab, und welches Vorgehen abhängig vom Dateninhalt sinnvoll wäre. Wenn es sich z.B. Adressdaten handelt, wäre es sicherlich sinnvoll, bei einem Controlwechsel den Cursor vor das erste Zeichen zu setzen. Hat man aber ein Eingabemaske vor sich, in der in Editcontrols Zahlen erfasst werden sollen, so könnte ich mir eine vollständige Selektion der Zeichen als äußerst sinnvoll vorstellen. Auch die Textausrichtung kann dabei eine Rolle spielen. Wenn ich z.B. Fließkommazahlen eingeben will, kann eine Cursorposition vor dem Komma oder aber auch sine Selektion der Vorkommazahlen sehr effektiv sein. Du siehst, auch hier wäre es sehr pragmatisch, auch dieses Verhalten über die Eigenschaften einstellbar zu machen. Ggf. kannst du dafür ja auch templates für einen einstellbaren Datentyp realisieren. Trotzdem sollte der Designer in der Lage sein, dieses Verhalten zu beeinflussen. |
AW: Meinungen zu Textcursor und Formatierungen in eigenen Controls
Ja, nachvollziehbar.
Wie schon angedacht, könnte man Verhaltensregel-Objekte erstellen, die jeweils einem Grid, einen Header, einem Panel oder Formular zugewiesen werden können. Zur Laufzeit würde dann jeweils das spezifischste benutzt werden. So könnte man leicht einstellen, wie sich ein Grid oder ggf. auch einzelne Zellen (Spalten) verhalten sollen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 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