Hallo,
Nachdem es mich immer wieder genervt hat, bei kleinen Änderungen im Formularlayout alle Labels wieder schön auszurichten, habe ich von TEdit eine Komponente abgeleitet, die das selbstständig macht.
DIe Verwendung ist denkbar einfach: Es gibt eine zusätzliche Eigenschaft: HookLabel, die im Objektinspektor angezeigt wird. Dort gibt man den Namen des Labels (sowie optional zusätzliche Formatierungsinformation) an. Der Label wandert dann automatisch mit dem Editfeld mit.
Die möglichen Formatierungsoptionen sind:
Format: "Labelname Mxxx"
M = L: Linksbündig, Label beginnt xxx Pixel links vom eingabefeld
M = X: Rechtsbündig, Label endet xxx Pixel links vom Eingabefeld
M = R: Label beginnt xxx Pixel rechts vom Eingabefeld
Default: X10, wenn nur der Name des Labels angegeben wird.
Der Code liesse sich natürlich für alle möglichen anderen Controls erweitern.
Derzeit gibt es noch zwei kleine Probleme:
Wenn das Editfeld sich nicht direkt am Formular, sondern in einem Panel befindet und ein ungültiger Labelname eingegeben wird, löst die Fehlermeldung, die das Programm bringt, eine
Exception aus, und die
IDE erlaubt der Maus nicht, das Panel zu verlssen, man muss die Fehlermeldung also mit der Tastatur quittieren.
Ich habe zum Nachführen des Labels noch keinen besseren Platz gefunden als TEdit.Update, wenn man das Editfeld irgendwohin versetzt hat, muss man es noch einmal anklicken, damit der Label im Formulardesigner gleich richtig angezeigt wird.