Delphi-PRAXiS
Seite 7 von 12   « Erste     567 89     Letzte »    

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 OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert (https://www.delphipraxis.net/3975-oop-trealedit-von-tedit-abgeleitet-und-faehigkeiten-erweitert.html)

Hansa 17. Apr 2003 20:13

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mirage228
...aber im OI steht immer noch taRightAlignment!

Da hat er Recht ! Nur wieso ist das so ?

Habe den Oki-Code so geändert (basierend auf meinem zuletzt geposteten):

Code:
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;
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.

oki 17. Apr 2003 20:14

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

Motzi 17. Apr 2003 20:20

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:
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.
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.

Es sollte also kein Problem sein das TRealEdit so zu erweitern..

oki 17. Apr 2003 20:43

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

Hansa 17. Apr 2003 21:17

Habt ihr ein Glück, daß ich nicht anfange einmal richtig zu motzen.
http://www.lcschuhmann.de/hornet/meckersmilie.gif

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ß.

Hansa 18. Apr 2003 02:00

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!

mirage228 18. Apr 2003 09:04

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)

Hansa 18. Apr 2003 11:45

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:

...und da gibts ja dieses neue Label nicht (gibts glaub ich erst ab D6)
Du meinst das LabeledEdit :?: Das gibts erst ab D6, aber deshalb ist das hier ja gut. Was geht denn da nicht.

mirage228 18. Apr 2003 11:54

Zitat:

Zitat von Hansa
@Mirage: was soll das da heißen:

Zitat:

...und da gibts ja dieses neue Label nicht (gibts glaub ich erst ab D6)
Du meinst das LabeledEdit :?: Das gibts erst ab D6, aber deshalb ist das hier ja gut. Was geht denn da nicht.

Also bei meinem Delphi 3 gibts diese Komponente da nicht und dann findet der wohl irgendwelche vererbten Eigenschaften nicht denke ich.
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:

Hansa 18. Apr 2003 12:01

@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.
Seite 7 von 12   « Erste     567 89     Letzte »    

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