Delphi-PRAXiS
Seite 3 von 3     123   

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)

oki 24. Apr 2003 11:02

Hi Motzi,

du sprichst mir aus dem Herzen und nun bin ich auch richtig gespannt.

Gruß oki

Hansa 24. Apr 2003 11:15

ich muß diese Aussage hier mal zitieren:

Zitat:

...das Deine Vorgehensweise falschherum ist...entwickelst Du von TLabel abgeleitet ein TLinkedLabel das mit einem TWinControl verlinkt wird. In dem Moment wo dies zur Designzeit geschehen ist, wird es nach dem verlinkten Control ausgerichtet. Nun hast du eine universelleres Label, das mit allen TWinControl zusammenarbeiten kann.
Ich glaube, daß ist ungefähr das, was Motzi vor hat. Nur, wie das gemeint ist schnall ich noch nicht so ganz. Amscheinend geht es um ein Label, das überall "drangeklemmt" werden kann, nicht nur an ein TEdit.

Motzi 24. Apr 2003 11:26

Zitat:

Zitat von Hansa
ich muß diese Aussage hier mal zitieren:

Zitat:

...das Deine Vorgehensweise falschherum ist...entwickelst Du von TLabel abgeleitet ein TLinkedLabel das mit einem TWinControl verlinkt wird. In dem Moment wo dies zur Designzeit geschehen ist, wird es nach dem verlinkten Control ausgerichtet. Nun hast du eine universelleres Label, das mit allen TWinControl zusammenarbeiten kann.
Ich glaube, daß ist ungefähr das, was Motzi vor hat. Nur, wie das gemeint ist schnall ich noch nicht so ganz. Amscheinend geht es um ein Label, das überall "drangeklemmt" werden kann, nicht nur an ein TEdit.

Ich schnall momentan auch nix! :mrgreen: Darf man fragen woher das Zitat stammt? Aus dem kurzen Ausschnitt werd ich nicht ganz schlau...

BTW: hab vor kurzem eine kleine Seite gebastelt wo man sich ein paar meiner "Schöpfungen" ;) downloaden kann. Unter anderem auch meine OOP-Ausarbeitung. Just in case falls es jemanden interessiert... :roll: www.x-spy.net/personal

Motzi 24. Apr 2003 18:43

Liste der Anhänge anzeigen (Anzahl: 1)
So, wie versprochen mein Code... das einzige was ich noch nicht eingebaut/übernommen hab war die MaxNachkomma-Eigenschaft, aber das könnt ihr ja nachholen (allerdings würd ich mir nen andren Namen überlegen ;) ).

Hansa 24. Apr 2003 20:10

Hi Motzi,

"Monster-Thread" geht anscheinend noch weiter. Demnächst sind wohl 1000 Zugriffe zu verzeichnen. Dein Code geht, bis auf einen Schönheitsfehler: Das label ist nicht zentriert, dafür gehen die datensensitiven Felder aber. Drucke mir das ganze mal aus. Als Anlage ist hier noch ein Icon? dabei für die Objektablage (DBlabeledEdit). Viel Spaß beim installieren. Typ DCR (=Delphi compiled Ressource). Das ist, um ein eigenese Symbol zu haben und nicht das des Vorfahr-Objektes.

Code:
{$R lbledit.dcr}

procedure Register;
So muß das ganze ungefähr in eine neue Komponente.

/Edit: wo war die Datei auf einmal?

Hansa 24. Apr 2003 20:22

Liste der Anhänge anzeigen (Anzahl: 1)
DCR ist verboten! Datei muß deshalb wie beschrieben umbenannt werden. So ein Unfug aber auch. 8) :mrgreen:

@Gerome: Nach Vorschau ist der Anhang nicht mehr angehängt

oki 25. Apr 2003 07:36

Hi Motzi.

Hast du Zeit die ich nicht hab, oder diktierst du deinen Code in den Rechner?

Für so'n kleines Projekt nebenbei hast du erst mal meine Hochachtung für die Arbeit.

Ich hab mich sehr gefreut, dass du auch so'n bischen was von mir übernommen hast. Scheint also doch etwas zu taugen wenn ich was schreibe.

Übrigens: Hansas Zitat ist nicht dumm, aber wo er das her hat hab ich auch nicht geschnallt.


Es macht den Eindruck, als ob wir hier doch was umfangreicheres programmieren könnten. Jedenfalls sieht es so aus, als ob uns drei das hier interessiert. Wir sollten mal notieren was wir noch so alles in unserem neuen Edit haben wollen, und uns die Arbeit daran teilen. So das jeder mindestens eine eigenständige Aufgabe hat. Die Hilfe untereinander wenn einer nicht weiter kommt ergibt sich automatisch. Veröffentlichen wir den Code immer zwischendurch, do kann jeder auch unabhängig Tipps für Verbesserungen geben. Also, an solchen Kleinigkeiten wie Nachkommastellen kann ja einer eigenständig berbeiten. Da müssen bestimmt nicht drei ran. Mit so einer Teilung könnte auch ich Sachen zu Ende bringen wenn weniger Zeit zur Verfügung steht ohne immer gefrustet zu sein, weil jemand anders schneller ist.

So, das war wieder ein Beitrag von mir zum Monster-Thread

Gru oki

oki 25. Apr 2003 07:45

Hi Motzi,

irgentwo hab ich hier ein Problem. Ich kann die Komponente nicht installieren.

Selbst mit Hinzufügen bekomme ich die pas nicht in die Rubrik "Contains" im Package-Compiler-Faenster. Was ist das?


Gruß oki

Hansa 25. Apr 2003 08:28

Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe folgendes verändert :

1. abgeleitet wird von TEdit und nicht von TDBEdit (wegen Pers.-Besitzer)
2. MaxNachKomma ist wieder eingebaut (@Motzi: wie soll man das sonst nennen?)
3. das Label ist standardmäßig links

Letzteres habe ich gemacht, weil das 80% der Fälle ausmacht und, damit man sieht, daß die Ausrichtung noch nicht stimmt.

Hansa 25. Apr 2003 08:53

So ist das Label auch rechts und links in der Höhe zentriert zum Edit ausgerichtet (das dient dazu, den Höhenunterschied zwischen Edit und label auszugleichen / anzupassen):

Code:
procedure TLabeledRealEdit.SetLabelPos;
begin
  if not Assigned(FLabel) then
    Exit;

  case FLabelAlignment of
    lpAbove :
      begin
        FLabel.Top := Top - FLabel.Height - FLabelDistance;
        FLabel.Left := Left;
        if FLabelOptions.AutoEditSize then
          FLabel.Width := Width;
      end;

    lpLeft :
      begin
        FLabel.Top := Top + ((Height - FLabel.Height) div 2);
        FLabel.Left := Left - Flabel.Width - FLabelDistance;
        if FLabelOptions.AutoEditSize then
          FLabel.Height := Height;
      end;

    lpRight :
      begin
        FLabel.Top := Top + ((Height - FLabel.Height) div 2);
        FLabel.Left := Left + Width + FLabelDistance;
        if FLabelOptions.AutoEditSize then
          FLabel.Height := Height;
      end;

    lpBelow :
      begin
        FLabel.Top := Top + Height + FLabelDistance;
        FLabel.Left := Left;
        if FLabelOptions.AutoEditSize then
          FLabel.Width := Width;
      end;
  end;
end;
Was mir aber an dem Ding noch nicht gefällt, ist die Tatsache, daß bei mehreren dieser Komponenten, die untereinander stehen, der linke Rand zerfranst. Besser wäre es, man hätte die Option, z.B. MaxLabelLänge und würde die entsprechenden Label rechts mit blanks auffüllen, so daß das ganze bündig wird. Leider kann ich jetzt nicht mehr am Thema bleiben.

Motzi 25. Apr 2003 09:44

Zitat:

Zitat von oki
Hast du Zeit die ich nicht hab, oder diktierst du deinen Code in den Rechner?

Zeit hab ich auch nicht unbedingt im Übermaß, aber mit ein bisschen Routine und der IDE-Funktion "Complete class at cursor" geht das relativ flott! ;)

Zitat:

Für so'n kleines Projekt nebenbei hast du erst mal meine Hochachtung für die Arbeit.

Ich hab mich sehr gefreut, dass du auch so'n bischen was von mir übernommen hast. Scheint also doch etwas zu taugen wenn ich was schreibe.
Dankeschön! :) Natürlich hab ich was von dir übernommen und wieso sollte es nicht taugen?

Zitat:

Es macht den Eindruck, als ob wir hier doch was umfangreicheres programmieren könnten. Jedenfalls sieht es so aus, als ob uns drei das hier interessiert. Wir sollten mal notieren was wir noch so alles in unserem neuen Edit haben wollen, und uns die Arbeit daran teilen. So das jeder mindestens eine eigenständige Aufgabe hat. Die Hilfe untereinander wenn einer nicht weiter kommt ergibt sich automatisch. Veröffentlichen wir den Code immer zwischendurch, do kann jeder auch unabhängig Tipps für Verbesserungen geben. Also, an solchen Kleinigkeiten wie Nachkommastellen kann ja einer eigenständig berbeiten. Da müssen bestimmt nicht drei ran. Mit so einer Teilung könnte auch ich Sachen zu Ende bringen wenn weniger Zeit zur Verfügung steht ohne immer gefrustet zu sein, weil jemand anders schneller ist.
Genau so hab ich mir das auch vorgestellt..! ;)

Zitat:

irgentwo hab ich hier ein Problem. Ich kann die Komponente nicht installieren.

Selbst mit Hinzufügen bekomme ich die pas nicht in die Rubrik "Contains" im Package-Compiler-Faenster. Was ist das?
Hm.. keine Ahnung.. ich hab mir fürs Testen ein eigenes Package erstellt, werds mal anhängen wenn ich wieder zu Hause bin.

Zitat:

Ich habe folgendes verändert :

1. abgeleitet wird von TEdit und nicht von TDBEdit (wegen Pers.-Besitzer)
2. MaxNachKomma ist wieder eingebaut (@Motzi: wie soll man das sonst nennen?)
3. das Label ist standardmäßig links

Letzteres habe ich gemacht, weil das 80% der Fälle ausmacht und, damit man sieht, daß die Ausrichtung noch nicht stimmt.
Zu 1.: wieso? ich dachte du willst DB-Eigenschaften, deswegen hab ichs extra von TDBEdit abgeleitet... was meinst du mit Pers.-Besitzer?

Zu 2.: keine Ahnung :) aber es ist üblich Englische Namen zu vergeben und so ein "Pseudo-Deutscher" Name klingt nicht nur besch**** sondern wenn die Kompo veröffentlicht wird wird jemand der der deutschen Sprache nicht mächtig ist ;) mit einer Eigenschaft namens "MaxNachkomma" nicht viel anfangen können ;) Einfach mal nachschaun was "Nachkommastelle" auf englisch heißt...

Zu 3.: wie meinst du standardmäßig links? den letzten Satz check ich übrigens auch nicht ganz.. ;)

Zitat:

Was mir aber an dem Ding noch nicht gefällt, ist die Tatsache, daß bei mehreren dieser Komponenten, die untereinander stehen, der linke Rand zerfranst. Besser wäre es, man hätte die Option, z.B. MaxLabelLänge und würde die entsprechenden Label rechts mit blanks auffüllen, so daß das ganze bündig wird.
Wie meinen? :?

Hansa 25. Apr 2003 10:08

Delphi Personal Edition hat keinerlei Datenbank-Funktionen. Der letzte Satz ist bereits überholt, siehe mein letztes Posting. Das mit den zerfransten Labels kommt übrigens nicht durch die falsche Ausrichtung, sondern dadurch, daß die Width des Labels auf die Länge der Caption eingestellt ist.

Motzi 25. Apr 2003 11:11

Zitat:

Zitat von Hansa
Delphi Personal Edition hat keinerlei Datenbank-Funktionen.

Aja, alles klar..! Hab ich nicht bedacht.
Zitat:

Der letzte Satz ist bereits überholt, siehe mein letztes Posting. Das mit den zerfransten Labels kommt übrigens nicht durch die falsche Ausrichtung, sondern dadurch, daß die Width des Labels auf die Länge der Caption eingestellt ist.
Deswegen hab ich die Eigenschaft AutoEditSize eingeführt. Damit wird die Höhe bzw Breite des Labels (je nachdem welche Position das Label hat) automatisch auf die Höhe bzw Breite des Edits eingestellt.

Hansa 27. Apr 2003 16:37

hab mir das Teil jetzt mal wieder genauer angesehen. Da sind noch ein paar Fragen/Fehler aufgetaucht. Folgendes ist schlecht:

1. Wird die Caption des Labels geändert, überschreibt irgendwas die Width dieses Labels. Das nimmt dann nur die Länge ein, wie lang der Caption-String halt ist.

2. Word-Wrap geht auch nicht. Hängt wahrscheinlich mit 1. zusammen.

jetzt noch ein paar Fragen (@Motzi):

1. warum verwendest Du bei den Set... Prozeduren const-Parameter?
2. SetLabelPos wird sehr oft aufgerufen, warum?
und last but not least: muß das forward deklariert werden?

Motzi 27. Apr 2003 18:09

Zitat:

Zitat von Hansa
hab mir das Teil jetzt mal wieder genauer angesehen. Da sind noch ein paar Fragen/Fehler aufgetaucht. Folgendes ist schlecht:

1. Wird die Caption des Labels geändert, überschreibt irgendwas die Width dieses Labels. Das nimmt dann nur die Länge ein, wie lang der Caption-String halt ist.

2. Word-Wrap geht auch nicht. Hängt wahrscheinlich mit 1. zusammen.

Mal schaun...

Zitat:

jetzt noch ein paar Fragen (@Motzi):

1. warum verwendest Du bei den Set... Prozeduren const-Parameter?
2. SetLabelPos wird sehr oft aufgerufen, warum?
und last but not least: muß das forward deklariert werden?
Zu 1.: Die Set-Methoden hab ich über die "Complete class at cursor" Funktion erstellt, wurden also von Delphi selbst so erstellt. Soweit ich sind const-Parameter schneller, da das intern irgendwie mit Pointern geregelt wird.

Zu 2.: SetLabelPos wird immer dann aufgerufen wenn die Möglichkeit besteht, dass die Labelposition/größe geändert wurde. Wenn zb AutoSize auf True ist und die Schriftart verändert wird, dann wird die Größe des Labels an die neue Schrift angepasst. Daher wird beim setzen der Font im Nachhinein auch SetLabelPos aufgerufen, damit auf eine eventuelle Positions-/Größenänderung reagiert wird.

oki 28. Apr 2003 09:14

Hi Motzi,

erstaunlicherweise läßt sich die Komponente heute ohne jegliches zutun meinerseitz problemlos installieren. Egal was es war, hauptsache es funzt.

Das mit der Labelgröße nach Caption-Änderung ist doch ganz klar auf die Eigenschaft AutoSize des Labels zurückzuführen. Jetzt muß nur noch eingearbeitet werden, dass bei Setzen der Eigenschaft auf False die Größenzuordnung des Edit übernommen wird.

Gruß oki

oki 28. Apr 2003 09:24

Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,

ich hab das mal schnell geändert mit der Größe des Labels in Bezug auf die Eigenschaft AutoSize.

Hier währe die Frage ob die Größenänderung des Weite des Labels bei rechts- und linksbündiger Ausrichtung gewünscht ist. Gleiche Frage kann man für die Höhe bei Ausrichtung lpTop und lpBottom stellen. Macht mal einen Vorschlag und ich würde das gerne einarbeiten.

Gruß oki

Motzi 28. Apr 2003 09:43

Zitat:

Zitat von oki
Das mit der Labelgröße nach Caption-Änderung ist doch ganz klar auf die Eigenschaft AutoSize des Labels zurückzuführen. Jetzt muß nur noch eingearbeitet werden, dass bei Setzen der Eigenschaft auf False die Größenzuordnung des Edit übernommen wird.

Naja.. ich hab mir gedacht der User kann selbst die Größe des Labels bestimmen und AutoSize auf False setzen, damit das Label diese Größe behält. Für den Fall, dass er will dass das Label immer genauso groß ist wie das Edit hab ich die Eigenschaft AutoEditSize eingeführt. Damit wird die Größe des Labels immer auf die Größe des Edits angepasst.

oki 28. Apr 2003 11:51

Liste der Anhänge anzeigen (Anzahl: 1)
Hi Motzi,

das mit AutoEditSize hab ich auf die Schnelle übersehen.Ich hab den Behandlungscode dorthin verschoben.

Die Frage währe jetzt ob wir noch mal explizit auf Labelhöhe und -Breite in Bezug auf Labelposition reagieren.

Gruß oki

Hansa 29. Apr 2003 20:50

Hi,

das Thema geht noch weiter, auch wenn es nur wenige interessiert. Ich habe hier einen Code, den ich aus weltweiten Bestandteilen zusammengestückelt habe. Ich finde, der Code ist sehr einfach, aber effizient.

Dabei geht es allerdings um eine ListBox mit Label:

Delphi-Quellcode:
unit labeledlistbox;

interface

uses Controls, stdctrls, ExtCtrls, Classes;

procedure Register;

implementation

type

  TMyListBox = Class( TCustomPanel )
  private
    FLabel: TLabel;
    FListBox: TListBox;
    procedure SetLabelCaption(const Value: String);
    function GetLabelCaption: String;
    function GetListBoxItems: TStrings;
    function GetListBoxItemIndex: Integer;
    function GetListBoxOnClick: TNotifyEvent;
    procedure SetListBoxItemIndex(const Value: Integer);
    procedure SetListBoxOnCLick(const Value: TNotifyEvent);
  public
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
  published
    property Font;
    property LabelCaption: String read GetLabelCaption write SetLabelCaption;
    property ListBoxItems: TStrings read GetListBoxItems;
    property ListBoxItemIndex: Integer read GetListBoxItemIndex write SetListBoxItemIndex;
    property ListBoxOnClick: TNotifyEvent read GetListBoxOnClick write SetListBoxOnCLick;
  end;

  constructor TMyListBox.Create(AOwner: TComponent);
  begin
    inherited Create( AOwner );

    FLabel := TLabel.Create( Self );
    FLabel.Parent := Self;
    FLabel.Align := alTop;
    FLabel.Caption := 'LABEL_CAPTION';

    FListBox := TListBox.Create( Self );
    FListBox.PArent := Self;
    FListBox.Align := alClient;
  end;

  destructor TMyListBox.Destroy;
  begin
    FLabel.Free;
    FListBox.Free;

    inherited Destroy;
  end;

  function TMyListBox.GetLabelCaption: String;
  begin
    Result := FLabel.Caption;
  end;

  function TMyListBox.GetListBoxItemIndex: Integer;
  begin
    Result := FListBox.ItemIndex;
  end;

  function TMyListBox.GetListBoxItems: TStrings;
  begin
    Result := FListBox.Items;
  end;

  function TMyListBox.GetListBoxOnClick: TNotifyEvent;
  begin
    Result := FListBox.OnClick;
  end;

  procedure TMyListBox.SetLabelCaption(const Value: String);
  begin
    if FLabel.Caption <> Value then
    begin
      FLabel.Caption := Value;
      Invalidate;
    end;
  end;

  procedure TMyListBox.SetListBoxItemIndex(const Value: Integer);
  begin
    if FListBox.ItemIndex <> Value then
    begin
      FListBox.ItemIndex := Value;
      Invalidate;
    end;
  end;

  procedure TMyListBox.SetListBoxOnCLick(const Value: TNotifyEvent);
  begin
    FListBox.OnClick := Value;
  end;

procedure Register;
begin
  RegisterComponents('Additional', [TMyListBox]);
end;

end.
[edit=Daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]

Motzi 29. Apr 2003 20:59

Das ist natürlich auch eine Möglichkeit... dann hat man halt das Panel drunter (falls es wenn stört)... eine Möglichkeit wäre dann noch eventuell über eine Eigenschaft die Klasse des 2ten Objekts (in dem Fall die Listbox) festlegen zu können.. dann wäre es sehr flexibel (auch wenn mir die Version ohne Panel lieber ist)!

Hansa 29. Apr 2003 21:09

hast Du es ausprobiert ? Bei mir ist vom Panel nichts zu bemerken. Muß den Quelltext noch durchlesen. Bei so einem kurzen Quelltext war ich aber doch etwas verblüfft. Großteil kommt von Borland selber. Die wissen natürlich am besten wie so was geht. 8)

[EDIT] ich suche mal die Beschreibung bzw. den Kommentar dazu von Borland

Motzi 30. Apr 2003 06:39

Zitat:

Zitat von Hansa
hast Du es ausprobiert ? Bei mir ist vom Panel nichts zu bemerken. Muß den Quelltext noch durchlesen. Bei so einem kurzen Quelltext war ich aber doch etwas verblüfft. Großteil kommt von Borland selber. Die wissen natürlich am besten wie so was geht. 8)

[EDIT] ich suche mal die Beschreibung bzw. den Kommentar dazu von Borland

Nein, ich habs nicht ausprobiert. Es kann schon sein, dass man zumindest so kein Panel sieht, aber spätestens wenn man es sich mit einem Prog wie zB meinem X-Spy anschaut taucht es auf! ;)

Die Methode ist auf jeden Fall einfacher, aber sie hat auch nachteile.. so kann man zb nicht den Abstand des Labels zur Listbox einstellen...

oki 30. Apr 2003 11:12

Hi Leute.

Das ein Panel idealer für die Lösung sein kann hab ich schon vorher vermutet. Na und!!!

Ich klare hier nicht mit um rauszukriegen wie man das Thema mit drei Zeilen hinbekommt indem man fertige Sachen von Borland sucht, sondern sehe hier die Changs Verfahrensweisen zu erarbeiten die mir helfen schnell eigene Kompos für meine Projekte zu schreiben wenn keine einfachen Lösungen zu finden sind.

Und ich muß sagen, wenn ich nur an Motzis Wrapper-Thema denke stelle ich fest, dass das eigentlich ganz easy ist, mann muß es nur mal gesehen haben und wissen.

Eigentlich brauche ich momentan auch kein LabeledEdit.

Man lernt was und es macht Spaß. Deshalb mach ich hier mit.

Also wenn ihr einverstanden seid, dann würde ich an unserem Edit weiterarbeiten.

Wir sollten uns hier lieber zu dem Beispiel die Frage stellen was besser ist.

Label an Edit ankleben?

oder:

Edit an Label ankleben?


Gruß oki

Hansa 30. Apr 2003 12:17

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:

Zitat von oki
...Ich klare hier nicht mit um rauszukriegen...

was willst Du uns hier sagen :?:

Zitat:

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.

Hansa 1. Mai 2003 11:25

Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

das Label "klebt" mir noch zu fest am Edit. Da fällt mir nichts zu ein. Aber ich habe das ganze mal aufgeteilt und etwas aufgeräumt. Da sich außer oki und Motzi keiner beteiligt, habe ich das übrigens jetzt wirklich nur DB-spezifisch gemacht. Jetzt gibt es 3 Typen: TDBLabeledEdit, TDBLabeledIntEdit, TDBLabeledRealEdit

Ersteres schnappt alles, das zweite nur ganze Zahlen, das dritte auch EINEN DecimalSeparator. Die letzten beiden sind standardmäßig rechtsbündig, das erste linksbündig. Was für mich noch offen ist: Muß noch ein destructor zusätzlich da irgendwo rein?

Hat einer nur Delphi-Pers. muß das DB in den Deklarationen eben weg.

Hansa 12. Mai 2003 19:25

Hi,

muß den "Monster-Thread" etwas wiederbeleben. Also das Delphi 6 LabeledEdit ist jetzt schon ganz gut zusammengebastelt (bzw. nachgebaut), aber was noch fehlt: das Label selber. Das ist ja jetzt alles im OI drin, aber es wäre besser man könnte zur Entwurfszeit das Label ziehen, also größer machen. Mit LabelSpacing geht das zwar, ist aber recht mühsam, bei vielen Labels.

Man müßte es ungefähr so behandeln wie das Edit. Also die Größe verändern und die Ausrichtung festlegen. Und dazu fällt mir nichts ein.

EDIT: bis jetzt sind 1250 Zugriffe zu verzeichnen, auch kommt es mir so vor, daß einige sich über das Thema an sich Gedanken machen. Im Zusammenhang kommen einige Fragen. Vor dem Thread hab ich kaum was gesehen, nur: wo kriege ich eine Komponente her, die mir ein X fürn U macht, egal wie die das macht. :mrgreen:

Motzi 13. Mai 2003 08:24

Zitat:

Zitat von Hansa
Also das Delphi 6 LabeledEdit ist jetzt schon ganz gut zusammengebastelt (bzw. nachgebaut), aber was noch fehlt: das Label selber. Das ist ja jetzt alles im OI drin, aber es wäre besser man könnte zur Entwurfszeit das Label ziehen, also größer machen. Mit LabelSpacing geht das zwar, ist aber recht mühsam, bei vielen Labels.

Man müßte es ungefähr so behandeln wie das Edit. Also die Größe verändern und die Ausrichtung festlegen. Und dazu fällt mir nichts ein.

Das kann man beim Delphi6 LabeledEdit aber auch nicht... aber mal schaun was sich machen lässt.

Zitat:

nur: wo kriege ich eine Komponente her, die mir ein X fürn U macht, egal wie die das macht. :mrgreen:
Wie meinen?!? :freak:

Hansa 13. Mai 2003 10:27

Zitat:

Zitat von Motzi
...Das kann man beim Delphi6 LabeledEdit aber auch nicht...

Eben! Nur weiß ich nicht, wo man da anfangen könnte.

Zitat:

Wie meinen?!? :freak:
So wie ichs geschrieben habe. Die meisten suchen nach Komponenten, die irgendwas machen, z.B. 13-eckiger Button. 8) Und das am besten alles von alleine. Ohne sich die Mühe zu machen, es zu verstehen. Komplexere Komponenten kann man sich ja auch kaufen, aber selbst die kann man erweitern :!: Aber nur, wenn man das Prinzip verstanden hat.

Motzi 13. Mai 2003 10:57

Zitat:

Zitat von Hansa
Zitat:

Wie meinen?!? :freak:
So wie ichs geschrieben habe. Die meisten suchen nach Komponenten, die irgendwas machen, z.B. 13-eckiger Button. 8) Und das am besten alles von alleine. Ohne sich die Mühe zu machen, es zu verstehen. Komplexere Komponenten kann man sich ja auch kaufen, aber selbst die kann man erweitern :!: Aber nur, wenn man das Prinzip verstanden hat.

Aos.. alles klar! ;)

Zitat:

Zitat:

Zitat von Motzi
...Das kann man beim Delphi6 LabeledEdit aber auch nicht...

Eben! Nur weiß ich nicht, wo man da anfangen könnte.
Mal schaun.. ich hab schon eine Idee, weiß aber nicht ob das so funktioniert...

Hansa 14. Aug 2003 18:18

Re: OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erwei
 
Hi,

das Thema ist noch offen. Und zwar geht es darum, das Label im OI visuell zu verschieben, also die Größe zu verändern. Wie macht man das am besten ? Bzw. wie überhaupt ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz