![]() |
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Habe den Oki-Code so geändert (basierend auf meinem zuletzt geposteten):
Code:
Da kommt das im Anhang raus. Würde das Caption jetzt noch vor dem Real Edit und nicht innerhalb stehen, wärs das wohl gewesen. Und dann noch das von Mirage.
constructor TRealEdit.Create(AOwner: TComponent);
begin inherited; FAlignment := taRightJustify; OnlyReals := true; FRealLabel := TLabel.Create(self); FRealLabel.Parent := TWincontrol(self{AOwner}); // ****************** FRealLabel.Name := 'RealLabel'; // FLabel.SetSubComponent(true); FRealLabel.Caption := 'CAPTION'; // Position des Lables setzen SetLabelPos; end; |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Hansa,
hier dein label! die Berechnung der Position für die Ausrichtung ist noch Pfusch, aber ich wollte schon mal schnell den Ansatz posten. Paß auf, ich hab die Unit nicht umbenannt und dein letztes Update noch nicht übernommen!!! :witch: Gruß oki |
Folgender Code hängt in keiner Weise mit irgendeinem bisher in diesem Thread geposteten Code zusammen sondern wurde gerade von mir erstellt (ich hab mich ein bisschen am "original" TLabeledEdit orientiert):
Delphi-Quellcode:
Ich hab die Kompo nicht ausführlich getestet, aber es funktioniert soweit alles. Das Label wird sowohl zur Design-Time als auch RunTime richtig angezeigt.
unit LabeledDBEdit;
interface uses DBCtrls, StdCtrls, Classes, Controls; type TLabeledDBEdit = class(TDBEdit) private FLabel: TLabel; protected procedure SetParent(Value: TWinControl); override; public procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; procedure Register; implementation procedure Register; begin RegisterComponents('Test', [TLabeledDBEdit]); end; constructor TLabeledDBEdit.Create(AOwner: TComponent); begin inherited; FLabel := TLabel.Create(Self); FLabel.Caption := 'LabelCaption'; end; destructor TLabeledDBEdit.Destroy; begin FLabel.Free; FLabel := nil; inherited; end; procedure TLabeledDBEdit.SetParent(Value: TWinControl); begin inherited; if Assigned(FLabel) then begin FLabel.Parent := Value; FLabel.Top := Top - FLabel.Height - 1; FLabel.Left := Left; FLabel.Visible := True; end; end; procedure TLabeledDBEdit.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); begin inherited; if Assigned(FLabel) then begin FLabel.Top := Top - FLabel.Height - 1; FLabel.Left := Left; end; end; end. Es sollte also kein Problem sein das TRealEdit so zu erweitern.. |
Also, mein letzter Beitrag für heute.
Das ist echt gemein von dir motzi. Ich hab kein D6 und kein TLabledEdit und quäl mir einen ab. Dann kommst du mit code der a: besser aussieht, b: kürzer ist und c: behauptest so lapidar das müßte so eben locker funzen. Wie steh ich jetzt da! Na gut. Da währe aber noch was. Es währe doch gut, wenn wir das Label in den OI mit seinen Eigenschaften bekommen. Warum auf alles verzichten? Gruß oki |
Habt ihr ein Glück, daß ich nicht anfange einmal richtig zu motzen.
![]() Oki hat es wirklich nicht leicht mit D5. Ein Konzept wie dieses wurde meines Wissens nach erst mit Delphi 6 eingeführt. Fertig ist die Komponente sowieso noch nicht. 1. Der von Mirage??? gepostete Fehler ist noch drin 2. Die LabelPosition ist nicht im OI enthalten. Eventuell poste ich zu später Stunde noch eine Zusammenfassung, damit nicht jeder diesen "Monsterthread" von Anfang an lesen muß. |
Liste der Anhänge anzeigen (Anzahl: 1)
So, hier ist jetzt die neueste Version. Ein Label ist vorhanden, die Labelposition kann eingestellt werden und für heute (gestern) wars das dann. Der Rest bleibt noch offen. Und das LabelSpacing (Abstand Label - Eingabefeld) fehlt noch. Desweiteren sind die Postionen des labels nur testweise fertig. Und dann halt noch der "Mirage"-Effekt. :mrgreen: Und was neu ist, ist nicht getestet!
|
Der Effekt wurde nach mir benannant :) ich fühle mich geehrt :mrgreen:
Leider funzt die neue Version net bei mir, hab nur Delphi 3 Professional und da gibts ja dieses neue Label nicht (gibts glaub ich erst ab D6) |
Hi Mirage, 8)
gut, der Thread ist schon lang, da will ich keinem zumuten das genau von Anfang an zu lesen. Dann muß ich Dich aufklären. :lol: Komponente TLabeledRealEdit ersetzt das TLabelEdit von Delphi 6 und bietet folgende erweiterte Möglichkeiten (alles im Objekt-Inspektor) : - Feld "OnlyReals" : Ist das auf true gesetzt werden nur Zahlen und ein DecimalSeparator akzeptiert. Es kann auch auf false stehen, dann wird alles akzeptiert - Feld "Alignment" : In das Editfeld kann links/rechtsbündig oder zentriert etwas eingegeben werden - Feld "MaxNachKomma" : die Anzahl der möglichen Nachkommastellen kann festgelegt werden - Feld "Labelpos" : die Position des Labels in Bezug auf das Eingabefeld. Mögliche Werte : lpAbove,lPRight,lpLeft,lpBelow Fehler / was noch fehlt: 1. Das Alignment wirkt sich zur Laufzeit nicht aus (immer rechtsbündig) 2. Ist OnlyReals true, kann durch die "Hintertür" Zwischenablage trotzdem ein nicht zulässiger Wert in das Feld gelangen 3. die Labelpositionen sind noch nicht fertig 4. das LabelSpacing (Abstand Label<->Edit) fehlt noch @Mirage: was soll das da heißen: Zitat:
|
Zitat:
Bei mir meinte der z.b. "Undefinierter Bezeichner: TLabelpos {oder was da auch stand}" Den Thread selbst hab ich so schnipselweise gelesen ;-) ganz unwissend bin ich also doch nicht :mrgreen: |
@Mirage : "Dein"-Effekt gibts nicht mehr. Pech gehabt. :mrgreen: Das lpAbove wurde vielleicht im Zusammenhang des TLabeledEdit eingeführt. Dann schreib Dir das doch selber :
TLabelPosition = (lpAbove,...); in der auskommentierten Zeile war das fAlignment einmak zu viel drin.
Code:
procedure TRealEdit.CreateParams(var Params: TCreateParams);
const Alignments: array[TAlignment] of byte=(ES_Left, ES_Right, ES_Center); begin inherited CreateParams(Params); Params.Style := Params.Style or Alignments[fAlignment]; // fAlignMent := taRightJustify; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz