Hi,
das Beispiel sollte nur ein Denkanstoß sein. Ich war verblüfft, mit welch minimalem Aufwand so was hinzukriegen ist.
ich fasse mal zusammen, was an "unserem" LabeledRealEdit gut ist:
1. Label und Edit bilden eine Einheit, was alleine schon deshalb ein Vorteil ist, da man einen aussagekräftigen Namen nicht extra noch dem label zuweisen muß.
2. Bei visuellen Operationen (verschieben, löschen usw.) braucht man das nur einmal zu machen.
3. Die Labelposition und Abstand zum Edit kann eingestellt werden
4. Für Zahleneingaben gibt es eine Taschenrechner (rechtsbündige) Eingabe
5. Bei Zahlen kann nur ein Decimalseperator eingegeben werden, was Eingaben wie 1,,43,,4,4,44 verhindert
6. maximale Anzahl an Nachkommastellen wird berücksichtigt
7. das ganze geht auch mit
DB-Komponenten, dazu muß nur die neue Klasse statt von TEdit von TDBEdit abgeleitet werden
usw.
Was mir nicht gefällt:
Die Größe des Edit-Eingabefeldes kann in der
IDE geändert werden, die des Labels aber nicht. Da ist es etwas mühsam mit Labelspacing oder Änderung der Caption (blanks anhängen) dieses anzupassen. Ich kann jetzt nur von mir berichten, da ich nicht weiß, was ihr programmiert. Ich habe ein paar Eingabemasken (bis zu 4 TabSheets), da sieht es ziemlich wüst aus, wenn nicht mal die Labels und Edits untereinander stehen.
Das verstehe ich nicht:
Zitat von
oki:
...Ich klare hier nicht mit um rauszukriegen...
was willst Du uns hier sagen
Zitat von
oki:
Wir sollten uns hier lieber zu dem Beispiel die Frage stellen was besser ist.
Label an Edit ankleben?
oder:
Edit an Label ankleben?
Das Edit ist wichtiger, als das Label, deshalb ist das ja von TEdit abgeleitet. Was ist jetzt noch zu tun? Das was ich oben geschrieben habe und eine Aufteilung der Komponente mit geringfügig anderen Eigenschaften:
ich bin dabei es so zu machen (das
DB kann man sich ja wegdenken):
- TDBLabeledEdit: Standard linksbündige Eingabe, alle Zeichen sind möglich, kein Maxkomma oder OnlyReals (das fällt eh weg)
- TDBLabeledIntEdit: rechtsbündige Eingabe, nur Zahlen, kein Komma
- TDBLabeledRealEdit : wie TDBLabeledIntEdit, EIN Komma wird zugelassen, MaxNachkomma kommt hinzu
so, das wärs vorerst.